Overview
Renboko provides a concise set of systems for 2D games:
- ServiceLocator — register and resolve global systems (InputSystem, Renderer2D, PhysicsWorld, AudioSystem).
- Scene system — `Scene` with lifecycle hooks: `Start`, `Update`, `FixedUpdate`, `Render`, `OnUnload`.
- Renderer2D — sprite batching, `DrawString`, and `Camera2D` transforms.
- AssetManager — `AcquireTexture`, `AcquireFont`, `AcquireSound` with ContentManager-first, filesystem-fallback behavior and reference counting.
- Physics — `Rigidbody2D`, `BoxCollider2D`, `CircleCollider2D` and simple collision resolution.
- UI — retained-mode UI elements (`UIButton`, `UILabel`, `UISlider`, etc.).
Initialization
Register core services early in EngineGame.Initialize(). Recommended order:
ServiceLocator.Register(new Renderer2D(graphicsDevice));
ServiceLocator.Register(new InputSystem());
AssetManager.Init(Content, GraphicsDevice);
SceneManager.Load(new MainMenuScene());
Asset loading
Prefer AssetManager.AcquireTexture("name.png") for textures. For fonts, build .xnb files with MGCB and place them in DemoGame/Content/ so AcquireFont or Renderer2D.LoadFont can load them reliably.
Recent fixes
- Fixed malformed solution header that caused
dotnet buildto fail. - Removed unsafe reflection in
SceneLoaderand tightened nullability annotations. - Improved
AssetManagertexture loading with filesystem fallback and safer async cache handling.
Where to look
- MainEngine/Engine — core systems implementation.
- API & Examples — common usage patterns and snippets.
- Getting Started — build and run instructions.