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.