.[ ČeskéHry.cz ].
Koncepce, součásti herního engine
Jdi na stránku 1, 2, 3  Další
 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Juraj



Založen: 06. 12. 2007
Příspěvky: 189

PříspěvekZaslal: 11. srpen 2008, 07:08:55    Předmět: Koncepce, součásti herního engine Odpovědět s citátem

Zdravím Vás,

myslím si že poměrně dost lidí zde pracuje/pracovalo na nějakém tom herním engine. Proto bych z Vás potřeboval vytáhnout nějaké ty informace Laughing Jak možná napovídá nadpis vlákna, jedná se mi o navrhnutí engine a to z toho pohledu, jaké by měl mít části, editory atd. Na internetu je toho možná spousty, ale nejsem si zcela jist zda vše co jsem o tomo našel plně pochopil.

Nejedná se mi o přesný popis funkčnosti celkového engine, ale spíše stručné rozdělení na jednotlivé funkční aplikace. Abych Vám trochu přiblížil co bych se chtěl dozvedět, uvedu příklad:

Egine obsahuje:
Level editor - návrh jednotlivých levelů, import + rozmístění modelů
Game editor - navrh menu, prolnuti jednotlivych levelu + trvorba animaci a videjí mezi lvl

Díky za každé užitečné info Wink
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Augi



Založen: 28. 07. 2007
Příspěvky: 782
Bydliště: Čerčany

PříspěvekZaslal: 11. srpen 2008, 07:39:41    Předmět: Odpovědět s citátem

No myslím, že především by to chtělo přesně specifikovat, co je Tvým cílem. Engine pro 2D hry, 3D simulátory, adventury, ... ?

Z obecného hlediska to vidím tak, že při vývoji hry de facto vznikají dvě aplikace: vlastní hra a editor. Obě tyto aplikace přitom sdílí hodně kódu, tedy především grafický engine (mmj. proto, aby v editoru vše vypadalo přesně tak, jak ve hře) a dále pak třeba přístup ke vstupům (myš, klávesnice), zvuky, fyziku, AI... Ale ten grafický engine vidím jako nejzásadnější...

Takže kdybych měl vývoj hry rozbít na základní komponenty, vypadalo by to nějak takto:

- grafický engine
- fyzikální engine
- AI
- input
- zvuky a hudba
- skriptování
- herní engine (postavený na všem výše popsaném)
- hra - de facto instance herního enginu, která má přesně specifikované vstupy (modely, skripty, ...)
- editor - postaven na herním enginu podobně jako hra, ale umožňuje měnit parametry

Také by se dalo říci, že hra je přehrávač vstupů herního enginu (modelů, zvuků, skriptů, ...), zatímco editor umožňuje tyto vstupy i měnit (definovat, kde se má co zobrazit, přehrát, psaní skriptů, ...).

IMHO by tedy měl být spíše jeden editor, který by umožňoval vše - rozbití na level a game editor mi přijde zbytečné...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Juraj



Založen: 06. 12. 2007
Příspěvky: 189

PříspěvekZaslal: 11. srpen 2008, 08:13:14    Předmět: Odpovědět s citátem

Trochu více specifikovat to mohu, měl bych představu vytvořit herní engine pro 3D hry strategického typu. Zatím si nejsem jist v jakém rozsahu by to mělo být, ale rozhodně nehodlám vyvíjet engine 4 roky a poté zjistit že technologie mě již předběhla:-) Z počátku bych se chtěl asi zaměřit na nějaký "menší" engine kde vyvinu i nějakou základní hru.

Takže, pokud to právně chápu:
1) Vývoje grafického engine, fyziky, AI, zvuky atd
2) Herní engine: zde bude probýhat tvorba levelů, menu, import modelů to vše uložíme do nějakého souboru
3) Hra: soubor z herního enginu načteme a spustíme, zde bude výsledná hra (tu kterou koncový uživatel bude spouštět)
4) Editor: soubor z herního enginu načteme a spustíme, bude moci určovat vlastníka jednotek, přidávání budov do mapy, startovní lokace..

Dále by mě zajímalo zda bude mít herní engine nějaké dva módy a to jakoby navrhovací a dále také herní, myslím tím zda se v něm budou pouštět animace modelů, pohyb s modely (nyní myslím chůze, útok atd). Nebo tyto funkce budou pouze ve hře.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Augi



Založen: 28. 07. 2007
Příspěvky: 782
Bydliště: Čerčany

PříspěvekZaslal: 11. srpen 2008, 08:37:25    Předmět: Odpovědět s citátem

Ano, chápeš to správně. Ale neříkám, že tohle je ideální a jediná možná cesta, jak se na tenhle problém dívat. Toto je pouze můj pohled...

Ohledně dvou módů...herní engine by se měl prakticky ovládat jen pomocí manipulací s nějakými jeho strukturami,inputy a voláním metod Update(čas) a Render([čas]). Hra (aka aplikace představující hru) pak bude jen volat tyto dvě metody a nějakým přepínačem mu povolí inputy. Editor bude dělat prakticky to samé, pouze bude navíc manipulovat se vstupy hry (což může i hra, ale mělo by se to dít jen pomocí skriptů) a může zakázat čtení inputu.
Pro účely editoru by pak herní engine měl umět asi takové věci jako vybrání zobrazovaného objektu podle bodu na obrazovce, zvýraznění vybraného objektu atd...
Já si to představuju tak, že editor je vlastně taková nadstavba hry - takže editor je složitější než hra Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Juraj



Založen: 06. 12. 2007
Příspěvky: 189

PříspěvekZaslal: 11. srpen 2008, 09:27:20    Předmět: Odpovědět s citátem

Budu zde chrlit další a další dotazy které mě napadnou a třeba i někomu pomohou..

Co se týká skriptování, vím že na to dají použít nějaké již hotové jazyky nebo vlastní. Poud budu uvažovat že bych použil vlastní, zajímá mě jak se to bude chovat zhlediska vykonání skripu.

1) Napíšu skript a uložém do souboru
2) herni engine si script načte, a na jedné řádce bude např. goto(id,x,y)
to si v kodu budu muset podmínkou otestovat o jakou funkci se jedná?
jako if script = "goto" then .....

nebo se to dá dělá nějak jinak?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Quiark



Založen: 29. 07. 2007
Příspěvky: 816
Bydliště: Chlívek 401

PříspěvekZaslal: 11. srpen 2008, 09:30:00    Předmět: Odpovědět s citátem

Já si pod pojmem 3D engine představuju něco, co umí načíst modely, textury, shadery a 3D terén ze souboru a podle informací o jejich umístění a umístění pozorovatele tyto věci efektivně renderovat. Dál by to mohlo umět nějaké částicové a jiné efekty (mj. pro zvýraznění vybraných jednotek).

Dál k tomu bude subsystém pro zvuk (něco, co umí načíst zvuky a hudbu ze souboru, zvuky přehrát na žádost, hudbu přehrávat automaticky neustále), vstup, nějaký menu systém (podle složitosti GUI ve hře, může to být od primitivního pro first person shooter po extra složité pro třeba fotbalový manažer).

Nad tím by byla asi postavena herní vrstva, tedy nějaké objekty, které reprezentují herní objekty a umějí se nějak pohybovat, reagovat na příkazy od hráče nebo od AI, dále AI samotné, dále kód, který umí načíst misi, vlastnosti herních objektů (síla, život, druh zbraně dané jednotky, ...) ze souboru.

No a nad tím by byla už samotná hra (která v podstatě jen vytvoří instance příslušných objektů a spustí je) a editor. Herní objekty v editoru by mohly být stejné jako ve hře, jen by se jim třeba neposílal vstup (a samy by si ho samozřejmě nebraly).

Nakonec bych jen podotkl, že pokud to chceš dělat v malém, potom asi nebudeš mít extra editor pro GUI menu, spíš si to budeš psát ručně do nějakého textového souboru. Podobně pro další věci, které je možné editovat ručně. Takže zbývá možná nějaký ten editor terénu (ale i ten se dá vyrobit z heightmapy editované v něčem jako je Photoshop) nebo misí.

Šlo by to i jinak, toto je můj pohled na věc.
_________________
Mám strach
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Quiark



Založen: 29. 07. 2007
Příspěvky: 816
Bydliště: Chlívek 401

PříspěvekZaslal: 11. srpen 2008, 09:37:13    Předmět: Odpovědět s citátem

Pokud budeš psát vlastní skriptovací jazyk, může to vypadat nějak tak, jak jsi napsal.

Pokud použiješ existující jazyk (Python, Lua), bude to vypadat tak, že funkce a objekty v C++ budou vyexportované do skriptovacího jazyka. To znamená, že ve svém kódu budeš někde mít přiřazení move -> "move", kde to první je C funkce a to druhé název té funkce ve skriptu.

Tady http://docs.python.org/ext/intro.html je to detailně popsáno pro Python.
_________________
Mám strach
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Augi



Založen: 28. 07. 2007
Příspěvky: 782
Bydliště: Čerčany

PříspěvekZaslal: 11. srpen 2008, 10:02:19    Předmět: Odpovědět s citátem

Quiark popsal přesně to, co jsem měl na mysli jinými slovy, takže když jsme se na takovéhle architektuře shodli dva, tak by snad nemusela bejt tak špatná Wink
Jinak tvorba vlastního (trošku složitějšího) skriptovacího jazyka může bejt docela zábava, ale zabere Ti to dost času, takže bych využil nějaké existující řešení.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 11. srpen 2008, 10:40:06    Předmět: Odpovědět s citátem

K hernímu engine bych rád řekl jedno - nedělejte engine. Wink Dělej rovnou hru a po čase možná zjistíš, co budeš v enginu potřebovat, ale je obecně lepší dělat to, co je ve hře v danou chvíli potřeba než se programovat s něčím, co pak nevyužiješ. Např. zjistíš, že game a level editor na začátku potřebovat nebudeš vůbec (a nebudeš mít ani čas se s tím dělat), pro popis herních dat ti postačí XML, skriptovací jazyk taky nepotřebuješ vždy, atd.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
if.then



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

PříspěvekZaslal: 11. srpen 2008, 12:42:52    Předmět: Odpovědět s citátem

Eosie: Moje řeč. Vlastní engine, který dělá free team/jedna fyzická osoba, je většinou tak náročný na čas, že se nevyplatí(v jednom človeku možná na GTA 1 Embarassed ).
Nicméně neshoduji se s názorem, že grafika má být naprogrmována nejdřív. To je přece chyba Very Happy . Nejdřív se musí udělat herní logika!!!
Juraj:
1. dělej jen level engine a game engine dělej "hard" nebo skiptuj. Pokud chceš dělat vlastní scripter, NEDĚLEJ HO!!! Very Happy .
2. Na netu je enginů pro strategie fůra. Nedělej svůj, dělej HRU!!!
3. A nakonec je lepší míň než víc. Uvažuji, že až budu mít hotový projekt, udělám takové GTA 1 remake Smile
_________________
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
Juraj



Založen: 06. 12. 2007
Příspěvky: 189

PříspěvekZaslal: 11. srpen 2008, 13:29:28    Předmět: Odpovědět s citátem

if.then napsal:

1. dělej jen level engine a game engine dělej "hard" nebo skiptuj. Pokud chceš dělat vlastní scripter, NEDĚLEJ HO!!! Very Happy

není snažší udelat svůj jazyk který se bude editovat v poznámkovém bloku, než implemetnovat nějaký rozsáhlý již hotrový jazyk.?

if.then napsal:

2. Na netu je enginů pro strategie fůra. Nedělej svůj, dělej HRU!!!

Já nechci tvořit hru, ale engine Smile To vše dělám proto abych se naučil nové technologie DirectX atd..

if.then napsal:

3. A nakonec je lepší míň než víc. Uvažuji, že až budu mít hotový projekt, udělám takové GTA 1 remake Smile

Nevím jak jsi to myslel ale i takové GTA 2 by mě v mém engine potešilo Laughing
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Deluxe



Založen: 31. 07. 2007
Příspěvky: 235
Bydliště: Oslavany

PříspěvekZaslal: 11. srpen 2008, 13:48:59    Předmět: Odpovědět s citátem

Ja myslím že nový technologie se můžeš naučit i když budeš dělat hru, prostě si řekneš: "ve hře chci to a to" a máš pak jasný cíl a víš co musíš udělat. Jinak myslím že je lepší místo engine dělat hru a třeba se snažit ty obecný věci jako renderer, AI, fyziku... co nejvíc oddělit od herní logiky.
Třeba takový Krkal od MD byl myslím původně dělaný jako hra:?: a teď je k dispozici jeho engine.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Quiark



Založen: 29. 07. 2007
Příspěvky: 816
Bydliště: Chlívek 401

PříspěvekZaslal: 11. srpen 2008, 14:05:29    Předmět: Odpovědět s citátem

Juraj napsal:

není snažší udelat svůj jazyk který se bude editovat v poznámkovém bloku, než implemetnovat nějaký rozsáhlý již hotrový jazyk.?

Není. Pokud tvůj jazyk nebude úplně primitivní, budeš muset řešit věci, které jsou v existujícím jazyce už vyřešeny. A ten binding code, který přiřazuje C funkce a objekty k názvům ve skriptovacím jazyce budeš muset mít v obou případech.

Jinak ano, engine je pro člověka bez zkušeností fuška, protože neví, co a jak. A těhle pár rad na fóru to nezachrání. Pokud se ale smíříš s tím, že první pokus o engine nebude úplně ideální, můžeš se snažit udělat engine. Jinak bych asi doporučil spíš si udělat nějakou tu hru.
_________________
Mám strach
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Juraj



Založen: 06. 12. 2007
Příspěvky: 189

PříspěvekZaslal: 11. srpen 2008, 14:05:42    Předmět: Odpovědět s citátem

Nyní bych měl další dotaz, na co vše se používá scriptovací jazyk? Myslím si že např na vytvoření herních animací, AI atd.?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Juraj



Založen: 06. 12. 2007
Příspěvky: 189

PříspěvekZaslal: 11. srpen 2008, 14:16:07    Předmět: Odpovědět s citátem

Quiark napsal:

Není. Pokud tvůj jazyk nebude úplně primitivní, budeš muset řešit věci, které jsou v existujícím jazyce už vyřešeny. A ten binding code, který přiřazuje C funkce a objekty k názvům ve skriptovacím jazyce budeš muset mít v obou případech.

Jinak ano, engine je pro člověka bez zkušeností fuška, protože neví, co a jak. A těhle pár rad na fóru to nezachrání. Pokud se ale smíříš s tím, že první pokus o engine nebude úplně ideální, můžeš se snažit udělat engine. Jinak bych asi doporučil spíš si udělat nějakou tu hru.


No, také mě již opustila iluze o krásném obecném herním engine, který bude zastřešovat vše. Hlavně asi proto že když vydím kolik času zabere obyčejné vykreslování + základní efekty. Opravdu se nedá zvládnout veliký projetk v jedné osobně a ještě ve volném čase.

Pomalu ale jistě se snažím promyslet co všechno bude mím cílem, nechci udělat přímo hru, ale ani ne přímo obecný engine, takže se asi vrhnu do nějakého hybrida, který si časem sám řekne co bude.

Dále si také myslím že jdu dobrým směrem, pokud budu chtít udělat první menší "hybryd" s vysledkem hry, než se pouštět do rozsálhých projektů.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2, 3  Další
Strana 1 z 3

 
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