.[ ČeskéHry.cz ].
Zpusoby reprezentace levelu
Jdi na stránku Předchozí  1, 2
 
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
liquid



Založen: 28. 03. 2010
Příspěvky: 16

PříspěvekZaslal: 18. květen 2010, 10:58:01    Předmět: Odpovědět s citátem

Quiark napsal:
K World of Goo existuje komunitou vytvořený editor (asi tady http://goofans.com/forum/world-of-goo/modding/1183). Dále byl zveřejněn zdrojový kód enginu World of Goo (https://svn.goofans.com/boy/trunk/)


diky rozhodne na to mrknu...

a kdyby nekoho napadly pojmy nebo cokoli, prosim, piste

diky
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



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

PříspěvekZaslal: 18. květen 2010, 17:11:49    Předmět: Odpovědět s citátem

Rozhodně bych do přehledu zařadil 2D levely bez pevného základu (např. asteroids).
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Ladis



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

PříspěvekZaslal: 18. květen 2010, 18:45:00    Předmět: Odpovědět s citátem

Už jsem viděl, že se někdo pokoušel na "2D levelu bez pevného základu" udělat level z tiles a štvalo ho, že je pro něj problém ty tiles v editoru vložit tak, aby to sedělo Wink.
_________________
Award-winning game developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
liquid



Založen: 28. 03. 2010
Příspěvky: 16

PříspěvekZaslal: 5. červen 2010, 16:09:52    Předmět: Odpovědět s citátem

diky, na levely bez zakladu jsem uplne zapomnel...

prosel jsem si trosku to world of goo a zjistil ze to maji delane pres xml
mirne pribarveno jsou to 2 xml soubory,
jeden popisuje svet so uzivatel vidi, tj. kde je ktery png obrazek
druhy popisuje kde sou jake bounding volumes apod
(samozrejme je tam jeste spousta dalsich parametru (hudba, kamera, etc.))

tak je to ale u takovehle hry...

tady ten level neni vpodstate vuebc naskriptova/naprogramovat

jak budou reseny nejake jine hry? co napriklad half-life a podobne?

funguje to nejak tak, jakoze se nacte nejaky file obsahujici mash, a program jako takovy si vypocita a vytvori nejake bounding volumes?

nebo co to jeste obnasi?

kdyz jsem psal takovou mensi patlaninu (3d strilecka v directx) tak sem mel X file, ktery jsem precetl (bounding boxy apod mi udelal engine, do toho jsem presne nevidel) a podle nazvu objektu ze 3d softu jsem rozeznaval o jaky jde objekt... vlastne jsem tak dostaval pouze spawn pointy.

kdyz bych chtel mit ve hre nejaky interaktivni prvek - dejme tomu treba nejake tlacitko u dveri, je spravny postup to resit takto? tedy modelovat level ve 3d softu (pripadne level editoru, ktery je nejakou nadvrstvou 3d softu) a take tam zadefinoval - tenhle objekt se jmenuje napr. tl_574_door a pak v kodu mit zadelano neco jakoze objekt s predponou tl otevira dvere s prislusnym indexem?

asi to pisu zmatene, ale rad bych videl vice o tom, jak se levely reprezentuji...

pokud by se o tom nekdo mohl rozepsat, pripadne by doporucil literaturu, byl bych neskonale vdecny

diky
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Deluxe



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

PříspěvekZaslal: 5. červen 2010, 16:43:36    Předmět: Odpovědět s citátem

U Half-Life (a rekl bych obecne u podobnejch her) je level jako takovej rozdelenej na celkem dost casti...
Takhle nejak je to u Half-Lifu:
Zakladem je asi mapa (tady reprezentovana pomoci BSP), kde jsou ulozeny trojuhelniky zakladniho meshe levelu. Byvaji to objekty s nizkou urovni detajlu treba steny, u nich je ulozena informace o materialu (v podstate odkaz na soubor, kde jsou ulozeny informace o texture, zvuku kroku po povrchu s timto materialem...). Tenhle zakladni mesh tvori zaroven kolizni mesh pro vypocet kolizi. Kromne techle veci v souboru levelu jsou ulozeny informace o osvetleni kazdyho trojuhelniku, ktery vzniknou pri kompilaci mapy. Zvlast muzou byt ulozeny informace pro AI ve hre, treba navigacni meshe.

Dalsi veci co ma v sobe level ulozenou jsou entity, objekty, ktere maji nejakou specialni funkci.

Entita muze byt ulozena:
1. Jako bod v mape + dalsi informace o ni (poloha; trida, ktera ji reprezentuje v kodu hry; nastaveni tridy (treba model, ktery si entita nacte a bude mit jeho vzhled v levelu); taky tady jsou ulozeny informace o eventech ktere muze entita poslat entite jine, treba prave to otevreni dveri)).
2. Jako seznam trojuhelniku, ze zakladniho meshe levelu, kterym je navic prirazena informace o tride ktera urcuje jejich chovani + jeji nastaveni.
Detajlni geometrie (treba strom, zidle...) at uz staticka nebo dynamicka byva reprezentovana pomoci entit a jejich modelu.

Modely (tady to napisu, ja je to u HL 2) jsou tvoreny nekolika castma:
1. Mesh modelu, obvykle vic nez jeden (kvuli LODu).
2. Kolizni mesh, aproximace puvodniho meshe pro pouziti pri vypoctu kolizi.
3. Soubor s nastavenim modelu kde jsou ulozeny jeho vlastnosti jako: hmotnost, material, textury, soubory animaci...
Tyhle veci se pred pouzitim skompiluji a vznikne jeden soubor (nekdy krom textur), na ktery se potom odkazuje kod hry nebo entita.

Je mozny ze v nekterejch vecech kecam Very Happy , ale snad jich neni moc. Taky tady neni popsany vsechno, je to jen takovej nastrel, jak to zhruba je.
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: 5. červen 2010, 17:23:32    Předmět: Odpovědět s citátem

Stačí si stáhnout nějaký editor map a představu dostaneš celkem rychle. Pro Half Life 2 si stáhneš ze steamu Source SDK, pro Quake (1, 2, 3) třeba GtkRadiant nebo QuArK. A Unreal Tournament (1, 2003, 2004, 3) má editor přímo v sobě. V případě prvních dvou her je to dost podobné - pevný level rozparcelovaný do BSP stromu + lightmapy + PVS + entity.

BSP strom
Používá se hlavně na určení field of view, neboli co všechno je před hráčem a zřejmě taky na optimalizaci kolizí. Strom se buduje offline z mapy vytvořené uživatelem. Geometrie mapy není během hry měnitelná. Mapa je tvořena konvexními tělesy s danou texturou a dalšími vlastnostmi.

Lightmapy
Generovány taky offline, používá se radiozita, aby to vypadalo pěkně. Rozlišení lightmap, hlavně u těch starších her, není tak velké jako textur, kvůli paměti. Opět je to neměnné, takže například v Q1 se dveře posouvají i se svým stínem Wink
EDIT: Nejsem si jist, jestli tohle platí i pro enginy po Doom 3..

PVS = Potentially Visible Sets
Neboli taky VIS. Bohužel BSP strom nestačí na ořezání tolika polygonů, aby se to dalo efektivně zobrazit, protože jeho výstupem je jen kuželovitá oblast nekonečné výšky. PVS je v podstatě pro každý bod množina polygonů mapy, které jsou z toho bodu asi vidět. Počítá se taky offline, trvá to docela dlouho, obzvláště pro otevřené mapy.
EDIT: Mám dojem, že v Doom 3 už se to nepoužívá.

Entity
Asi to nejzajímavější - entity jsou to jediné, co se v mapě může hýbat. Buď jsou bodové a potom prostě označují spawn location, nepřítele, nějaký pickup, světlo, zvuk apod. nebo jsou svázány s nějakou geometrií a pak mohou fungovat jako tlačítko, dveře, výtah, teleport, láva, killing zone, low gravity zone apod.

Unreal engine to má docela podobné.
_________________
Mám strach


Naposledy upravil Quiark dne 5. červen 2010, 19:39:39, celkově upraveno 1 krát
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
liquid



Založen: 28. 03. 2010
Příspěvky: 16

PříspěvekZaslal: 5. červen 2010, 17:53:40    Předmět: Odpovědět s citátem

diky vam moc za reakce...

pokud se tedy mesh deli na kolizni a modelovej + urcity polygony reprezentuji danou entitu, jak se to dela?

ja uz primo meshi pojmenuju objekty, polygony apod, to si ponese a engine to z nej vyparsuje a podle toho mash postavi?

predstavme si modelovou situaci - zavody aut
mame celkem fajn mesto, ale jezdit muzem pouze po vytycene trase...
vytvorim tedy jeden jediny mesh, kde krom mesta budou i polygony okolo silnice, ktere ja nejak v engine rozlisim, priradim jim teda detekci kolizi a pruhledny material? nebo jak se to provede?

treba takovy vypinac na svetlo, tech bude treba po levelu plno (uz ne samozrejme u tech zavodu). budu ho mit jako specialni mesh entitu, ktera teda bude reprezentovat nejakou tridu umoznujici nejakej ten on/off a ja ji potom jenom umistim na vsechny pozice ktery potrebuju a nebo presne naopak? tedy ze uz tambude v puvodnim meshi a ja jen tu cast oznacim za nejak funkcni?

jinak moc diky za pojmy jako BSP PVS apod, presne tak to potrebuju, aspon muzu googlovat
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: 5. červen 2010, 20:06:49    Předmět: Odpovědět s citátem

No udělat si to můžeš jak chceš, tohle je zrovna jedna z věcí, kde můžeš zapojit fantazii Wink V těch quake enginech si vzhled té entity (tlačítka) designér namodeluje přímo v editoru map, stejně jako dělá zbytek.


Ukázka z editoru pro Quake - v seznamu objektů vlevo jsou zdi, startovní entita pro hráče a tlačítko skládající se ze 2 kvádrů

_________________
Mám strach
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
liquid



Založen: 28. 03. 2010
Příspěvky: 16

PříspěvekZaslal: 12. červen 2010, 22:31:33    Předmět: Odpovědět s citátem

jasny, diky...
mam tu dalsi dotazek
chci v levelu zaznamenat nejaka specialni mista, napriklad pro hru kde se jezdi na skateboardu chci vedet po jakejch edges se da nejak slajdovat, nebo ve hre typu gta chci vedet, za jake objekty se da schovat...

v uvahu mi prichazeji 2 reseni, bud to do meho programu prijde jiz vyznacene v meshi (bud jako nejaka krivka, nebo nejaky box etc.) a to pak ve hre pouziji, anebo slozitejsi zpusob a to nejak to proste napsat, aby to samo z meshe pocitalo kde sou jaky hrany za ktery se lze schovat apod...

pocitam, ze se pouziva asi vic ta druha moznost ne? nebo mohl by se k tomu nekdo vyjadrit?

diky
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: 12. červen 2010, 23:14:50    Předmět: Odpovědět s citátem

No třeba v L4D se z geometrie levelu automaticky počítá, zda tam mohou zombie vylézt. Ale na druhou stranu tohle jsou dost složitý věci a nemusí se vyplatit je obecně programovat.
_________________
Mám strach
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
quas4



Založen: 18. 10. 2007
Příspěvky: 199

PříspěvekZaslal: 12. červen 2010, 23:48:49    Předmět: Odpovědět s citátem

liquid napsal:
jasny, diky...
mam tu dalsi dotazek
chci v levelu zaznamenat nejaka specialni mista, napriklad pro hru kde se jezdi na skateboardu chci vedet po jakejch edges se da nejak slajdovat, nebo ve hre typu gta chci vedet, za jake objekty se da schovat...


"se da schovat" - myslis pred nekym? Pred kym/cim a jak se pohybuje (je znamo kde bude v case T? nebo ne?). Vymyslet reseni z tak mala ktere pises je podle me holy nesmysl.

liquid napsal:

v uvahu mi prichazeji 2 reseni, bud to do meho programu prijde jiz vyznacene v meshi (bud jako nejaka krivka, nebo nejaky box etc.) a to pak ve hre pouziji, anebo slozitejsi zpusob a to nejak to proste napsat, aby to samo z meshe pocitalo kde sou jaky hrany za ktery se lze schovat apod...


Napriklad: je-li hlidka natocena vuci hraci (ktery se snazi schovat), tj. ma jej v zornem poli muze vyslat nekolik poloprimek do prumetu hrace (rekneme do nohou, hlavy, ruky, trupu) a pro kazdou se hleda prusecik se scenou (pro tyto vypocty muze byt pouzita do jiste miry zjednodusena scena - hierarchie volumetrickych primitiv). Podle vysledku lze rict nakolik ji hlidka vidi. Realizaci by asi slo zjednodusit prevedenim do 2d - hodne zalezi na typu prostredi. To vse je ale napad vymysleny za minutu ci dve a nevim nic o datech (jak je reprezentovan mesh, jak jsou rizeny postavicky apod..)

Jak jsem uz naznacoval - mnohem lepsi odpoved by jsi dostal pri reseni konkretnejsiho problemu nez nejake abstrakce.

Programujes snad gta ve kterem jezdis na skateboardu a pritom se schovavas? Smile
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
Jdi na stránku Předchozí  1, 2
Strana 2 z 2

 
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