Maze Mayhem
Overview
The game is
developed using Unity Engine and C#. Its a 3D maze solving game with a survival run mode.
Highlights
Character Selection
Guns Inventory
Survival Run Mode
Holiday Special Levels
Character Selection
This Character selection menu uses scriptable object called a player database that holds all the models along with their animations. This part was tricky
for me as this is my first game that includes a character selection menu. You can asssume every element of the player database is an array of "Character" class.
The character class contains attributes for the player, like its ID, respective models, animator and some bools.
Enemies
The enemies were setup using the Unity navigation. Each enemy is build similar to a State Machine. Enemy states include Patrolling, attacking, chasing.
There exists a chasing radius and attack radius. If player is in the Chasing radius then, enemy will chase the player until the radius becomes less than the attack radius.
As soon as the player is in the attack radius it will attack the player. The enemy patrols between 2 points.
There was a scenario where if the chase point was inside an object like a wall the enemy would never reach it. So to tackle this i made my own function where if point overlaps
with any other layer other than ground, a new walkpoint will be searched.
Survival Mode
This mode was the first one I made and was the most difficult part of the game. If I keep creating and destroying platforms then it is not
performance friendly so i had to come up with a way to avoid that. Hence, this mode is heavily dependent on Object Pooling. A scriptable object
called Platforms Database contains different platform models with different sizes and shapes. Now at the start a fixed number of platforms are spawned,
say 10-15. Here is the most crucial part, As a platform goes off screen, that platform will be moved to a new location infront of the player thus keeping
only a constant number of platforms in the scene. Same concept is used for the decorations. The Spawning of gaps and spikes are based on probabilty
Holiday Gifts
Another concept i have implemented is the saving of the holidays gifts collected, as a binary file. Every holiday gift collected is stored as the name,count pair.
This file is read once at the start of the level to fill the gifts UI and then as the gifts are collected they are saved into the file.
Environment
As for the art side of things, most of the art is CC0. I have modelled the Clouds and the Bombs myself in blender. I am not quite used to 3D modelling but i can get
the job done through youtube tutorials or other documentations.