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.
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. ;)