.[ ČeskéHry.cz ].
Architektura herní smyčky v tahových hrách

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Houp



Založen: 28. 07. 2007
Příspěvky: 672

PříspěvekZaslal: 12. červen 2014, 19:34:07    Předmět: Architektura herní smyčky v tahových hrách Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
if.then



Založen: 13. 04. 2008
Příspěvky: 579

PříspěvekZaslal: 12. červen 2014, 21:36:59    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Ladis



Založen: 18. 09. 2007
Příspěvky: 1533
Bydliště: u Prahy

PříspěvekZaslal: 12. červen 2014, 21:40:26    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna