Systems Showcase
By combining the best of what Unity has to offer with clean coding practices, this project became a very large-scale pool of commonly found video-game features that can be easily ported to new projects. While remaining very designer-friendly, the source code now provides easy and readable access to customization and extension of features through inheritance and Scriptable Objects.
Service
C# Programming, Systems Design, Data Integration
Tags
Scriptable Objects, Singletons, Addressables, Async, Coroutines, Prefabs, Object Pooling, Extensions
Year
2022 - Today
Here are some of the technology highlights featured in this project:
Object Pooling: a solution that leverages a higher usage of memory to reduce the impact of object instantiation, leading to a smoother stutter-free gameplay experience and lower garbage collector allocation. This feature was implemented on enemies, damage numbers, dynamic audio sources and common visual effects.
Dotween: several modular tweening scripts that are able to provide fast and lean animations to the entire project. This feature was implemented to give feedback on every single action taken by the player and heavily contributed to the game-feel of the project.
Procedural Generation: leveraging Perlin Noise to generate seeds, this familiar "roguelike feature" provides freshly randomized tile-based maps with multiple biomes while still being cohesive with many rules, making every run feel unique and enhancing the infinite replayability aspect of the game.
Lazy Loading: a "player distance" based solution that dynamically adds and removes props to prevent resources from being used when not visible or relevant to the player. This feature was implemented on floor tiles, harvestables, collectables and many other spawnable props.
JSON Reader/Writer: used to achieve save/load data persistency with multiple save slots. And thanks to smart coroutines and/or async methods, I was able to implement a stutter free loading experience with minimal delay. Additionally with the aid of GUID and Addressables, I was able to easily save and load assets and files without resorting to messy file paths and naming conventions.
Odin Inspector and Validator: with great care to project cleanliness and maintainability, I became familiar with Odin Inspector/Validator which provides amazing customization options to the Unity workflow that allows artists and game designers to easily inspect and modify data in the project.