Sergi Parra - Engine Programmer & Engine QA
Hello my name is Sergi Parra and I have mainly worked in this project as an engine programmer, as well as working in code quality control for most of the engine’s codebase, overseeing most additions to it. In all, I have been really involved with the development of our engine.
- Multithreading Module:In order to be able to undertake big processing tasks in less time I created a multithreading module that created worker threads and put them in a thread pool that constantly crunches any tasks given to it. This module also has the option to halt (and use) the main thread until all tasks are completed.
- Build System / .dll Structure: In order to be able to build our games from the engine, I changed how our code compiled: making the core functionality of the engine into a library (dll) and then having to executables that link the dll, one for the engine, and for the games. And then I created a panel for the engine that would copy all needed files and set up the configuration of the build.
- Recast Navigation System: In order for our enemies to pathfind around the map, we decided to implement Mikko Mononen’s Recast Navigation system into our engine. At first this was implemented in a single chunk way, but then later was changed to create the mesh in chunks which were then created each in parallel using multithreading. I also decided to create an interface that, not unlike Unity’s, allowed you to create up to 30 areas with custom names and area costs, as well as edit the settings of your mesh before baking it.
- Optick Addition: Together with Aitor Simona, we added Optick into our codebase to measure the performance of our engine and game under stress, I also added a compiling option for our engine that disables Optick outright, to avoid the overhead.
- Post-processing and OpenGL fixes: Lucho Suaya, Aitor Simona and I worked on the engine’s graphical side, fixing bugs related to it as well as adding some post-processing effects, including HDR, Bloom and Color Correction with a color look-up table (LUT).
- Port to x64: As the game’s development advanced, and our Art department made bigger and more detailed meshes and textures, we realized that the 2GB of RAM that the engine’s x86 structure allowed us was not enough. So, I ported all of the engine libraries and the engine itself to x64, adding some scripts that automatically switch dlls to x86 or x64 as needed when compiling the engine so we could still fall back to the x86 version.
- Toon Shader and Outline: I created a toon shader with the same capabilities that our standard shader has, that would make lights and shadows work in customizable steps to approach the more toony style that we wanted to make our game have. To go with the toon shader, I also developed an outline system for materials, indendent of the shader used, which can work either/or when behind or in front of geometry and have different colors for each situation.
- QA: I oversaw most Pull Requests into the engine codebase, ensuring that they worked in the engine and the game and that they were up to our standards.