Prune is a C++ 2D game engine where the game and editor exist within the same runtime. It is not trying to be a traditional engine where the editing happens in one mode and gameplay happens in another. The core goal is a play-and-build system where the editor is part of the runtime.
Prune has a shared editor shell. Different scene types reuse the main shell and then define their own behaviour, tools, panels, inspectors, object semantics, defaults and how their own data is saved.
I pushed the initial commit to GitHub on the 2nd April 2026 and have been working on it steadily since then outside of my work and other commitments.
This is not my first attempt (Prune 2D) at building a 2D game engine in C++. I have tried a couple of times before: once from scratch and once using a template from The Cherno, a C++ YouTuber. Both previous attempts failed for the same reason: I leaned too far into building a general-purpose engine and all its required components rather than focusing on what I actually needed. I also failed to consider the editor.
Prune is different: this time the project has a clear purpose, I am building it for four reasons:
- I have limited time to work on Prune. It is a hobby project so I need to be efficient with my time.
- I want to improve my C++ knowledge.
- I want to be able to build games with my children.
- I want to create a system where the editor and runtime coexist.
The approach
My development approach is simple, I only plan a few phases at a time, I’m always validating that everything works across all the game slices and I’m only developing the tools and features which are immediately useful to one or more game slices, or solve real UX problems.
The repository has an active record of what is happening, along with documentation explaining why decisions were or were not made.
NOTES details what I will be working on in the short term and the goals for each phase.
DECISIONS is an ADR (Architectural Decision Record). The ADR details important decisions made during development. The most important entries often explain why something is not being done, along with the rationale behind it. These help me ground the project and retain focus.
The goal
Prune has a specific goal that I have detailed above. The README includes a “Ready for users when…” section. My immediate larger goal is to release a 0.x version of Prune, that section details what I need working before I consider the project ready for users at large.
I will blog more aboutPrune in the future, when I reach specific milestones, make important decisions or feel like explaining more about the project.
I have not blogged for a few years. Prune felt like the right way to get started writing again.
