So M5 (Mech Mech Mech Mech Mech) is using the following to make this work.
MonoGame
MonoGame is the graphics/game engine that M5 uses. It handles the main program flow, including game loops, the content, and the graphics device.Jitter Physics
Jitter Physics is M5's physics engine. I chose this engine because of its simplicity of use. So far it works great! Jitter also allows separation of collision detection from the physics world which means M5 will be able to have a high resolution damage model without needing to handle high amounts of physical constraints.
Artemis Entity Framework
Artemis is the Entity Component System M5 uses to structure and update game objects. Read up on it here: Artemis Entity Framework
Working Together
M5 uses Artemis to tie together Jitter and MonoGame. It does this with components and systems that define entity data and behavior.
Current Components
- Camera - Camera projection matrix.
- Collidable - Rigid Body data
- Placeable - World transform matrix
- Visible - Model data
Current Systems
- Camera System - Uses Camera and Peaceable components to set the view and projection matrices.
- Collision System - Updates the Placeable component based on the Collidable component. (This is done for the Visual System's sake.)
- Visual System - Uses the Placeable component, Visual Component, and globally accessible view and projection matrices to render a model to the screen.
P.S. I'm really bad at writing right now. I would much rather structure my blog posts as lists of changes because it doesn't require much critical thinking to do so.