High-performance 2d and 3d game engine with Vulkan and OpenGL backends [WIP]
MIT License
"Write my own game engine (wmoge)" is a modern high-performance 3d graphics game engine with Vulkan and OpenGL backends. The idea of the project is to implement a self-sufficient, small, but featured engine and a number of 2d and 3d games using it. Primary focus is the core architecture of the engine, reliability, clean and performant code. Currently, the work is focused on a minor refactoring, new runtime scene representation, building a high-level rendering system, refactoring audio, scripting systems, and bringing physics support. The engine is a personal learning/hobby project for educational purposes only.
The following code snippet downloads project source code repository, and enters project root folder. Must be executed from the folder where you want to locate project.
$ git clone https://github.com/EgorOrachyov/wmoge.git
$ cd wmoge
Attention! On Windows platform building commands must be executed in
x64 Native Tools Command Prompt for VS
.
The following code snippet runs build.py
script, which allows configuring cmake and running of actual build with
selected options. You can specify build directory, build type, number of system threads for build.
Must be executed from project root folder.
$ python ./build.py --build-dir=build --build-type=Release --nt=4
On macOS, you can optionally specify target binaries architecture to build. Pass option --arch
with x86_64
or arm64
respectively. By default, build falls back to CMAKE_SYSTEM_PROCESSOR
specified architecture.
See example bellow, replace <arch>
with desired architecture for your build. Must be executed from project root
folder.
$ python ./build.py --build-dir=build --build-type=Release --nt=4 --arch=<arch>
In order to run a template project demo, execute following command to start demo game executable. The
optional root_remap
argument tells engine where its root directory with all config files and resources is located. In
our case the template directory will be used as a root.
$ build/template/template.exe --root_remap="template/"
If you want to fix code or tutorial text issue, add new functionality, or even new tutorial step, feel free to contribute to the project following contributing guide and code of conduct.
This is a personal learning project. It does not claim to be the ultimate guide to building real AAA game engines. However, it can be useful for those who, like me at the time, want to learn something more than the basics and do something on their own. This project accumulates ideas and knowledge from several books and can be a good starting point for learning!
If you have any questions, feel free to contact me at [email protected]
. If you have any ideas, questions, how to
make or improve something, please, do not hesitate to open new issue or pull-request inside this project. I will try to
respond as soon as possible to them.
@online{wmoge,
author = {Orachyov, Egor},
title = {Wmoge: High-performance 2d and 3d game engine with Vulkan and OpenGL backends},
year = 2023,
url = {https://github.com/EgorOrachyov/wmoge},
note = {Version 1.0.0}
}
Entry | Description |
---|---|
.github |
CI/CD scripts and GitHub related files |
docs |
Additional project documents and resources |
deps |
Third-party project dependencies, stored as is |
engine |
Engine sources code, shaders, config, plugins sources |
template |
Template project which can be used as a base for a game |
games |
Example games created with engine |
CMakeLists.txt |
CMake configuration, add as sub directory to your project |
build.py |
Script to build project sources and examples |
MIT License
Copyright (c) 2023 Egor Orachyov
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.