VR Tower Defense játék (TecTacTD)

2016. október 28. 20:41 - tectactd

Lehet állítani kéne a bulletek sebességén?

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

komment
2016. október 28. 10:05 - tectactd

Frame vadászat

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:

  • 50 – 100 draw call/frame
  • 50k – 100k polygons/frame
  • Amennyire kevés textura csak lehetséges(de lehetnek nagyok)
  • 1-3 ms script execution - Unity Update()
  • + nem árt tudni, hogy ha 60FPS alá esik a framerate, akkor az oculus azonnal stabil 30FPS-re húzza le. Soha ne essetek 60FPS alá! 

1d4b61.jpg

Amik mindenképpen legyenek bekapcsolva a Unity project settingsben:

  • Static batching
  • Dynamic batching
  • GPU skinning
  • Multithreaded Rendering
  • Default Orientation to Landscape Left


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.

screenshot_20161028-090133.png

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.

screenshot_20161028-090212.png

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.

komment
2016. október 25. 22:48 - tectactd

Optimalizálás 2. kör

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.

tectactd1610251.jpg

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

 

komment
2016. október 24. 21:12 - tectactd

User interface átalakítás és elzárt út ellenőrzés

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.

screen4.jpg

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.

screen5.jpg

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ó:

screen6.jpg

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

komment
2016. október 24. 09:46 - tectactd

TecTacTD - Avagy a kék bogyók támadása

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.

first.jpg

A tornyok már lőnek és van három típus. Nem lett túlbonyolítva:

  • Gomba szerű torony: közepes sebzés + közepes attack speed
  • Kristály torony hordóban: Nagyon gyorsan lő, de csak keveset sebez
  • Ágyú: Lassú, de nagyot üt

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:

  • GearVR (ezen már megy is, ezen folyik a fejlesztés)
  • Oculus Rift
  • Google Cardboard (ez a verzió tartalmazni fog egy olyan opciót, hogy a VR kikapcsolható és a gyroval körbeforgatva a kamerát játszhatsz)
  • Google DayDream
  • Vive (itt nagyon át kell majd variálni a controllt, de mindenképpen lesz erre is)
  • PC Win (full mouse controll, nem tervezem nagyon durván átírni hozzá a játékmenetet)
komment
VR Tower Defense játék (TecTacTD)
süti beállítások módosítása