_fpeti_ 2011.01.25. 01:35

Szörnyek alaplángon

Igen, már amennyire egy zöld kocka félelmetes lehet. :) npc-kel foglalkozom manapság, nagyon új, és közepesen érdekes téma. A zöld valamik helyére egy lebegő rémet kellene képzelni, ami szabálytalan lufiszerű mozgással ide-oda libbenve lövöldöz, most még egyelőre egy szimpla részecskét. Elég sokat szívtam a kvaterniós orientációval, nehéz volt pl. megcsinálni, hogy ne fejjel lefele legyen állandóan, hanem forduljon a hasára,ha csak tud. Eddig az van, hogy alapból nézelődik, ha észreveszi az alap-ellenséget (meg lehet adni a látószöget neki), akkor irányba fordul és elkezdi eregetni a golyóit, XD és közeledni. Ha elég közel van, körözni kezd az ellenfele körül, és próbál vízszintes irányba kerülni a célpontjához képest.
Npc-knél az első dolog, ami nálam kötelező, hogy ne csak a játékost támadják, hanem egymást is. Ilyet a doom2-ben láttam először, azóta nagyon tetszik. Egyszerű megoldani, és látványos tömegjeleneteket lehet ezzel elérni. Itt is úgy van, hogy egy npc eltalál egy másikat, akkor az automatikusan visszatámad. Ez addig folyik, míg egyik el nem patkol – pontosabban még tovább is, addig, amíg a halott npc ragdoll-ja is be nem szerez annyi sérülést, hogy lefut a desintegrate() függvénye, ami kitörli a játékból (ide kell majd egy gib-rendszer). Ekkor a győztes npc visszaáll alaphelyzetbe, azaz újra a játékosnak esik. Szerintem nagyon mókás összeveszejteni egy csomó szörnyet, hadd csépeljék agyon egymást.
 

 Elkezdtem a golyónyom megjelenítőn is ügyködni, még elég hiányos. Kétféle van:
egyszerű testekre csak szimpla textúrázott négyszögeket rajzol, mozgó test esetén mozgatja a testtel együtt.
A második decal-féle pedig terrain-ra van, amik robbanásból kifolyólag kerülhetnek a talajra, általában egy kráter aljára.
Mindkettőnél a haladás egyik gátja az, hogy vágni kellene a decaleket, ne lógjanak le a testről. Például ha egy doboz legszélét találjuk el, akkor a golyónyom 4zetből le kell vágni a kiálló részt. Ez nagyon változatos poligonokat eredményezhet, ráadásul, ha a decal alatti terület nem sík, minden egyes 3szögre rá kellene vetíteni a megfelelő részt. Igazából elég sok módját el tudnám képzelni a decal-ek képzésének és rajzolásának, pl vágások helyett deferred shadinggel el lehetne játszani, hogy a fényekhez hasonlóan screen-space-ben a z bufferrel oldanánk meg az egészet. (ha az nem gond, hogy egy dobozról lelógó részlet láthatóvá válik, ha közel kerül egy másik tárgyhoz – jah, ’decal bleeding’)
A terrainra egy trükköt találtam ki, hogy ne kelljen mindig vagdosni:
csak egy méretű decal lehet, az pedig csak a terrainháló csúcspontjaira, vagy éleire eshet. Így 9 esettel meg lehet oldani az összes kombinációt. Ha nem pont csúcsra vagy élre esik a  középpontja, kicsit odébb kell húzni, és már jó is. ;)

 A harmadik jóság, hogy nekiálltam az aljnövényzetnek, mert az is kell (ahhoz volt kedvem – indie dev for de win!!) Úgy csináltam meg, hogy minden talaj textúrához tartozhat egyféle fű textúra, mivel 4 textúra lehet egy talajon, így 4 fűféle kell, amit egy textúrába tettem, így az összes füvet ki lehet rajzolni egyszerre. A fű mesh modelje két négyzet merőlegesen, és ezt rajzolom ki hw instancing-gal. Nem túl nagy területet füvesítek be egyszerre, de így is 400-600 füvet kell alapból kirajzolni, ami nekem soknak tűnik, főleg ahhoz képest, ahogy kinéz. Mondjuk olyan sok fps-t nem vesz le. Még csak félig van kész, a távoli fűvek eltűnését alpha-dissolve módszerrel fogom finomítani, a frustum culling se tökély. Amúgy a generálása per terrain-háromszög történik, és raktározza addig, amíg az a 3szög látszik, vagy elég távolra nem kerül. Fontos, hogyha megváltozik a terrain (pl bombázás – esetleg creepers, Minecraft rulez amúgy ,) ), akkor a rajta lévő füvek pozíciója is idomuljon, ne lebegjenek a föld fölött.

 

Szólj hozzá!

A bejegyzés trackback címe:

https://sortagamedev.blog.hu/api/trackback/id/tr182611440

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.