Miquel Suau Gonzàlez
Code Lead
Project Overview
This project has been an unforgettable adventure. It has been my first time leading a group of people and I can proudly
say that the code team has been full of amazing and talented people, who worked as hard as they could to deliver the
best game possible.
I have supervised the entire codebase, every pull request and commit on all the GitHub branches to make sure the code
had no memory leaks and was good/safe to use.
Tasks:
- Supervise all the code, pull requests and builds.
- Assign scrum teams and tasks.
- Complete code tasks without them overlapping with the main role's tasks.
- Keep track of code members' workloads and modify them when necessary.
Base engine and Systems
Diamond Engine
The codebase for the engine was developed 3 months prior to this project for a class assignment. This engine was
selected by the teacher, and was wildly expanded with amazing systems and logic developed by the entire code team.
The base engine was really solid and already had support for C#/Mono code, which allowed for a much faster gameplay
iteration.
Orthographic Culling
A system was developed to cull off meshes before the render pass to optimize the scene rendering. A culling system was
already developed in the starting code, but it wasn't working on orthographic.
The orthographic version of the culling system was developed from scratch with a new set of math to optimize it as much
as possible.
Skybox system
The current engine's skybox system had one default skybox and could not be changed, this had to be changed to give
developers the chance to set a new skybox for every scene.
Not only the system allowed to change the skybox, it also had settings to change individual faces of the cubemap,
optimization to avoid reloading already loaded cubemap faces between scenes, removing the skybox to render a solid color
and save the faces individually for every scene.
Directional lights and real time shadows
Directional lightning system to simulate orthographic sun-like light. More than one light could be created, and all the
lights used a shadow mapping system to simulate real time shadows.
Every shadow could be modified with color pickers to set its color, giving the art team a lot of freedom to play with
lights.
Lead role
Being a lead was more challenging than expected. I tried to fulfil that role not as a boss, but as a leader, and that
meant not only giving orders, organizing scrums and teams and helping with code, but also assigning myself code tasks
like anyone else and supervising every commit and pull request on the development branch.
I was also in charge of creating the release builds and making sure all the data and files were present, and that the
game could be played without any problem.
Gameplay systems
Game loop system
A randomized game loop was added to the game. This game loop was in charge of selecting the random rooms during every
match, creating a unique experience every time the user plays.
This system was also in charge of managing all the loop related data, like the level indicator, the boss event loading
and shops.
Turret
Creation of the first turret's iteration. This first iteration contained the rotation and damage logic, the laser display logic and some behavior. The state machine and other behaviors were later added by other members.
Grogu follow system
First and final iteration of the Grogu's flocking system. This system was designed to avoid the usage of colliders for
the companion system. This was necessary because the colliders on older iterations caused a lot of problems in other
gameplay systems.
The system was designed with a very basic flocking logic and a sphere of raycast rays that scan the companion's
environment to correct the movement and avoid clipping and collisions.
Skill tree system
Second implementation of the skill tree's navigation and unlocking system, with a fully expandable C# node structure, navigation and unlocking system.