Dev Log 4: The Editor Takes Shape

November 18, 2025

Part I — Laying the Foundations of the RetroEngine Editor

In the last few weeks, RetroEngine evolved from a rendering sandbox into the early shape of a real engine. The biggest leap: the arrival of the first proper editor. Powered by the ImGui docking branch, the editor now lives directly inside RetroEngine’s runtime, giving me live, real-time control over content, scenes, and CRT parameters.

What began as a debug pane is becoming a full authoring environment. Windows can be rearranged, docked, floating, or snapped into custom layouts, and every control reflects the engine’s state instantly. No rebuilding. No restarts. No text file hacks.

RetroEngine Editor UI Overview
The first real RetroEngine Editor window, powered by ImGui’s docking system.

Part II — Scene Editing Comes Alive

The parallax system introduced last log has now been fully exposed through the editor. Instead of hard-coded layers, RetroEngine now supports:

Clicking, dragging, or typing in a field updates the scene immediately and the renderer rebuilds textures, descriptor heaps, and GPU bindings in real time. The editor isn’t just reflecting the engine anymore; it’s driving it.

This makes RetroEngine feel dramatically different. I'm shaping a scene, adjusting it, and watching the layers glide in the CRT pipeline as I tweak them.

Part III — The New Texture Import Pipeline

One of the biggest technical challenges was asset handling. Debug builds, release builds, absolute paths, missing folders, WIC decoding failures exposed every fragile assumption. The solution was to build a proper asset pipeline.

RetroEngine now supports a safe, predictable import flow:

This was a foundational fix. Texture loading is now unbreakable, predictable, and fully decoupled from your machine’s file structure.

Texture Import Dialog
Importing a PNG directly into RetroEngine’s project structure.

Part IV — JSON Scenes That Actually Work

The original key-value format for parallax scenes has now been replaced with a clean, structured JSON layout. Saving and loading scenes works reliably, no silent failure, no path confusion, no formatting quirks.

Every scene stores:

{
  "SceneName": "Mountains",
  "Layers": [
    { "Texture": "Assets/Imported/layer01.png", "Parallax": 0.10 },
    { "Texture": "Assets/Imported/layer02.png", "Parallax": 0.30 }
  ]
}
    

RetroEngine now boots from a JSON file, reloads scenes from it, and allows you to save new ones directly from the editor. This is the backbone for future level authoring tools.

Part V — Stability, Reliability, and the Dirty Work

Several deep engine issues surfaced while building the editor and solving them made the engine far more robust:

All of these are now fixed, replaced with predictable behavior and detailed logging. The engine finally feels stable — something you can build real tools and workflows on top of.

Closing Thoughts

This dev log marks a clear turning point. RetroEngine now has a working editor, a functioning import pipeline, a robust asset system, JSON scene support, and fully interactive parallax tools, all woven directly into the CRT simulation workflow.

The engine is no longer just drawing scenes. It’s authoring them.

Next up: The start of a full scene graph and tileset editor...the features that will turn this editor into a proper retro game toolkit.