/jle

'Jet-Lagged Engine' is a work-in-progress C++/Lua game engine supporting Windows, Linux, Mac and browsers.

Primary LanguageC++GNU General Public License v3.0GPL-3.0

Cross-Platform 3D Game Engine

jle logo

A simple, yet powerful custom-made C++ game engine intended for PC games.
The engine is developed alongside an unannounced game.

Editor Showcase

Build Status

CMake-Linux CMake-MacOS CMake-Windows CMake-Wasm

Engine: jle

The engine is written in C++ 17 and currently runs OpenGL ES 3.0, OpenGL Core 3.3 or WebGL 2. It thus has the ability to build games targeting Windows, Mac and Linux, as well as modern browsers using WebAssembly via Emscripten.

The way of working in the engine is inspired by a mix of Unreal Engine and Unity, with scripting support in Lua.

Watch the showcase video on YouTube.

Third Party

The engine uses a set of libraries for certain specific tasks.

Usage Library
Window management & input GLFW3 (ZLib/LibPNG)
OpenGL loading (desktop) GLAD (CC0)
Image loading stb_image (MIT)
Serialization nlohmann::json (MIT), cereal (BSD), magic_enum (MIT)
3D importing tinyobjloader (MIT), Assimp (Modified BSD)
Font importing FreeType 2 (FTL or GPL)
Networking Socket.IO C++ Client (MIT)
Audio SoLoud (ZLib/LibPNG)
Editor UI Dear ImGui (MIT), ImGuizmo (MIT), ImGuiColorTextEdit (MIT)
In-Game UI RmlUI (MIT)
Logging Plog (MIT)
Mathematics GLM (MIT)
Compression Zlib (Zlib)
Multi-threading ConcurrentQueue (~BSD), wiJobSystem (MIT)
Scripting (Lua) Lua 5.4 (MIT), sol2 v3.0 (MIT)
Physics (3D) Bullet3 (Zlib)
Template Library EASTL (BSD-3)
Real-Time Profiling Tracy (BSD-3)

Development

CMake 3.20+ is used as the build system. Supported compilers are MSVC, GCC, Clang and Emscripten.

Linux Dependencies

sudo apt update
sudo apt install libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxext-dev wayland-protocols libwayland-dev libxkbcommon-dev libglu1-mesa-dev freeglut3-dev mesa-common-dev

Fetching the Source

No external dependencies needed, everything is included.

git clone https://github.com/Mormert/jle.git --recurse-submodules

Building with CMake

mkdir build
cd build
cmake .. -DJLE_BUILD_EDITOR=ON -DCMAKE_BUILD_TYPE=Release
cmake --build .