Vampire Survivors clone
Opdracht?
Tijd: 2 weken
Hoeveel personen: Alleen
Afgerond: September 2024
Maak een game die, wat betreft gameplay, lijkt op de game “Vampire Survivors”. Dit houdt in dat vijanden in een oneindig aantal waves op de speler afkomen. De speler rond kan lopen, maar dat de wapens die de speler kan gebruiken om zichzelf te verdedigen automatisch aanvallen aan de hand van een cooldown timer. De speler zelf kan alleen rondlopen en objecten oppakken. Verder moet er een systeem inzitten waardoor de speler door het spe, heen steeds sterker wordt. (Ik koos voor Castlevania sprites, omdat die redelijk lijken op de sprites uit Vampire Survivors)
Realisatie
Dit was het eerste project waar ik aan begon als derdejaars student. Na ene lange vakantie was ik bang dat ene hoop dingen een beetje weggezakt waren, maar gelukkig viel dit wel mee. Zodra ik begon kwam het allemaal snel terug. Als eerste project van het jaar waren de verwachtingen van de docenten meteen hoog. Daarmee bedoel ik niet dat ze een geweldig product verwacht had, maar dat ze een hoop eisen stelde aan het product. Zoals het inspawnen van vijanden in waves net zo lang tot de speler dood is. Dus geen spawner die maar door blijft gaan met spawnen, maar echte vlagen van vijanden. De waves moesten meerdere soorten vijanden hebben, en de vijanden moesten gemaakt worden van scriptable objects. Hier heb ik een best tijdje mijn hoofd over gebroken, want ik had geen idee hoe ik dit aan moest pakken. Uiteindelijk ben ik tot de oplossing gekomen dat ik vooraf een aantal waves maak, maar als het speel door alle waves heen is begint hij weer voor aan, maar de vijanden worden sterker en er worden meer vijanden in gespawned. Niet de meest ideale oplossing, maar voor dit project was dit meer dan voldoende.
Verder moesten er vier door de docenten bepaalde wapens beschikbaar zijn. Elk wapen moest minimaal 2 keer versterkt kunnen worden. 2 van de wapen waren redelijk simpel. Een bijl die in de lucht gegooid wordt en vervolgens door zwaartekracht weer naar beneden valt, of een projectiel dat op de dichtstbijzijnde vijand afvliegt. Verder een object dat om de speler heen cirkelt. Deze was iets moeilijke, maar met name omdat ik dat nog nooit gedaan had. Al snel had een redelijk idee hoe ik dit aan kon pakken. Als laatste wapen moesten we een shockwave vanaf de speler in een cirkel naar buiten loopt en steeds minder schade doet naarmate de schok naar buiten loopt. Voor deze had ik al heel snel een goed idee, maar dit bleek nog zwaar tegen te vallen in de uitvoering. Na een hoop proberen en aanpassen is het uiteindelijk toch gelukt.
Het lastige aan de wapens was het regelen van de cooldown. Wapens moeten om de zoveel tijd automatisch afgeschoten worden. Dit was redelijk makkelijk geweest om te coderen door voor elk wapen ene object te maken en daar een script op te zetten die de cooldown bijhoudt. Het probleem met die methode is dat het niet heel erg efficiƫnt is om dan later nog wapens toe te voegen. Hier moest echter wel rekening mee gehouden worden, voor zowel de wapens als de pickups. Ik had er best wat over nagedacht, want ik wilde dan een centrale plek die de cooldowns van wapens bij houdt. Ik heb het antwoord gevonden in scriptable objects en een foreach loop die door een lijst van al de wapen objects heen loopt. Dit liep voor mijn doeleinden soepel genoeg en later bleek ook dat wapens hier aan toevoegen inderdaad heel simpel was.

De rest van het project was redelijk simpel. Ik heb wel nog redelijk wat tijd besteed om het spel de juiste uitdaging te geven, maar verder waren de UI en andere kleine onderdelen redelijk simpel. Aan het einde van de rit ben ik blij met het eindresultaat. Ik heb er best een hoop moeite in gestopt en ben blij dat de moeite terug te zien is.
Probeer zelf
Code
Neem een kijkje naar de de code.