Diskuze: XNA tutoriály
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Vlastník
Zobrazeno 15 zpráv z 15.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
taky by ě docela zajímalo
Můžeš, jedná se o Tetris Říká se, že kdo naprogramuje Tetris, tak je programátor. Je tam dost logických úloh, mám i hezkou grafiku v robotickém stylu, podílel se na tom i David Jančík.
Jsem také asi v polovině O hru určitě máme zájem.
Opět jsem trochu pokročil s XNA hrou, seznamuji se s komponentovou architekturou a programuji manažer přepínání herních obrazovek. Hra bude mít opravdu vše, co se sluší a patří, včera jsem dokončil skrolující text v části Autoři, který využívá clipping a načítání ze souboru (samozřejmě ve formě komponenty). Jako obrázek přikládám malou ochutnávku z webové části pro výpis nahraného skóre hry, na této části momentálně dělám. Celá hra bude brzy vydána jako seriál několika tutoriálů pro XNA
Dnes jsem dokončil alfa verzi hry. Zítra začnu čistit zdrojové kódy, již bych neměl narazit na žádný zásadní problém, potom se objeví seriál
jo super, tesim se na nejaka tva reseni, ktere jsem jeste neresil , napr. online score. Jak jsi teda nakonec vyresil tu spravu komponent? Prisel jsi na nejaky lepsi zpusob? Ja ted vlastne taky prevadim vetsinu na komponenty, je to strasna otrava Hru ale nemam jeste celou hotovou.
Online skóre funguje na stahování XMLka, odeslání normálně GETem. XML naparsuji a nastránkuji v příslušné komponentě.
Správu komponent jsem vyřešil jak jsme říkali, herní obrazovka obsahuje list komponent, které využívá. Ostatní se potom disablují v tom listu Components hry (jsou tam tedy stále, jen nejsou vidět a nic nedělají). Jako hezký vedlejší efekt je, že si každá obrazovka udržuje stav, v jakém ji hráč opustil. Pokud ji chci pak resetnout, použiji událost OnEnabledChanged.
Také jsem hru převáděl do komponent a málem jsem u toho umřel, chvíli to vypadalo, že to vůbec nedodělám Soucítím s tebou. Nakonec využívám oba přístupy, ten komponentový i ten objektový. Komponenty používám ve chvíli, když je ta část co programuji samostatná a má co nejméně závislostí. Objekty používám tam, kde jsou součástí nějaké další logiky a byl by problém vše zadrátovat. Co jsem viděl nějaké ty XNA hry, tak mám architekturu docela hezkou a to si myslím, že není nic extra Komponentám předávám v konstruktoru instanci mé konkrétní hry, tedy jsem přepsal to Game na mou třídu s hrou. Mám potom přístup k public věcem jako obsluze klávesnice, sprite batchi, metodě ke změně obrazovky a podobně.
Mám tam ještě nějaký problém s vymazáním bufferu klávesnice při změně obrazovky, snad to nějak vyřeším
spravu komponent jsem si udelal stejne, jen mi ty komponenty nekdy prijdou takove moc samostatne vsechny vlastne bezi "zvlast" vedle hry, (coz je vlastne jejich ucel, ale bylo by dobre kdyby v pristi verzi XNA, komponenty byly trochu vic "zasazene" do hry, mohli by mit take vylepsenou komunikaci mezi sebou). Kdyz chci komunikovat mezi komponenty, musim prave pres instanci me hry... Precijenom to ale neni nic zasadniho a nejak resit se to da...
pzn: docela se divim, ze v XNA neni udelano vice vetsich projektu, zatim jsem jich videl par...
Jo, XNA je třeba brát opravdu jen jako framework, není to engine. Člověk si nad tím musí vybudovat vlastní architekturu. Komponenty jsou super na oddělené věci, třeba menu, credits, skóre a podobně. Ve hře je lepší dělat objekty kvůli těm závislostem. Teoreticky ti ale nic nebrání předávat něco v konstruktoru. Komponenta by mohla být třeba Nepřátelé, která by dále vykreslovala objekty Nepritel a zapouzdřovala by nějakou logiku kolem toho
BTW nestalo se ti někdy, že ti hra po ukončení spadla na něco jako "access to protected memory?" V trace je audio, občas mi to udělá, ale neměla by to být moje chyba, skoro to vypadá jako bug. Vygooglil jsem pár vláken s tím samým problémem, ale žádné řešení.
Ted mam takovy problem, kdyz prevedu "prvek" na komponentu, vykresluje se vzdy na vrchni vrstve i kdyz vrstvu zmenim... Nesetkal si se s tim?
Komponenty by si měly udržovat pořadí takové, v jakém byly přidány do Game.Components.
BTW fixnul jsem ty klávesy, jes! Mám to fakt hotový
Ještě jsem se chtěl s tebou poradit, cpeš logiku do těch komponent nebo do samostatných tříd? Mám teď v komponentě Skore kde se řeší různé errory a zobrazení výsledků i logiku toho stahování, asi to spíše oddělím. Řešil jsi tohle?
Jak kdy, ale vetsinou to cpu do tech komponent. Do novych trid to davam jen v pripade ze to souvisi s vice prvky hry napr. vypocet kolizi, vykresleni "geometrickeho" tvaru, nebo nejake efekty atp... V pripade toho stahovani bych to dal asi taky do nove tridy...
Zobrazeno 15 zpráv z 15.