ArrowEngine is a custom game engine for learning purpose. It's C++ 20 based, work with vulkan and compatible on Windows and Linux, the former being less tested recently. ECS is implemented for basic system, the rendering part is not integrated to the ECS. It may be broken for some stuff but feel free to check the code.
There is still a lot to do to make a game with it, right now its nothing more than a custom 3d renderer, but I aim to improve it.
- Vulkan installed with the following env sets
- VULKAN_SDK (should point to the desired SDK version > 1.3)
- CMake (vers 3.X currently used)
- Clang compiler
- Python 3
- X11 development libs (libXinerama-devel, libXcursor-devel, libXi-devel)
Run the Generator Project under tools that is in C# to generate some auto files (cmake & .h/.cpp). You can then use the standard CMakes command to build & run.
Do note that I'm using ExternalProject from CMake and some repo, event if public, require authentication to be setup.
- Doxygen config file under the doc folder
- -Z is forward
- Scenes are locked too long mainly because of the current implementation
- Clean cmake to have a better separation between Game & Engine
- Indirect Rendering
- Materials
- Blit
- ImGui
- Material instancing
- Support subpasses in rendergraph
- Read light & ambiant color from scene
- Optimized serialization concept (Material, scenes, textures & all)
- Swapchain recreate
- Rendergraph multiwrite
- Scripting API
- UV0 : Base uvs (0/1) with size included like 0 - 2
- UV1 : First value used for layer selection
- UV0 : Base uvs (0/1) with size included like 0 - 2
- UV1 : Texture coord in atlas