IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
user
Tvůrce
Avatar
user:25.9.2012 15:21

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
user
Tvůrce
Avatar
 
Nahoru Odpovědět
25.9.2012 15:31
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na user
David Hartinger:25.9.2012 15:34

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
New kid back on the block with a R.I.P
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na user
David Hartinger:25.9.2012 15:35

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
New kid back on the block with a R.I.P
Avatar
user
Tvůrce
Avatar
Odpovídá na David Hartinger
user:25.9.2012 16:13

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 Hartinger
Vlastník
Avatar
Odpovídá na user
David Hartinger:26.9.2012 21:03

Máš to v PM 8-)

Nahoru Odpovědět
26.9.2012 21:03
New kid back on the block with a R.I.P
Avatar
user
Tvůrce
Avatar
Odpovídá na David Hartinger
user:26.9.2012 22:07

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
Tvůrce
Avatar
Odpovídá na David Hartinger
user:27.9.2012 11:26

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

 
Nahoru Odpovědět
27.9.2012 11:26
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na user
David Hartinger:27.9.2012 12:28

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
New kid back on the block with a R.I.P
Avatar
user
Tvůrce
Avatar
Odpovídá na David Hartinger
user:27.9.2012 17:10

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 Hartinger
Vlastník
Avatar
Odpovídá na user
David Hartinger:27.9.2012 17:17

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
New kid back on the block with a R.I.P
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.