Home
Softono
Lumos

Lumos

Open source MIT C++
1.6K
Stars
158
Forks
3
Issues
40
Watchers
4 weeks
Last Commit

About Lumos

Cross-Platform C++ 2D/3D game engine

Platforms

Web Self-hosted Linux Windows macOS

Languages

TypeScript C++

Links

Lumos Engine

Cross-platform 2D and 3D Game Engine written in C++.

Screenshots | Building | Features | Dependencies

Build platforms license
stars downloads Discord kofi Docs

Screenshots

Lumos Lumos Lumos Lumos

Building

git clone https://github.com/jmorton06/Lumos.git
git submodule update --init --recursive

Install Vulkan SDK (https://vulkan.lunarg.com/)

Linux

sudo apt-get install -y g++-11 libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libopenal-dev mesa-common-dev
cd Lumos
Tools/linux/premake5 gmake2
make -j$(nproc) # config=release

Windows

Run Scripts/GenerateVS.bat to generate a visual studio project.

cd Lumos
msbuild /p:Platform=x64 /p:Configuration=Release Lumos.sln

Mac

cd Lumos
Tools/premake5 xcode4
xcodebuild -project Runtime.xcodeproj

M1/M2/M3 Macs may need :

cd Lumos
Tools/premake5 xcode4 --arch=arm64 --os=macosx
xcodebuild -project Runtime.xcodeproj

iOS

cd Lumos
Tools/premake5 xcode4 --os=ios
xcodebuild -project Runtime.xcodeproj CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO

To run on apple devices with Vulkan ( MoltenVK ), disable Metal API Validation here : Product > Scheme > Edit Scheme… > Run > Options > Metal API Validation

Features

  • Support for Windows, Linux, macOS.

  • Vulkan

  • 3D audio using OpenAL.

  • Rendering 3D models with PBR shading.

  • Debug gui using ImGui

  • Custom 3D collision detection - cuboid/sphere/pyramid.

  • 2D collision detection - Box2D.

  • Basic lua scripting support.

    Contributing

  • Contributions are welcome. Both new features and bug fixes. Just open a pull request.

  • Some ideas for things that need added/fixed are in Todo.txt

    Dependencies

  • imgui : Dear ImGui: Bloat-free Immediate Mode Graphical User interface for C++ with minimal dependencies.

  • imguizmo : Immediate mode 3D gizmo for scene editing and other controls based on Dear Imgui.

  • entt : Fast and reliable entity-component system (ECS)

  • glfw : A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input.

  • stb : Single-file public domain (or MIT licensed) libraries for C/C++.

  • tinygltf : Header only C++11 tiny glTF 2.0 library

  • tinyobjloader : Tiny but powerful single file wavefront obj loader

  • volk : Meta loader for Vulkan API.

  • Box2D : 2D physics engine.

  • sol2 : C++ <-> Lua API wrapper

  • cereal : A C++11 library for serialization

  • meshoptimizer : Mesh optimization library that makes meshes smaller and faster to render