
Production Date
Winter 2023
Production Duration
Current project
Project genre
2D, Action
Team size
03
Zombie Survivor is a 2D Action game inspired by both Vampire Survivor and Risk of Rain where the player must survive the incoming waves of enemies and grow always more powerful.
For this project, I worked on AI, UI, scene management , ensuring the respect of the Unity optimization guidelines and some aspects of the backend and various gameplay elements.
Project details
ALL VIDEOS AND SCREENSHOTS ARE PLACEHOLDERS
Programming
Unity optimisation & Update optimisation
Following the official Unity performance optimization guidelines for console and PC, one goal for this project was to implement as much optimization as reasonable.
Following the Unity guidelines for optimizing the Update loop, an update manager was implemented to centralize all types of updates.
This helped in reducing to a minimum the interops from C# into C++ every update tick.
Scriptable Object oriented architecture
Both scene data and Audio mixer parameters were moved under a scriptable object architecture.
A tool allows scene data scriptable objects to be created using the hierarchy of scene assets. Scene data use their respective scene asset name for easy management.
Audio mixer parameters can be used by creating a scriptable object asset which name will serve as the reference to its audio mixer's exposed parameter. This allow for a simple way to centralize the string based parameters.
Localization
A tab separated file was used to create and update localized lines of text for the UI and the tutorial.
The tab separated file is organized in a way that allows for an easy understanding of the context under which the line is localized with a note section and headers for each language to localize the line under.
Any tab separated file can be passed through the system to return a dictionary or lines localized under specific languages.
User login & Backend
This project allows the creation of a user account as well as the storing and retrieval of persistent data.
The tutorial, for example, will only be played once per account.
Back4App, a backend specific web application, was used as the external database.
Scene management
Scenes are loaded in an asynchronous manner.
An architecture of scriptable objects was used to create and use Scene Data.
The addressable system is used to manage the loading and unloading of the scenes.
The system allows for an easy switch from and to the default asynch scene loading.
Automated test
A system that automatically plays the game was created to grant an easy way to test the game for both developers.
The system uses an approach similar to that of the Chain Of Command pattern. Actions are added to the player controller based off of conditions for the specific test. If any test fails, the next one in the chain checks if it can be used and so forth.
Credits
Visuals
-
Characters assets were made by Marie-Maxime Giguère.
Audio
-
UI
-
UI Selection: broumbroum, sf3-sfx-menu-back.wav, https://freesound.org/people/broumbroum/sounds/50557/?fbclid=IwAR1ONbntrj8aGbL2ipBH8di0K6IPJ9zQW3ON6kyjxEMapsRJkzTW6HI-D90
-
UI Validation: broumbroum, sf3-sfx-menu-validate.wav, https://freesound.org/people/broumbroum/sounds/50565/?fbclid=IwAR1x1-Tc-LZjz-FNw6tZitrUqwaJHDqYiiU1dN9a5FvV925iMtP2uCqLlAQ
-
-
Music
-
Benoit Laroche
-
-
Other
-
N/A
-
Who did what
-
Sébastien (Ludwell)
-
AI
-
UI
-
Scene management
-
Implementation of Unity optimization guidelines
-
Audio
-
User login & Backend
-
Level and game design
-
Misc
-
-
-
Three Cs
-
Gameplay
-
Persistent data & Backend
-
Level and game design
-
Misc
-
-
-
Characters arts
-
-
Benoit Laroche
-
Music
-