The goal of this personal project is to learn game engine development. For that, I isolated the Engine part of my final degree project and started making enhacements. As a brief summary, the engine is divided into several parts: Core/Utilities, IO System with support for mouse, keyboard and multiple controllers, Physics System (uses Box2D), Entity-Component-System (The runtime arquitecture model), Rendering System (uses SDLImage) and Sound System (uses SDLMixer)
My goal for this project is divided in 3 main parts:
1.- Improve the 2D engine and create some tools, make a simple game with it to showcase it's posibilities.
2.- Make it 3D using OGRE and Bullet3D/PhysX and create a simple scene with all the 3D additions.
3.- Implement my own graphics API/Layer over OpenGL/Vulkan (Materials, Modles, Rendering Pipelines, Light, Animations.. etc.).
+ Learned to use Memory deleaker to track memory leaks deeply
+ Learned how to use a Profiler tool
+ Learned about Concurrent Programming
+ Removed scripting module from the engine
+ Created automation script to build dependencies and compile the engine
+ Fixed some bugs in physics components such as BoxBody and CircleBody
+ Added world raycast to the engine
+ Added breakable system using voronoi subdivision algorithm
+ Added a proper render ordering system
+ Added component "AtlasImage" for rendering a custom texture composed of diferent images
+ Added component "CustomBody" to create Box2D polygons
+ Added component "CustomImage" for rendering images with custom texture coordinates so the engine user can draw textured polygons
+ Trajectory prediction system with Raycast
+ Used tileson lilbrary to read maps from TILED (TILED works as my world editor)
+ The blocks used to build the level have Breakable components so are destructible by the player (bird)