I'm now porting the project to C++, here.
This is a very simple project that aims to help me learn how graphics work and how to develop a simple game engine. It is NOT a serious tool but a learning project, so please keep that in mind.
Currently, only work on the "Editor" part is being done. Once i'm satisfied with that, the next step would be to get the "runtime" working, meaning being able to load a "cooked" game from a single asset file.
The engine uses a "component" based system. Entities exist in the world and can have multiple components attached to them. It follows the logic of Unity's MonoBehaviour and not an ECS. The reason for this is that i just feel more comfortable working with this type of components and speed is not a hude concern right now.
[!WARNING]
The project is highly volatile and there is a chance you won't be able to compile vendor libraries and/or get linking errors. If you do encounter such issues, please open in issue, i would love to help you get it working!
First, you need to install Odin and make sure the odin
executable is in your PATH.
The project (sadly) has to use CMake to build the third party libraries, so you must have it installed. Then:
cmake -S packages/ -B temp # Put all the cmake generate stuff in temp, which is ignored in this repo
cmake --build temp --config Debug --target copy_libs
Additionally, if you want to use the engine in release mode, you also have to build the release version of the 3rd party libs:
cmake --build temp --config Release --target copy_libs
At the root of the repository, run:
odin build build -collection:packages=packages
This command will create a build.(exe|bin)
binary which you can then use to build and run the project. However, before doing so, we need to copy some neccesary libraries from the Vulkan SDK. This step only needs to be run once:
./build.exe setup-vulkan
Now we are ready to run the project:
./build.exe default-debug # This should launch the engine in debug configuration.
Everybody and their mum has a discord server, so why not me? :) Join the Discord