Description
“Red is the enemy” is a 3D game project where we write a custom game engine primarily with c++, limited 3rd party libraries and rendering API. The project spans over 2 semester(6 months) and is completed in a group of 9.
Role / What I worked on
For this project, I was the tech lead and I worked primarily on
Engine architecture
- ECS
- Templated
- sparse sets
- groups
- delegates
- hierarchy
- prefabs
Serialization
- Binary serialization with cereal
- Json serialization with rapidjson
- reflection with properties
Resource Management
- File manager
- dds texture compression with nvidia texture tools
- Fbx models with assimp
Renderer
- OpenGL
- Textures
- Deffered Shading
- SMAA
- PBR with IBL
- Bloom
- SSAO
- Shadows
- Instancing
- Batching
- Shader pipeline
- particles(billboard and sprite animation)
- OIT
- Vignette
Embedding Scripting Language
- C#
- mono
Editor
- ImGui
- Scene Graph
- Inspector
- Viewport
- Profiler
- File viewer
Gameplay
- Gun bobbing
- Gun muzzle flash
- Enemy Explosion VFX
- bullet impact VFX
- bullet trail vfx
- Smoke particles
- Death screen
- Add lighting
What I learnt
For this project, I was responsible for developing multiple key features for the game engine, which helped me gained a lot more technical skills and knowledge compared to my other projects.
However, I believe the project could have done better if I did not need to develop this many key features.
In my opinion, the issue was that some of the programmer’s programming efficiency was not on the same level, which in itself is not an issue as development teams often have programmers with different level of skill, but because we also did not conduct any code review or knowledge sharing, which led to a lot of issue such as bugs, code with poor performance, code that was hard to understand, or all of the above.
At that time, I felt the most efficient way of solving this issue was to either redo the code or take over the key feature completely.
In retrospect, I should have tried to convice my team the importance of code review and sharing our research so everyone had a better understanding of the codebase and have the ability to handle key features.
Screenshots of gameplay
GIFs of gameplay
! Image quality and framerate severely deteriorated due to limitations of GIFs !