Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Juraj
Založen: 06. 12. 2007 Příspěvky: 189
|
Zaslal: 11. srpen 2008, 07:08:55 Předmět: Koncepce, součásti herního engine |
|
|
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 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 |
|
Návrat nahoru |
|
|
Augi
Založen: 28. 07. 2007 Příspěvky: 782 Bydliště: Čerčany
|
Zaslal: 11. srpen 2008, 07:39:41 Předmět: |
|
|
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 |
|
|
Juraj
Založen: 06. 12. 2007 Příspěvky: 189
|
Zaslal: 11. srpen 2008, 08:13:14 Předmět: |
|
|
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 |
|
|
Augi
Založen: 28. 07. 2007 Příspěvky: 782 Bydliště: Čerčany
|
Zaslal: 11. srpen 2008, 08:37:25 Předmět: |
|
|
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 |
|
Návrat nahoru |
|
|
Juraj
Založen: 06. 12. 2007 Příspěvky: 189
|
Zaslal: 11. srpen 2008, 09:27:20 Předmět: |
|
|
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 |
|
|
Quiark
Založen: 29. 07. 2007 Příspěvky: 816 Bydliště: Chlívek 401
|
Zaslal: 11. srpen 2008, 09:30:00 Předmět: |
|
|
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 |
|
|
Quiark
Založen: 29. 07. 2007 Příspěvky: 816 Bydliště: Chlívek 401
|
Zaslal: 11. srpen 2008, 09:37:13 Předmět: |
|
|
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 |
|
|
Augi
Založen: 28. 07. 2007 Příspěvky: 782 Bydliště: Čerčany
|
Zaslal: 11. srpen 2008, 10:02:19 Předmět: |
|
|
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á
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 |
|
|
Marek
Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 11. srpen 2008, 10:40:06 Předmět: |
|
|
K hernímu engine bych rád řekl jedno - nedělejte engine. 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 |
|
|
if.then
Založen: 13. 04. 2008 Příspěvky: 579
|
Zaslal: 11. srpen 2008, 12:42:52 Předmět: |
|
|
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 ).
Nicméně neshoduji se s názorem, že grafika má být naprogrmována nejdřív. To je přece chyba . 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!!! .
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 _________________ For guns and glory, go to www.ceske-hry.cz.
For work and worry, execute VC++. |
|
Návrat nahoru |
|
|
Juraj
Založen: 06. 12. 2007 Příspěvky: 189
|
Zaslal: 11. srpen 2008, 13:29:28 Předmět: |
|
|
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!!! |
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 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 |
Nevím jak jsi to myslel ale i takové GTA 2 by mě v mém engine potešilo |
|
Návrat nahoru |
|
|
Deluxe
Založen: 31. 07. 2007 Příspěvky: 235 Bydliště: Oslavany
|
Zaslal: 11. srpen 2008, 13:48:59 Předmět: |
|
|
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 |
|
|
Quiark
Založen: 29. 07. 2007 Příspěvky: 816 Bydliště: Chlívek 401
|
Zaslal: 11. srpen 2008, 14:05:29 Předmět: |
|
|
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 |
|
|
Juraj
Založen: 06. 12. 2007 Příspěvky: 189
|
Zaslal: 11. srpen 2008, 14:05:42 Předmět: |
|
|
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 |
|
|
Juraj
Založen: 06. 12. 2007 Příspěvky: 189
|
Zaslal: 11. srpen 2008, 14:16:07 Předmět: |
|
|
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 |
|
|
|