Made with EnTT and Bullet Physics.
Currently builds on Linux and Windows.
This is very work-in-progress. It exists now primarily as an example of how to construct an engine with the stated design goals.
Every action the editor can perform is accessible through a keyboard shortcut. Pressing F1 shows the list of currently accessible actions and their shortcuts. Users should not need to take their hands off the keyboard.
File formats for assets like maps and archetypes (prefabs) are human-readable with minimal noise. There are no GUIDs that change with every save of the asset. There is only plain, meaningful data.
This makes assets first-class citizens in source code management tools like git. They can be merged and have conflicts resolved like source code.
Instead of the user deciding when to save an asset, LM-Engine saves all changes as they are made. The user is expected to utilise version control to protect data they don't want overwritten.
The core API for game logic is based on entity-component-system. Mutation of game state is done through plain-old-data instead of interface methods and classes.
Platform/windowing system abstraction library.
Graphics Library implemented with Vulkan.
C++ utility library.
GUI app toolkit built on top of lmpl and lmgl.
Core game logic and simulation library.
Game asset creation application.
Presentation layer library. Separates core game logic from graphics/sound.
Example 3D game made with the engine.
On the command line, in the repository root directory, run:
conan profile update settings.compiler.libcxx=libstdc++11 default
conan config install conan/config/common
mkdir build && conan install . -if build --build missing
You may now run a regular CMake config/build in the build directory. See documentation of CMake and Conan for using different configurations/settings.
Run the Editor
executable in the build bin
directory with the --project-dir
argument set to the sample
project directory eg.
cd build/bin
./Editor --project-dir ../../sample
.
Editor.exe --project-dir ../../sample
on WindowsTo create your own project, create a directory in a projects
subdirectory in
the repository root. As a starting point, copy the sample
directory contents
there and rename the CMake targets in CMakeLists.txt.
To create a separate directory containing just what's needed to run a game (assets and binaries), use the LM_PACKAGE CMake macro (as seen in sample/CMakeLists.txt), then run:
cmake --install <cmake_build_directory> --component <game_target_name>_package --prefix <chosen_output_dir>