Ensure you have Visual C++ Redistributable Packages for Visual Studio 2013 installed.
- Clone the repository.
- Open the
.sln
file with Visual Studio 2022. - Set the build mode to Release x64.
- Build the project.
- Clone the repository.
- Open the folder in Visual Studio Code.
- Install the following extensions:
- C# Dev Kit Extension
- C# Extension
- .NET Install Tool Extension
- Build the project using
CTRL + ALT + B
.
- Main Game Loop:
Game.Game.cs
- UI Loop:
Game.UI.cs
- Custom Components:
Components
folder - Assets (e.g., sounds, images):
Content
folder - Core Engine Code & Components:
Core
folder
- Awake: MonoGame initialization.
- Start: MonoGame
LoadContent
. - MainUpdate: MonoGame
Update
. - FixedUpdate: MonoGame
Update
withFixedTimeStep
. - Render: MonoGame
Draw
. - DrawGUI: MonoGame
Draw
, called afterRender
andSpriteBatch.Begin
. - OnDestroy: MonoGame
UnloadContent
.
- Awake: Called on the frame the component is created.
- Start: Called on the next frame before
MainUpdate
andFixedUpdate
. - MainUpdate: Called during MonoGame
Update
. - FixedUpdate: Runs on MonoGame
Update
withFixedTimeStep
. - Render: Called manually in the engine's
Render
function (requires camera matrices). - DrawGUI: Called after
Render
(afterSpriteBatch.Begin
). - OnDestroy: Called on the frame the component is destroyed.
- Physics is handled using BulletSharp and runs in the
FixedUpdate
loop.
- UI Code resides in
Game.UI.cs
and utilizes Myra. - UI Initialization:
Start
. - UI Rendering:
Render
.
- Uses Aether.Animation.
- Refer to the built-in sample project for usage.
Core.Components.Meshrenderer.cs
supports CPU animated models by default.
Core.EngineManager.cs
(singleton)
Access key features likeContent
(ContentManager),DefaultShader
(Effect),UIControls
(UIControls), andGraphics
(GraphicsDeviceManager).
Core.ECS.ECSManager.cs
(singleton)
Manages entities and components.Core.ECS.Component.cs
All components must inherit from this class. Override lifecycle methods likeStart
,MainUpdate
,FixedUpdate
, etc.
Core.Rendering.LightManager.cs
(singleton)
Configure ambient light.Core.Rendering.StaticMesh.cs
Generate procedural models compatible with MeshRenderer.Core.Rendering.PrimitiveModel.cs
Create primitives like boxes and spheres.Core.Rendering.Material.cs
Define materials for MeshRenderers (defaults toDefaultShader
).
Core.Rendering.PhysicsManager.cs
(singleton)
Provides collision shapes, masks, and raycasting utilities.
Core.Audio.SoundManager.cs
(singleton)
Manages sound creation and playback via the content pipeline.
Core.Components.Transform.cs
Defines 3D position, scale, rotation, and directional vectors (Up
,Right
,Forward
).
Automatically included in all entities.
Core.Components.Physics.Rigidbody.cs
Integrates with BulletSharp for physics interactions.
Core.Components.Camera.cs
Controls the scene camera (perspective or orthographic view).Core.Components.LightComponent.cs
Adds directional and point lights.Core.Components.MeshRenderer.cs
Renders models or meshes with specified materials.