← Back to portfolio

Engine · 2026

AetherCore

A C++/Vulkan engine with C# tooling and an MCP interface for agent-driven editor inspection, screenshots and structured validation. Developed with Oh my PI and Claude Code.

My role

Creator and sole programmer. I own architecture and development, beginning with hand-written C++/Vulkan and now directing, reviewing, verifying, and integrating agent-assisted work.

What it solves

I wanted rendering, authoring, scripting, networking and shipping to work together as a usable game engine, not remain a renderer demo.

What it delivers

  • MCP tools inspect the live editor, capture screenshots and report structured pass/fail validation.
  • Repository games, a physics sandbox and multiplayer test bed exercise engine systems.
  • One workflow carries projects from assets and scenes to hot-reloaded gameplay, networking and packaged builds.

Key decisions

  • Separated GPU interfaces from Vulkan and passed immutable render packets to isolate rendering from mutable ECS state.
  • Shared component reflection across the inspector, serializer, script bindings and editor-control API.
  • Built Editor, Launcher, C# SDK, diagnostics and asset processing around one project model.
Explore the technical details

AetherCore · Vulkan

Capabilities

  • Render graph with bindless descriptors, buffer device address, and GPU-driven draw culling
  • Tiled lighting with cascaded and local shadows, contact shadows, GTAO, and screen-space reflections
  • Post-processing stack covering volumetric fog, bloom, depth of field, histogram auto-exposure, and a tonemapper with eight selectable operators
  • Owner-authoritative multiplayer over ENet - network identity components, session state, and host-to-client and multicast RPCs callable from script
  • Cheapest-first connect ladder of LAN broadcast, UPnP/NAT-PMP/PCP port mapping, STUN hole punching, rendezvous signalling, and opt-in TURN relay, with no port forwarding at any rung
  • Editor-first 2D and 3D workflow with a standalone project Launcher, dockable viewport and inspectors, and linked prefab instances
  • Authoring tools including sprite slicing, animation timelines, chunked tilemaps, a command-based undo system, and autosave with crash recovery
  • Hot-reloadable .NET 10 C# gameplay SDK with collectible load contexts, inspector-exposed script fields, F5 rebuild, and one-click Visual Studio debugging
  • Managed EditorGui immediate-mode API for writing editor tooling in C#
  • Jolt 3D physics and Box2D 2D physics with ragdolls, character controllers, script-driven weld and rope constraints, and colliders generated from sprites and tilemaps
  • Retained UI system with per-element custom shaders, inline rich-text effect spans, GPU curve text rendering, text editing, scrolling, and gamepad navigation
  • Asset pipeline with glTF ingestion, freshness-checked project-wide baking, texture transcoding, material presets, zstd-compressed engine and project PAKs, and a virtual file system
  • Diagnostics with Tracy CPU and GPU instrumentation, a frame timeline panel, tagged allocation tracking over mimalloc with a compile-time tracking ceiling, render-pass timings, and resource inspection
  • Built-in MCP server so a coding agent can drive a live editor - managing panels, querying the render graph, capturing screenshots, and entering play mode

Verification and engineering notes

  • Automated tests cover rendering, physics, scripting, assets, networking, and memory
  • Static architecture checks and build-and-unit validation are complemented by local editor and runtime GPU smoke tests
  • An automated GPU abstraction guard fails the build when engine code reaches past the abstraction into the Vulkan backend
  • Immutable render-frame extraction keeps the render thread independent from mutable ECS state
  • Per-tag allocation counters with a compile-time tracking ceiling; retail builds strip diagnostics
  • Separate development, ship, and retail build policies keep diagnostics available without leaking them into release builds
  • Windows and Linux build presets, with tagged releases producing a self-contained installer that needs no compiler or Vulkan SDK

Further decisions

  • Designed the netcode so the owner of an entity simulates it - no round trip on your own input and no correction - and made connectivity degrade through a cheapest-first ladder so a game gets LAN play, NAT traversal, and relay fallback without a player ever forwarding a port.
  • Treated the engine's own games as the acceptance test, building each subsystem against a project that needed it rather than against a demo scene.

Further outcomes

  • Packaged editor builds support installation without a compiler, the Vulkan SDK, or the source repository.
  • The Launcher and Editor can be driven and inspected programmatically for reproducible scene authoring, screenshots, diagnostics, and end-to-end validation.

Development workflow

AetherCore began as hand-written C++ and Vulkan. I define requirements, architecture boundaries, and acceptance criteria, then divide implementation work between agents using Oh my PI (omp) with multiple AI providers and Claude Code. I review the changes against the design and use automated tests, static architecture checks, the GPU abstraction guard, and local editor/runtime smoke tests to validate them before integration. The in-repository games provide practical acceptance cases for the engine's systems.

I wanted the engine’s systems to remain inspectable and replaceable as the toolset grew.