Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Houp
Založen: 28. 07. 2007 Příspěvky: 672
|
Zaslal: 12. červen 2014, 19:34:07 Předmět: Architektura herní smyčky v tahových hrách |
|
|
Herní smyčka v realtime hrách je zřejmá:
kód: |
dokud (neni konec hry)
{
zpracujVstup();
herniLogika(casOdMinulehoFramu);
vykresliVse();
}
|
Domnívám se, že pro tahové strategie se tento přístup nehodí, a proto se ptám:
Jak správně navrhnout základní architekturu herní smyčky pro tahovou hru, kde se každý tah skládá z několika odlišných fází.
Příkladem může být:
1. Objevení nového nepřítele
2. Aktivace schopností nepřátel na herním plánu
3. Pohyb aktivního hráče.
4. Rozhodnutí zaútočit/využít schopnosti daného místa.
5. V případě útoku volba nepřítele, kam se útočí
6. V případě využití schopnosti také nějaká volba
7. Možnost využít speciální schopnosti hráče (ne nutnost)
1. A znovu.
Během jednotlivými fázemi hráč často musí volit, co udělá.
Google na dotaz "implementation game loop in turn base strategy games" něco vyhodí, ale zajímal by mě názor místních. Jakým způsobem byste navrhli interakci mezi herní smyčkou a uživatelem? Jaké návrhové vzory byste použily? _________________
|
|
Návrat nahoru |
|
|
if.then
Založen: 13. 04. 2008 Příspěvky: 579
|
Zaslal: 12. červen 2014, 21:36:59 Předmět: |
|
|
No tak tuhle smyčku tam mít snad musíš, ne? V tahových hrách budeš mít několik systémů logiky:
- frame ("herní") smyčka, která bude zobrazovat jednotky a GUI a updatovat jejich "projevy" (animace, particles...) (dále jen "frame systém");
- event-driven "GUI vstup" (detekce kliknutí myší) poskytující callbacky;
- "GUI modifikátor" (zobrazit menu, skrýt menu, přidat položku do menu...) /GUI zobrazení, update, vstup a modifikátor jsou 4 součásti "GUI systému"/;
- herní logika zpracování vstupu hráče (dále "systém herního vstupu"), která vezme informace z GUI vstupu, modifikuje GUI (zobrazení informací o jednotce a možných akcí po jejím vybrání) a "projevy" jednotky (např. změna barvy po vybrání) a v případě navolení akce ji ukládá do seznamu akcí (dále "seznam herních akcí")
- atomická herní logika zpracování kola hry nebo jeho části, kdy se akce transformují do změn jednotek (dále "systém herního kola"). Máš GUI tlačítko "zpracovat kolo", klikneš a tah se provede.
Herní logiku (myšleno v kontextu deskové hry) kóduješ v systému herního vstupu a systému herního kola. Ostatní (frame systém, GUI systém) je engine a nemá o herní logice ani potuchy.
Ad tvůj příklad tahu z několika fází: to je jednoduché, prostě máš enum, ve které fázi jsi; systém herního kola bude fungovat tak, že provede zpracování fáze a přejde na vyšší fázi, přičemž updatuje GUI apod. tak, abys mohl dělat jen to, co dělat smíš. Při poslední fázi kola přejde na první a zvýší čítač kola. (Systém herního vstupu se samozřejmě také může lišit podle fáze kola.)
(Omlouvám se, že to píšu jako pro blbce, ale chtěl bych, aby tomu aspoň trochu rozuměl každý, kdo si toto vlákno najde. Je smutnou pravdou, že to se mi nepovede, ale co se dá dělat.) _________________ For guns and glory, go to www.ceske-hry.cz.
For work and worry, execute VC++. |
|
Návrat nahoru |
|
|
Ladis
Založen: 18. 09. 2007 Příspěvky: 1536 Bydliště: u Prahy
|
Zaslal: 12. červen 2014, 21:40:26 Předmět: |
|
|
No tak předně se v tahových hrách děje něco už z principu jen v tazích, mezi nimi se neděje nic. Proto pokud během čekání na vstup uživatele nepotřebuješ nic animovat, tak žádnou smyčku mít nebudeš, jen reaguješ na události od hráče (pohyb myši na překřeslení zvýrazněné jednotky třeba, po kliknutí přesun jednotky a akce jako útok atd.). Pokud se má hra během čekání animovat, tak podle požadované plynulosti buď smyčka jako u realtime hry (když se jemně animuje voda, vítr čechrá keře a stromy, kouř, ...), nebo timer (když se scéna animuje např. jen po 200 ms). _________________ Award-winning game developer |
|
Návrat nahoru |
|
|
|