Bekerültek a különböző AI típusok. Ezután fordult elő egy olyan jelenet amin egészen jót röhögtem. A bulletek nem érik utol a szerencsés célpontot. Lehet, lassan itt az ideje az első balance-olásnak? :D
Bekerültek a különböző AI típusok. Ezután fordult elő egy olyan jelenet amin egészen jót röhögtem. A bulletek nem érik utol a szerencsés célpontot. Lehet, lassan itt az ideje az első balance-olásnak? :D
Az elmúlt két nap még mindig a framek vadászásával telt. Most arról olvashattok röviden, hogy mire jutottam és ez nem feltétlenül jelenti azt, hogy mindenhol igazam van... ;)
Egyszerűbb headset nélkül
Ha még nem tetted, kapcsold át a telefonod GearVR Dev módba. Így nem kell felkapnod a fejedre mindig a headset-et, hogy kipróbáld amit alkottál. Emellett maradhat a telefon USB-n és már mehet is a profiling.
Ennek egészen érdekes mellékhatása, hogy cardboard-ban is egészen használhatóak utána a GearVR appok.
Application Manager -> All -> GearVR Service -> Manage Storage és tappoljatok hétszer a VR Service Version-re. Ezután a Developer Mode elérhető lesz egy kapcsolóként.
Fontos, hogy ezeken a kereteken belül maradj, ha folyamatos képet szeretnél látni:
Amik mindenképpen legyenek bekapcsolva a Unity project settingsben:
A mesh-ek számának csökkentése
A draw call-ok számának csökkentése hozta meg számomra legjelentősebb javulást. A pályán található tile-ok mindegyike egy-egy quad object volt. Ezekből közel 100 darab volt lepakolva.
Feljebb ugye azt írtam, hogy 50-100 draw az ideális gearVR-on, így már csak a tile-ok kirajzolásával a határt feszegettem és a díszítő elemekről, tornyokról és az összes többi object-ről még nem is beszéltünk.
A megoldás pedig nem más lett, mint a Mesh.CombineMeshes hívás.
Első körben elkezdtem megírni a saját script-emet hozzá. 1-2 óra alatt sikerült eljutnom odáig, hogy már volt egy egységesített mesh-em minden object-ről, viszont a material-okat még nem kezelte külön. (itt nem csak a tile-okról volt szó, hanem a teljes pályával próbálkoztam) Az pedig nem szép, ha minden ugyanolyan színt kap.
Mivel már éjfél után jártam bőven ezen a ponton, de nem akartam úgy kidőlni, hogy még mindig akad a játék így az asset store-hoz folyamodtam, ahol azonnal meg is lett amit kerestem. Egy kattintással összehúzta a szükséges gameobjecteket és a materialok is megvoltak hozzá.
Visszatérve a tile-ok kérdésére: lett egy olyan tile object-em amin mindegyik rajta volt egyetlen mesh-ként. Így viszont nem működik a tile kijelölés, mert ugye az összeset jelölném ki egyszerre. Szóval megtartottam a régi tile-okat is, csak Start()-nál kikapcsolom a mesh rendert és csak akkor kapcsolom vissza őket, ha ki vannak jelölve. Alatta pedig ott van a korábban egyesített mesh, hogy látszódjona tile-ok helye.
Ugyanez a módszer el lett játszva a turretek-kel is, amiket primitive-ekből építettem. Ahogy rájuk néztem azonnal visszaesett a framerate 30-ra. Szóval ezeket is sikerült optimalizálni a fent linkelt tool-al. Most már egészen stabil a 60FPS.
Material-ok változtatása
A kijelölt tile-ok és platformok esetében a material color és emission értékét módosítom script-ben. Mikor bármi változik a Renderer.material-ban akkor egy másolat keletkezik az adott material-ból. A legtöbb helyen azt ajánlják, hogy a sharedMaterial-t módosítsam, viszont esetünkben ez nem járható út, mert ha kijelölök egy platformot, akkor az összes megkapja a kijelölés színt.
A megoldásnak jelen pillanatban az tűnik, hogy létrehoztam egy selection materialt és egyszerűen kicserélem erre mikor fölé megyek a kurzorral. Eddig jónak tűnik, de ezt már nem volt időm alaposabban letesztelni az este.
A mai nap végül azzal telt, hogy gondoltam javítok a frameraten mielőtt elkezdek nagyban contentet gyártani. Végigzongoráztam a fények bake-elését, de mire használható eredményt sikerült elérni, rájöttem: Nem tetszik a játék árnyékokkal. Szóval most az modellek sötét oldala van emission colorral kicsit megvariálva, hogy meglegyen a kívánt rajzfilmes hatás.
Be lett kapcsolva egy jóféle occlusion culling is, de még mindig érezhető framerate drop volt, ha felépítettem 10-15 platformot. A megoldás pedig triviális volt és nem számítottam ennyire nagy hatásra: A tile-ok amikre építkezünk unlit plane-ekből állnak. Ha megépül a platform akkor ezek eddig megmaradtak. ...viszont ha kikapcsolom a tile mesh renderer-jét, akkor meg se röccen a játék akkor se ha telepakolom platformmal.
Szóval egy újabb lépés előre pipa. Már csak nem árt, ha ugyanígy bírja majd ha tele lesz toronnyal... és azok lőnek... és 30-40 AI is a pályán van. Sima ügy. :D
Végre elkészült az ellenőrzés, hogy ne engedje elindítani a játék az attack phase-t, ha teljesen el van zárva az útvonal. Ilyenkor szól(ni fog, ha kiírom valahova), hogy adj el néhány blocker platformot, különben nem mész tovább.
Ez viszont egy újabb problémát szült: Ki kellett találni, hova kerüljön az eladás gomb.
Mivel a torony építés menü katasztrofális volt (Egész pontosan 10 cm-re a játékos arcától jelentek meg méterszer félméteres gombok), adta magát, hogy az építkezés fázisban újfajta irányításra lesz szükség.
A platformokra kattintva mostantól feljön egy csodálatos menü az adott ponton és lehet válogatni a csodálatos feature-ökből.
A kilőtt támadó tictac-ok pedig nem felrobbanak, vagy fröcsögve szétcsúsznak a padlón, hanem egyszerűen úgy gondolják, hogy 20%-os fehér áttetsző formában gyorsan meglépnek az erdő irányába. Ez a következő képen látható:
A következő lépés pedig, hogy kitaláljam a wave kezelési rendszert. Az sem árt, ha átlátható és könnyen szerkeszthető marad akkor is, ha már 20 pályát és ezeken belül 5-10 kört tartalmaz mondjuk 4-5 AI típussal.
Még ötletem sincs rá... :D
Ez a blog azért jött létre, hogy legyen egy fejlesztői history a játékról és ne a facebook wallt posztoljam tele a screenshotokkal.
Röviden, hogy mi is ez a játék: VR FPS Tower Defense game amiben a maze részét te építed, kezdetben csak egy üres területet kapsz, ahol az ellenfelek nyílegyenesen száguldanak be a shrine-ba.
Az már biztos, hogy a játékból létezik egy játszható prototípus, de még nagyon messze van a vége.
Már lehet építkezni és mozogni a térképen. Wave közben át tudsz ugrálni az üres platformokra és tudod lőni a támadó tectac-okat.
Ja igen... azért TecTac mert ha "i"-vel írnám, nagy valószínűséggel nem használhatnám a nevet.
A tornyok már lőnek és van három típus. Nem lett túlbonyolítva:
Jelenleg a prioritás, hogy ne lehessen teljesen elzárni az AI útját. Illetve a wave-ek kezelése.
Ha ez a kettő megvan jöhet a turretek upgrade rendszere, egy normális UI és lehet darálni a pályákat.
Platformok amiken tervbe van, hogy működni fog: