Tower Defensive

| |

Opdracht?

Tijd: 3 weken
Hoeveel personen: alleen

Afgerond: juni 2024

Maak een towerdefence game die gebruik maakt van 3d modellen met gameplay van een traditionele towerdefence game. Dit betekent dat vijanden over ene vooraf bepaald pad lopen (hiervoor moet in dit project een NavMesh agent gebruikt worden), torens moeten upgradeable zijn, enemies werken op een wave based system en je torens alleen op vooraf gespecificeerde plekken neer kan zetten. Voor dit project moet je gebruik maken van scriptable object en inheritance. Eventuele andere optimalisaties zijn ook toegestaan.

Realisatie

Op het moment dat ik deze opdracht las, was ik een klein beetje bang, want de meeste van de gevraagde onderdelen heb ik nooit eerder gedaan. scriptable objects en inheritance waren volledig nieuwe termen voor mij. Ik had nog nooit gewerkt met een NavMesh agent. dit was de eerste keer dat ik een wave system moest maken. Kortom genoeg om uit zoeken. Dit is dus ook wat ik gedaan heb. Ik ben begonnen met uitzoeken wat inheritance en scriptable objects zijn. De uitleg was redelijk simpel, maar in eerste instantie had ik een beetje moeite om te bedenken hoe ik dit dan goed toe kon passen in mij project. Daarna heb ik uitgezocht wat voor systemen ik allemaal in mijn project wilde hebben en heb deze genoteerd. Toen ik dit eenmaal allemaal op een rijtje had begon ik met het maken van de basis van mijn game.

Het level design had ik lekker simpel gelaten. Een weg met twee bochten. Het ging mij er niet om hoe het spel er uit zou zien, maar meer om dat ik al de nieuwe dingen goed toe kon passen. Nadat ik het pad voor de vijanden had uitgelegd besloot ik uit te zoeken hoe een NavMesh agent werkt. Dit bleek vrij simpel te zijn, tenminste, vrij simpel voor de doeleinden van mij game. Ik weet zeker dat dit nog een stuk ingewikkelder kan zijn.

Verder begon ik met vijanden maken zoals ik dat altijd gedaan heb. Ik maakte 1 script, maar maakte de waarden aanpasbaar in de unity editor. Op deze manier maakte ik dus 4 verschillende vijanden met maar 1 script. Gaandeweg het project kwam ik er echter achter dat dit dus precies een goed punt is om scriptable objects te maken. Ik kwam erachter dat je op die manier eigenlijk hetzelfde kunt doen, maar dan veel sneller en makkelijker. Voor had het eigenlijk niet veel zin om het nog aan te passen, want ik had zo weinig vijanden dat het niet echt een impact zou hebben op de prestaties, maar ik besloot toch om het te vervangen zodat ik er toch even mee kon oefenen.

Nadat ik klaar was met de vijanden voor nu (kleine aanpassingen zijn later nog gedaan), besloot ik om om te beginnen aan de torens. Hetgeen wat mij het moeilijkste leek was het systeem waarmee de toren zijn doelwit uitkiest. En dit bleek ook erg moeilijk te zijn. Ik heb hier heel veel moeite mee gehad, ondanks dat ik al vrij snel een redelijk systeem had. Het uitzoeken ging een tijdje goed, en de torens schoten ook recht op de vijanden af. Het probleem was dat het ook bijna gegarandeerd stopte na een klein tijdje. Ik kon helemaal niet vinden hoe dit kwam, maar uiteindelijk bleek dat ik de check voor welk doelwit hij moet schieten op het verkeerde moment uitvoerde. Hierna ging het een stuk beter. Zo zie je maar weer dat ene heel kelin verschil voor heel veel frustratie kan zorgen.

Voor zowel de torens als de projectielen besloot ik scriptable objects te gebruiken en in het geval van de torens, ook een klein beetje inheritance. Dit ging allemaal redelijk simpel zonder al te veel problemen. Verder ging ik het upgrade systeem voor de torens maken. Hoewel dit wel met een aantal problemen en intensief denkwerk kwam, is er niks geweest waar ik echt op vastliep.

Hierna ik de game voor zover ik hem voor ogen had, wel redelijk af. Ik heb de vijanden en het geld systeem een beetje uitgebalanceerd dat het voor ene goede uitdagen zorgt, maar ook niet bijna onmogelijk is. hierna heb ik het project gepresenteerd. De docent was er zeer tevreden mee, maar vond dat het er nog wat mooier uit kon zien. ik was het wel met hem eens en aangezien ik de tijd nog had besloot ik toch maar iets aan het uiterlijk te doen. De vijanden kregen geanimeerde modellen in plaats van capsules, de projectielen kregen particles, de thuisbasis kreeg een mooi model van een toren en de grond kreeg kleuren om het op een grasveld met ene pad te laten lijken. Verder besloot ik nog om healthbars en hitnumbers toe te voegen en te laten zien op welke wave je zit. Hoewel het er nu wel een stuk beter uitziet, ben ik nog steeds geen expert in de visuele opmak van ene game en moest ik het doen met gratis assets die ik van het internet gehaald heb. Het ziet er beter uit, maar nog steeds niet geweldig.

Al met al ben ik zeer tevreden met het eindresultaat en vind ik dat mij best heb gedaan om van heel veel nieuwe dingen een mooi geheel te maken.

Probeer zelf

Zie ook: