README

Lumos Engine

Written in C++, with Lua scripting and a built-in editor.

Made with Lumos | Screenshots | Features | Building | Docs | Dependencies

Build platforms license
stars downloads Discord kofi Docs

Made with Lumos

Everything below is a Lumos project written in Lua: no engine code of its own, exported to desktop and iOS with the same prebuilt templates.

Orion

A space trading and exploration game set among the real stars of the HYG catalogue. Haul cargo between ports, build outposts, take on jobs and work your way home.

Orion: Saturn and its moons

Orion: your ship in the Sol system Orion: trade terminal

Planet Archery

A portrait arcade game: read the wind and the gravity, then shoot your way across the solar system. Included in ExampleProject as the Archery scene.

Archery: plates on Mars Archery: balloons on Pluto Archery: ball pyramid on Earth

Vielle

Vielle plays your own music, audiobooks and podcasts on iPhone, iPad and Mac. No account, no tracking, no subscription. Not a game: the whole app is built on the engine’s UI.

Vielle: home Vielle: album browser Vielle: audiobooks

Screenshots

Lumos Lumos Lumos Lumos

Features

Platforms

  • Windows, Linux, macOS and iOS, with partial Android support.
  • Export a project without compiling the engine, using prebuilt templates (Scripts/lumos export).

Rendering

  • Vulkan renderer (MoltenVK on Apple platforms) with Forward+ PBR shading.
  • Cascaded and spot light shadows, SSAO, screen-space reflections, bloom, depth of field.
  • TAA, SMAA and FXAA.
  • Probe-based global illumination, volumetric fog, decals and a physical procedural sky.
  • Frame Explorer: step through a frame pass by pass, with an explanation of each.

Physics

  • 3D: custom engine with island solver, continuous collision, constraints and mesh colliders.
  • 2D: Box2D.

Scripting

  • Lua with hot reload and per-script environments.
  • Scripted test harness that drives real input and takes screenshots (--test=).

Editor

  • Dockable panels, command palette, undo, gizmos and asset browser, all on the engine’s own UI.
  • Built-in sprite editor, code editor and project hub.
  • Runs on iOS with a touch layout.

Audio

  • 3D audio with OpenAL.
  • Software synth and sampler, audio analysis and streaming.

Core

  • EnTT entity-component system, virtual file system, arena allocators and a job system.
  • Tracy profiling.
  • In-game debug overlay and fly camera, available to any game.

Building

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

Install the Vulkan SDK.

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/Windows/GenerateVS22.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

Apple silicon 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: Product > Scheme > Edit Scheme… > Run > Options > Metal API Validation.

Documentation

Contributing

Contributions are welcome, both new features and bug fixes. Just open a pull request. Ideas for things that need adding or fixing are in TODO.md.

Dependencies

  • entt : Fast and reliable entity-component system (ECS)
  • glfw : A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input.
  • imgui : Dear ImGui: Bloat-free Immediate Mode Graphical User interface for C++ with minimal dependencies.
  • Box2D : 2D physics engine.
  • lua : Scripting language.
  • sol2 : C++ <-> Lua API wrapper
  • cereal : A C++11 library for serialization
  • 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
  • meshoptimizer : Mesh optimization library that makes meshes smaller and faster to render
  • volk : Meta loader for Vulkan API.
  • MoltenVK : Vulkan on Metal.
  • OpenAL Soft : 3D audio.
  • msdf-atlas-gen : MSDF font atlas generator.
  • ozz-animation : Skeletal animation.
  • Tracy : Frame profiler.

评论

暂无评论