Diskuze: XNA - Implementace GameComponents do architektonického návrhu, aneb vícenásobná dědičnost

C# .NET .NET (C# a Visual Basic) XNA - Implementace GameComponents do architektonického návrhu, aneb vícenásobná dědičnost American English version English version

Avatar
user
Redaktor
Avatar
user:

Ahoj,
snažím se implementovat GameComponents do architektonického návrhu hry tak, aby herní komponenta co nejvíce "zapadla do hry" a jejích závislostí vůči ostatním objektům hry.

Pokusil jsem se udělal názorný způsob možného řešení ve formě vývojového diagramu (viz obrázek). (Budu rád za každé nové nápady, nebo vylepšení řešení implementace herních komponent).

Teď ale k mému aktuálnímu problému, který se týká spíše teoretické části programování v c#:

- Herní komponenta "sama od sebe" dědí od třídy GameComponents, která je součástí frameworku XNA. Potřebuji aby herní komponenta dědila ještě od jiných tříd (viz vývojový diagram) tzn.: vícenásobná dědičnost, kterou c# nepodporuje, určitě se to ale dá nějakým způsobem obejít. Moje otázka zní jak? :)

Editováno 25.9.2012 15:26
 
Odpovědět 25.9.2012 15:21
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na user
David Čápka:

Ten obrázek se asi špatně nahrál, možná máme blbě udělanou průhlednost, můžeš to sem ještě prosím hodit neprůhledné?

Vícenásobná dědičnost se řeší přes interface, těch si tam můžeš dát kolik chceš. Případně můžeš podědit vícekrát.

Komponentě dávám závislosti normálně v konstruktoru, buď přes ten objekt game nebo si tam normálně přidám parametry, když chci, aby to bylo znovupoužitelné.

Píši ty tutoriály na Robotris, zatím ho nechci zveřejňovat, ale jestli chceš, hodím ti link do PMka, abys viděl, jak to řeším já. Ale nic ukázkového to také není. Navrhnout znovupoužitelnou komponentu do hry je dost těžké, ty komponenty jsou hodně specifiké pro určitou hru. IMHO moc nevadí, když budou na té hře závislé. Snažil jsem se udělat třeba nezávislé menu, to jsem rozdělil do 2 komponent.

Nahoru Odpovědět 25.9.2012 15:34
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na user
David Čápka:

Jo už to vidím :) No já nemám GameScreen abstraktní, mám ji konkrétní a je to jen kontejner pro komponenty. Potom si vytvořím instance pro menu, kredity, levely...

Nahoru Odpovědět 25.9.2012 15:35
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
user
Redaktor
Avatar
Odpovídá na David Čápka
user:

Jo za tvou ukázku bych byl vděčný :) .Když už to dělám, tak to chci udělat pořádně, abych to mohl používat třeba i pro jiný projekt, něco nového se u toho naučím a nebude to patlanina. Snažím se spíše udělat znovupoužitelné rozhraní pro správu obrazovek a komponent. Jak jsem začal převádět herní prvky na ty komponenty, dost jsem se do toho zamotal, přišlo mi, že si v tom spíše dělám bordel. Myslím ale, že pokud se mi podaří udělat něco pro jejich správu, byli by mi určitě přínosem...

ps: ještě bych asi přidal možnost upravit obrázek v příspěvku... Zkusil jsem místo png nahrát jpg s bílým pozadím, obrázek se nezměnil...

Editováno 25.9.2012 16:14
 
Nahoru Odpovědět 25.9.2012 16:13
Avatar
David Čápka
Tým ITnetwork
Avatar
Nahoru Odpovědět 26.9.2012 21:03
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
user
Redaktor
Avatar
Odpovídá na David Čápka
user:

vždy mi to píše "Webová stránka nenalezena" :( , mohl by si mi to poslat na mail?

 
Nahoru Odpovědět 26.9.2012 22:07
Avatar
user
Redaktor
Avatar
Odpovídá na David Čápka
user:

už to mám, chyba byla na mojí straně... děkuji ti

 
Nahoru Odpovědět 27.9.2012 11:26
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na user
David Čápka:

Možná se to ještě uploadovalo nebo jsi špatně okopíroval URL, ty PM jsou v alfa verzi, není tam formátování textu :)

Pak napiš, co si o otm myslíš a jak se ti to líbí, jsem zvědavý.

Nahoru Odpovědět 27.9.2012 12:28
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
user
Redaktor
Avatar
Odpovídá na David Čápka
user:

Celkově mě Robotris příjemně překvapil. Grafika pěkná, krásně ladí s hudbou. Mlha v pozadí hře dodává na živosti. Jedna věc co bych zlepšil je, velká viditelnost odrazů kostek, přidal bych jim větší průhlednost, "časem" mě ve hře odrazy trochu mátly, taky bych asi zrychlil titulky v sekci autoři, aby si je někdo přečetl, ale to je taková malá drobnost :) . Kód nemá asi smysl abych komentoval :) Řešení, které jsem hledal, v něm ale není, je to tím, že se snažím udělat "už připravené" rozhraní pro tvorbu her, což jak si říkal není jednoduché, proto asi "mojí" hru dodělám s obyčejnými objekty a mím problémem se budu zabývat až poté.
Myslím, že Robotris bude vynikající ukázkou pro začátečníky v XNA. ;)

Editováno 27.9.2012 17:11
 
Nahoru Odpovědět 27.9.2012 17:10
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na user
David Čápka:

Díky :) Much tam je více, třeba rotace kostek není dokonalá, ale už jsem nad tím strávil asi 4x více času, než jsem plánoval. U těch her je IMHO s univerzálností obecně problém, když uděláš např. nějaké řešení pro menu, někdo ho bude chtít mít ingame a podobně. Je tam hodně způsobů jak něco řešit. Ale neříkám, že to nejde, XNA je stále poměrně nízké, i když je nad DirectX a určitě by se na tom dalo něco postavit, budu držet palce a těšit se na tvou hru :)

Nahoru Odpovědět 27.9.2012 17:17
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.