A New Direction for My 3D Editor
What if a 3D editor could adapt to your projects, instead of forcing you to adapt to the editor?
I've been thinking about this question for quite some time, and it has led me to rethink the future of Realm-Crafting.
The idea goes further than simply creating a new version of Realm-Crafting. I want to build an editor around a deeply modular architecture, from the very beginning.
Why a new direction?
Realm-Crafting has been a valuable learning experience. Over the years, it has grown into a functional 3D editor, but adding more and more features to a single application also brings challenges: maintenance becomes harder, updates require more care, and not every user needs every feature.
Rather than continuing to expand an architecture that is becoming increasingly difficult to maintain, I think it's a good time to rethink its foundations from 0.
This is not about abandoning Realm-Crafting as a failure. It's about using what I've learned to build something more sustainable and extensible.
My plan is to keep everything that already works well and progressively refactor it into reusable extensions and modules.
A minimal Core, extended through modules
The central idea behind Flexylon is simple: the editor should provide the essentials, while additional features should be installable when needed.
The Core will handle the 3D scene, object selection and transformation, project management, saving and loading, and the services required by extensions.
Everything beyond those foundations could be provided by dedicated extensions: terrain tools, character editors, scripting tools, dialogue systems, specialized workflows, and much more.
Users would install only what they need, keeping their working environment as lightweight as possible.
I'm considering Composer and Packagist to manage extension distribution, dependencies and updates. A graphical administration interface would handle these operations in the background, without requiring users to work with a command line.
Extensions would be installed once in the editor environment, but enabled separately for each project. A simple game and a project requiring accounts or multiplayer features would not need the same extensions.
Three complementary components
The project is taking shape around three components:
- Editor — the visual environment for creating and editing 3D projects.
- Runtime — the execution environment required to run those projects independently of the editor.
- SDK — the APIs and services developers will use to create extensions and integrate them into the editor.
Some extensions may provide editor tools, runtime functionality, or both. Keeping these responsibilities separate should make projects easier to maintain and update.
I also want to keep project data, configuration, resources and extension code properly separated, using formats suited to each purpose, including native 3D formats, JSON and SQLite where appropriate.
What's next?
The design document (EDD) is now complete, and I'm preparing the architecture before beginning the implementation.
I want to take this step by step: establish a solid Core, define a clear extension API, and make sure the architecture can evolve without becoming difficult to maintain.
The project is still in its planning stage, and there is plenty of work ahead.
My goal remains what it has always been: to create a free, accessible 3D editor for hobbyists, while providing enough flexibility and extensibility for more advanced users and Babylon.js developers.
Realm-Crafting has brought me this far. Now it's time to explore what can be built on a new foundation.
More modular. More flexible.
Thanks for reading!
