Learn how an Entity Component System works and implement it
Further Expand my knowledge in physics such as cloth physics
Learn Inverse Kinematics for Skeletal Animation
Entity Component System (ECS)
ECS is a flexible object system commonly used in game engines to manage how objects hold and use data. This makes adding
new features easier, like physics or rendering, without having to write blocks of code per object. The advantage of an ECS is that it scales well, more modular and
efficient when managing a large number of objects within a video game. It's composed of three main parts:
Entity - A unique ID for each object
Component - Store Data/variables for each entity
System - Updates the logic for each component on every entity
Building an ECS in BlackJawz allowed me to go for my current objectives of exploring different areas of a game engine. For example, I made different components such
as Transform which holds and gives each entity a position, rotation and scale; Rigidbody to hold and give each entity forces, acceleration, velocity and friction;
Animation to hold and read models skeleton infomation and play different animations.
ImGui Library was used for the GUI.
Rendering
Rendering in BlackJawz uses DirectX 12 API for Drawing, Assimp Library for model loading and ImGui for GUI.
Skeletal Animations
Using Assimp to load in models, I read in the bone data and animation keyframes from the models' skeleton