Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
S

skylicht-engine

> 编程语言
Open source

Skylicht Engine is C++ Game Engine based on Irrlicht 3D. And my goal is to create a high-performance and lightweight Game Framework that can seamlessly function

766 stars0 likes0 views
WebsiteGitHub

About

Skylicht Engine is C++ Game Engine based on Irrlicht 3D. And my goal is to create a high-performance and lightweight Game Framework that can seamlessly function

Skylicht Engine

Skylicht Engine is an evolution of the Irrlicht Project. We have upgraded many features, including Sound Engine, Physics Engine, Particle Engine...

  • Core functionality: Direct3D11, OpenGL 4+, OpenGLES 3+, Google Angle GLES video driver backends.

  • Cross-Platform Framework: Android, IOS, Win32/Win64, UWP, Linux, MacOS, HTML5.

  • Render pipeline: Forwarder & Deferred.

Skylicht Engine is a super lightweight Game Engine that targets mobile platforms (Android, IOS). And, it's completely free.

How to build the project

Platform Build Status
Cygwin64
Windows
MacOS, IOS
Linux
Emscripten
Android

Prerequisites

  • CMake 3.12 or higher
  • Python 3.x
  • Visual Studio (2017 or higher if you want to build on Windows OS)

Build source code

  • Clone this repo
  • Skylicht project have used the Large Files like .tga, .fbx... for demo samples, so you must install Git LFS
bash
# call 'git lfs pull' after checkout
git lfs pull
  • Build assets bundle
bash
C:\skylicht-engine>cd Assets
C:\skylicht-engine\Assets>python BuildAssetBundles.py
C:\skylicht-engine\Assets>cd ..
  • Run CMake from the current directory to generate visual studio project or xcode project
bash
# Visual Studio 2019
C:\skylicht-engine>cmake -S . -B ./PrjVisualStudio -G "Visual Studio 16 2019" -A x64

# Visual Studio 2022
C:\skylicht-engine>cmake -S . -B ./PrjVisualStudio -G "Visual Studio 17 2022" -A x64

# Xcode
/User/Skylicht/Documents/skylicht-engine$cmake -S . -B ./PrjMac -G Xcode 

# Linux
$ skylicht-engine$ cmake -S . -B ./PrjLinux -G "Unix Makefiles"
  • Open the generated solution PrjVisualStudio/SKYLICHT_ENGINE.sln

  • Once the solution opens, right click the SampleXXX project, click "Set as StartUp Project" and click the play button at the top to run the Demo App.

  • More details: please preview command in BuildCommand folder.

Build data assets

Compress Texture

  • Optional, You can skip this step if you don't modify any resource texture.
  • This python tool will convert texture .TGA to compressed texture (.DDS, .ETC2, .PVRTC) to optimize gpu memory on runtime.
bash
# Install Tinydb
# https://pypi.org/project/tinydb
C:\skylicht-engine>C:\Python37\Scripts\pip install tinydb

# Install Pillow (Image processing)
# https://pillow.readthedocs.io/en/4.1.x/index.html
C:\skylicht-engine>C:\Python37\Scripts\pip install Pillow

# Compress TGA to DDS, ETC2 texture
C:\skylicht-engine>cd Assets    
C:\skylicht-engine\Assets>python BuildTextureCompressDDS.py
C:\skylicht-engine\Assets>python BuildTextureCompressETC.py
C:\skylicht-engine\Assets>cd ..

Build Shader

  • Optional, You can skip this step if you don't modify any shader.
  • This python tool use C Preprocessor to inline shader (GLSL, HLSL) script.
bash
# Install pcpp (C Preprocessor tool)
# https://pypi.org/project/pcpp
C:\skylicht-engine>C:\Python37\Scripts\pip install pcpp

# Build shader script
C:\skylicht-engine>cd Assets
C:\skylicht-engine\Assets>python BuildShader.py
C:\skylicht-engine\Assets>cd ..
  • You can optimize shader for rendering on IOS, Android by recompiling the shader with HARD_SHADOW.
cpp
// Assets\BuiltIn\Shader\Shadow\GLSL\LibShadow.glsl

#define HARD_SHADOW
// #define PCF_NOISE

And re-build the shaders

bash
# Build shader script
C:\skylicht-engine>cd Assets
C:\skylicht-engine\Assets>python BuildShader.py
C:\skylicht-engine\Assets>cd ..

Add your code to Project

Add source code

  • Add new source files or subfolders on Projects/{ProjectName}/Source and regenerate project
bash
C:\skylicht-engine>cmake -S . -B ./PrjVisualStudio -G "Visual Studio 17 2022" -A x64

Create application project

  • Run Scripts/create_project.py. Example: Create application NewApplication at folder Samples\NewApplication
bash
    C:\skylicht-engine>python Scripts\create_project.py NewApplication Samples\NewApplication
  • Edit CMakeProjects.cmake, add new line:"subdirs (Samples/NewApplication)" and regenerate projects
  • Open Visual Studio Solution and click NewApplication - "Set as StartUp Project".

Android

Prerequisites

  • Install Android Studio and SDK
  • Install mingw-w64 for Windows
  • Install Android NDK

How to build

Step 1: Build native library

  • Edit the file BuildCommand/BuildAndroidNDK.cmd by text editor and update your path MINGW and NDK
bash
# BuildAndroidNDK.cmd
# Set your pc folder, example
set MINGW=C:\MinGW\bin
set NDK=C:\Android\android-ndk-r26d
...
  • Run BuildCommand/BuildAndroidNDK.cmd to build android native library

Step 2: Copy native library to Gradle Project

bash
# Make folder jniLibs on Android Project
C:\skylicht-engine>mkdir Projects\Android\app\src\main\jniLibs
C:\skylicht-engine>mkdir Projects\Android\app\src\main\jniLibs\armeabi-v7a
C:\skylicht-engine>mkdir Projects\Android\app\src\main\jniLibs\arm64-v8a

# Copy result native ndk (from step 1) to jniLibs
# Project SampleSkinnedMesh
C:\skylicht-engine>copy Bin\Android\Libs\arm64-v8a\libSampleSkinnedMesh.so Projects\Android\app\src\main\jniLibs\arm64-v8a
C:\skylicht-engine>copy Bin\Android\Libs\armeabi-v7a\libSampleSkinnedMesh.so Projects\Android\app\src\main\jniLibs\armeabi-v7a

Step 3: Copy asset resource to Gradle Project

bash
C:\skylicht-engine\Assets>python BuildTextureCompressETC.py
C:\skylicht-engine\Assets>python BuildAssetBundles.py
C:\skylicht-engine\Assets>cd..

Android APK:

C:\skylicht-engine>SET ASSET_PATH=Projects\Android\app\src\main\assets

Android AAB: Assets will be copied to assetPack: appdata

C:\skylicht-engine>SET ASSET_PATH=Projects\Android\appdata\src\main\assets

And copy command

# Copy built-in asset
C:\skylicht-engine>copy Bin\BuiltIn.zip %ASSET_PATH%

# Copy project asset
# Project SampleSkinnedMesh
C:\skylicht-engine>copy Bin\Common.zip %ASSET_PATH%
C:\skylicht-engine>copy Bin\SampleModelsResource.zip %ASSET_PATH%

# Dont forget copy ETC texture
C:\skylicht-engine>copy Bin\SampleModelsETC.zip %ASSET_PATH%

Step 4: Build APK by Android Studio or Gradle

Open Android Studio and import project Projects\Android

Run command build from Android Studio:

Android development

  • You can rename your package name at build.gradle (Projects\Android\app)
  • You can rename your application name at string.xml (Projects\Android\app\src\main\res\values)

iOS

Prerequisites

  • Apple arm64 device
  • Install XCode

How to build

Step 1: Build compress texture ETC and Build Asset Bundles

bash
# Grant permission executive for PVRTexTool
skylicht-engine/Tools/PVRTexTool/darwin$ chmod +x PVRTexToolCLI

# Build compress texture ETC
skylicht-engine/Assets$ python3 BuildTextureCompressETC.py

# Build asset bundles
skylicht-engine/Assets$ python3 BuildAssetBundles.py

Step 2: Generate iOS xCode Project

If you want build samples for iOS device, you should replace the bundleIdentifier in Samples/{ProjectName}/CMakeLists.txt.

cmake
elseif (BUILD_IOS)
    # replace your application name
    set(MACOSX_BUNDLE_EXECUTABLE_NAME SampleHelloWorld)
    set(APP_NAME "SampleHelloWorld")
    
    # replace your bundleIdentifier
    set(APP_BUNDLE_IDENTIFIER "com.skylicht.helloword")
    set(CODE_SIGN_IDENTITY "iPhone Developer")
    
else()

And generate iOS xCode Project by this script.

bash
# generate project for iOS device
skylicht-engine/BuildCommand$ ./GenerateXCodeIOS.sh

# or generate for iOS simulator
skylicht-engine/BuildCommand$ ./GenerateXCodeIOSSimulator.sh

Open iOS XCode Project on folder skylicht-engine/PrjIOS/SKYLICHT_ENGINE.xcodeproj

Note: iOS Simulator is not yet support compressed texture and hardware skinning.

Build static or shared library

Skylicht Engine can be compiled into a standalone library to simplify integration into other projects.

Shared library

bash
C:\skylicht-engine>cmake -S . -B ./PrjVisualStudio -G "Visual Studio 17 2022" -A x64 -DINSTALL_LIBS=ON -DBUILD_SHARED_LIBS=ON
C:\skylicht-engine>cmake --build ./PrjVisualStudio --target install --config Debug

Note: Use the parameters "-DINSTALL_LIBS=ON -DBUILD_SHARED_LIBS=ON" with cmake command

Static library

bash
C:\skylicht-engine>cmake -S . -B ./PrjVisualStudio -G "Visual Studio 17 2022" -A x64 -DINSTALL_LIBS=ON
C:\skylicht-engine>cmake --build ./PrjVisualStudio --target install --config Debug

How to integrate

And then copy the resulting InstallLibs folder to another project. See the project example: https://github.com/skylicht-lab/hello-skylicht See the API Reference

Game Built with Skylicht

Mech Survival

Roadmap

  • Skylight Engine Core
  • Engine Editor

Code example

…

Sample Projects

Samples\HelloWorld

Engine Components are used:

  • FreeType Font
  • Glyph Font
  • Canvas Component
  • Graphics2D
  • GUI Text

Samples\DrawPrimitives

This demo is to draw Cube 3D, set up, transform and use components.

Samples\Materials

This demo code renders a 3D sphere, loads textures (Diffuse, Normal, Specular), and binds a SpecGloss shader to the material.

Samples\PBR

This demo code renders a Sci-fi Helmet, loads textures (Albedo, Roughness, Metal, AO, Emissive), and binds a Physically Based Rendering (PBR) shader to the material.

Samples\SampleShader

This demo code shows how to bind a shader to a material.

Samples\LuckyDraw

Engine Components are used:

  • FreeType Font
  • Glyph Font
  • Graphics2D
  • GUI Text
  • GUI Image
  • GUI Mask
  • EventManager

Samples\SkinnedMesh

This is an example of how to render a character model with animation. The models are downloaded from mixamo

  • DAE Collada loader model/animation
  • Forwarder rendering
  • Skydome
  • AnimationController

Samples\LightmapUV

This is a demo on how to use the UnwrapUV tool to create Lightmap UVs. Library xatlas is integrated to Skylicht Engine.

Samples\Lightmapping

This is a demo showing how to use the lightmapper to bake indirect lighting colors onto a lightmap texture. Project references: Lightmapper

Gazebo

Result lightmap

Sponza lightmap

Indirect lighting on Sponza baked by Skylicht Lightmapper.

Samples\Sponza

This example is how to set up a simple lighting & lightmap. Thi

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

C++directx11game-developmentgame-enginegoogle-angle

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言