Skip to content

MineBill/Engin3

Repository files navigation

Engin3

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.

Status

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.

Architecture

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.

Building and Running

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!

Requirements

  • Odin
  • Vulkan SDK
    • You MUST make sure the SDK is installed with the debug versions of the shader libraries!
  • CMake (I'm sorry)

Odin

First, you need to install Odin and make sure the odin executable is in your PATH.

  • Windows
    • Make sure you have the MSVC build tools installed. If not, consider using this.

Building third party libraries

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

Building Engin3

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.

Discord

Everybody and their mum has a discord server, so why not me? :) Join the Discord

Screenshots

Screenshot_7

Screenshot_8