MoBaGEn - Module Based Game Engine - Educational tool to teach game programming concepts.
- Webassembly is the future. The initial plan is to create a Game Editor and Engine to run on browsers or wrap it in apps such as electron, wasm3 or any other;
- The engine core should be written in C++;
- Scripts in JS, TS or WASM, or any language via specialized module;
- The core should be as small as possible and the modules should be as swappable as possible;
- Modules are the way to customize and extend the engine. We should create modules to do specific tasks and glue them all together. Ex.: rendering module, physics module, audio module, etc;
- A build is simply the combination of: a engine player, packed with the modules used, plugins and the assets;
- The engine should be able to run on any platform, but the editor should be web-first;
- The company will receive funds from the community to pay the developers and the servers to host the editor. The core will be open source and free to use;
- The company will offer subscription model to have access to version control and remote build;
- The company will also offer a marketplace to sell assets, plugins and modules.
Before checking it online, some demos are intended to be implemented by you. So most of the demos would look like empty;
Want to showcase your work here? Create a pull request.
Do you like it?
- Act as a central point to teach basic game dev concepts;
- Build a regional community around game dev to bring attention to our people;
- Have full control of all the processes from code to the delivery;
Did you like this project? Follow me on social medias
- Has many solid, well maintained, efficient and stable libs;
- It speaks straight to hardware, you can do whatever you want;
- It is portable.
It is the best all-around solution to:
- Create projects cross-platform
- Configure variables and flags
- Build complex projects in easy way
- Most relevant libs supports it
- Best package manager to import and use third party libs from source code with low maintenance code.
- Please refer to this doc.
- C++ core Guidelines
- Don't recreate all game engine stuff, glue them all. "Life is too short to build a game engine from scratch";
- If a library do not easily compile on all supported platforms, we won't use it.
- Use consolidated libs and do not reinvent the wheel (only if is strictly needed)
- Start small and make small steps towards the goal.
- Always make everything lib interaction swappable as good as we can.
- Never use any lib on the core code. The core should interact with the libs through a glue code. Ex.: core lib -> physics module -> bullet physics engine
- Target the latest C++ version that is portable to our targets(iOS, Android, Windows, Linux, OSX, WEB). compiler support table.
- CI should be able to build to all targets at once.
- Core
- Job/Task Module
- Resources Manager
- Graphics
- 2D - Needs to not rely on SDL_Renderer anymore
- 3D
- Physics
- Sound
- Networking
- Scripting
- GUI
- ImGUI via 2D renderer - needs to become agnostic
- Input
- Game Components
- Scene
- Logger
- Image Editor Application
- Design Editor similar to Slicer3D
- DICOM loader
- 3 viewports synced with exam data
- Game Editor Applications
- Compilation of scripts
- Execution of scripts within their respective contexts
- Manipulation of variables within script contexts
- Support importing and exporting compiled scripts