Git Product home page Git Product logo

lumos's Introduction

Cross-platform 2D and 3D Game Engine written in C++ that supports both OpenGL and Vulkan.

Screenshots | Building | Features | Dependencies

Build platforms license
Issues size stars Discord

Screenshots

Lumos

Building 🔨

git clone https://github.com/jmorton06/Lumos.git

Linux

sudo apt-get install -y g++-8 libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libopenal-dev mesa-common-dev
cd Lumos
Tools/premake5 gmake2
cd build
make -j8

Windows

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

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

Mac

cd Lumos
Tools/premake5 xcode4
xcodebuild -project build/Sandbox.xcodeproj

iOS

cd Lumos
Tools/premake5 xcode4 --os=ios
xcodebuild -project build/Sandbox.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.
  • Support for OpenGL/Vulkan.
  • 3D audio using OpenAL.
  • Rendering 3D models with deferred PBR shading.
  • Debug gui using ImGui
  • Custom maths library with simd optimisation.
  • 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.

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.
  • spdlog : Fast C++ logging library.
  • 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.
  • glad : Meta loader for OpenGL 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

lumos's People

Contributors

jmorton06 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.