The program works with 4 different projects within the same solution:

Editor

The Editor is the main entrance of the program and works as an intermediary between the User and the Engine.
This project is modular and manages the ImGui and the loop of the Engine.
Since it's an intermediary it's here where almost all the User Experience techniques has been applied.



Engine

The engine operates as a static library (.lib), decoupling core systems from editor-specific implementations while enabling seamless integration with the Editor executable. This modular architecture ensures a clean separation between runtime logic and development tools.


As it's modular, it has a lot of modules to manage such as:
- Audio Engine Module (inits SDL_Mixer so the rest of the engine can use its features)
- Font Engine Module (inits FreeType so the rest of the engine can use its features)
- Input Engine Module (manages all the inputs and events of the program)
- Physics Engine Module (manages the physical step and contacts between objects)
- Renderer Engine Module (allows to show in screen images, lights, basic shapes, etc)
- Scripting Engine Module (manages the Scripting Project and the cpp-csharp communication)
- Window Engine Module (manages the application window and display system)
- Scene Engine Module (manages the Scenes, loading them, unlaoding them, etc)

Scripting

This subsystem bridges C# gameplay logic with the engine's C++ core via Mono integration, enabling cross-language interoperability and runtime scripting.
This is not a very big project inside the Visual Studio solution, but it is necessary in order to put them in the most basic functions so the user can use them. Those would be the InternalCalls, the MonoBehaviour base class and the IGameObject internal class.
With only this 3 files, the project will compile into a ManLiteScripting.dll, that the Scripting Engine Module in the Engine project will use, not only to compile its scripts, but also to use it as a reference .dll file to create the new ManLiteUserScripts.dll that contains the user scripts.



Builder

This would be the last project that this Solution needs, the builder. It is a very simple .exe program that works similar to the Editor, the only 2 differences are:
1. The builder does not contain modules, it only iterates the engine (also it tells to the engine to be runtime all the time and it is in Build mode)
2. In order for the program to know what to do, on initing it, it will open a ManLite.init file that contains information about the final build such as the information that the user chooses in the Build Panel, that is the game name, its icon, the main scene, which scenes will it contain, etc.