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.




    Powered by