Dungeons of Infinity is een roguelike bullethell dungeon crawler waarin jouw doel is om
30 etappes te weerstaan en alle bosses te verslaan. Het was gemaakt in 2-3 maanden met gebruik van MonoGame engine en C# voor de opdracht op HvA.
Ik was één van de lead programmeurs en ik had veel verantwoordelijkheden. Dat houdt in:
Mijn eerste verantwoordelijkheid was om een healthbar te creëren voor de speler zodat de spelers weten hoeveel ze nog hp over hebben. Ook wordt deze healthbar langer elke keer dat de speler een boss verslaat en hun maximale hp groter wordt.
Bij deze healthbar verandert de sprite_index van de hartjes afhankelijk van hoeveel hp de speler over heeft. Daardoor kwamen er een paar bugs voor, maar het was makkelijk voor mij om de healthbar correct laten werken. Als jullie game spelen, zullen jullie het resultaat zien.
De andere verantwoordelijkheid die ik moest aannemen was nieuwe types van enemies toevoegen aan de game. Dat houdt in dingen zoals assets, stats (zoals Health of Attack) en zelfs animaties.
Voordat ik begon aan nieuwe types van enemies toe te voegen, moest ik eerst de subclasses aanmaken voor de enemy class gemaakt door mijn teamgenoot. Hieronder is de UML-Diagram die uitlegt hoe precies alle deze classes van elkaar overerven. De nieuwe enemy types die ik heb toegevoegd zijn allemaal subclasses van de MovingEnemy class.
Deze nieuwe vijanden verschillen vooral in dat ze unieke sprites en stats hebben, maar sommigen hebben andere unieke eigenschappen: sommigen kunnen niet schieten en ze aanvallen alleen als ze dichtbij zijn, sommigen schieten meerdere projectielen tegelijk, enzovoort.
Een van de grootste verantwoordelijkheden van mij was om Bosses voor onze game te maken. Dat houdt in de gameplay design van bosses en het schrijven van code voor bosses.
Jullie hebben misschien opgemerkt, maar bosses hebben ook hun eigen healthbars. Alleen ze werken anders dan die van spelers: in plaats van uit hartjes bestaan, ze eruit zien als een rechthoekige balkje met een rode invulling. Als de boss hp verliest, wordt deze balkje steeds leger.
Nou in de game zelf zijn de bosses gewoon grotere enemies met heel veel health. Origineel moesten ten minste sommige van deze bosses unieke special attacks hebben, maar door problemen met coderen en tekort aan tijd waren deze mechanics niet gerealiseerd.
Deze verantwoordelijkheid heb ik zelf aangenomen. Sinds onze game een roguelike was, moesten we de game laten steeds meer nieuwe kamers genereren en de speler laten kiezen waar ze naartoe willen gaan. En sinds we werkten met de MonoGame engine, konden we niet een echte roguelike te maken met procedureel gegenereerde kamers, maar we konden wel een illusie ervan maken. Bij dit room systeem varieert het aantal en de positie van de deuren in elke kamer. Dit systeem heeft twee doelen: om elke kamer uniek te maken en laat het lijken alsof de dungeon waarin de game uitspeelt heeft een structuur en als resultaat de game meer immersief te maken, en om de speler een illusie van keuze te geven.
Ik heb een functie gemaakt voor elke deur om te genereren afhankelijk van de randomizer. Ook moest ik ervoor zorgen dat de positie van de speler en de deuren in de nieuwe kamer reflecteert op door welke deur de speler een kamer heeft binnengegaan.
Bij dit project heb ik vooral geleerd om op een creatieve manier problemen op te lossen en designtechnieken te implementeren in het schrijven van code, zoals Single Responsibility Principle of Dependency Inversion Principle. En terwijl er nog veel aan de game is dat aangepast of toegevoegd kan worden, ben ik trots op wat ik en mijn teamgenoten konden bereiken.