Skip to content
Easy to use game library for C++ and Python
Branch: master
Clone or download
Latest commit 68ff647 Jul 13, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.vscode Android: Update Gradle Jul 13, 2019
android Android: Update Gradle Jul 13, 2019
cmake Add CMake build files Apr 22, 2018
configs Tup: Add clang.config Jun 28, 2017
data Add shader example Feb 25, 2019
doc Improve doc May 24, 2019
examples Turn mainLoop into a member function of App Jun 17, 2019
include iOS: Update from C++14 to C++17 Jun 21, 2019
lib Visual Studio: Use epoxy instead of GLEW Mar 19, 2018
python Turn mainLoop into a member function of App Jun 17, 2019
src Improve documentation Jul 13, 2019
subprojects/theoraplay Use C++ initialization (needed for std::mutex) Jan 15, 2019
visualcpp Update VS project files to VS2019 May 11, 2019
xcode iOS: Add Sound.cpp to Xcode project Jul 13, 2019
.clang-format Add .clang-format file Oct 23, 2017
.clang-tidy Fix clang-tidy's readability-else-after-return May 11, 2019
.gitattributes GitHub: Don't use C headers for language detection Oct 19, 2018
.gitignore Fix some Xcode warnings Jun 21, 2019
.gitlab-ci.yml Upgrade to Android NDK r20 Jun 7, 2019
.gitmodules iOS: Use IDZPrecompiledOgg and IDZPrecompiledVorbis Mar 5, 2018
.travis.yml Travis CI: Also build with CMake on macOS May 2, 2019
Arial.ttf deploy to iPhone Mar 31, 2012
CMakeLists.txt Android: Build OpenAL Soft as a static library May 23, 2019
LICENSE.txt Update year in LICENSE file Jan 29, 2018 Ubuntu: libpng12-dev no longer exists Jul 12, 2019
Tupfile.ini Improve Tupfile (use variants) Jun 28, 2017
azure-pipelines.yml Set up CI for iOS, fix #19 (#25) Jan 25, 2019
epoxy-0.dll Visual Studio: Use epoxy instead of GLEW Mar 19, 2018 pkg-config: Use epoxy instead of glew Mar 20, 2018
jngl.png Fix compilation for iOS Mar 5, 2018
jngl.webp old JNGL logo (lossless WebP file) Aug 23, 2012 Move Sound into its own file, fix #28 Jul 13, 2019
mingw.ini Cross-compiling with Meson Jan 30, 2018
test.ogg using weak linking for OpenAL on Windows Feb 24, 2010

JNGL - Just a Neat Game Library Build Status Build status pipeline status

An easy to use C++/Python game library for Linux, Windows, macOS, Android, iOS and the Nintendo Switch.



sudo apt-get install libgl1-mesa-dev libfreetype6-dev libfontconfig1-dev libxxf86vm-dev \
libjpeg-dev libpng-dev libvorbis-dev libopenal-dev meson libepoxy-dev libboost-dev g++ \
libwebp-dev git libsdl2-dev


sudo dnf install fontconfig-devel freetype-devel libvorbis-devel libepoxy-devel libwebp-devel \
libjpeg-turbo-devel boost-python3-devel python3-devel meson SDL2-devel openal-soft-devel gcc-c++

Arch Linux

pacman -Syu --needed meson gcc sdl2 pkg-config fontconfig libepoxy libwebp openal libvorbis boost


MSYS2 / MinGW-w64

Set up MSYS2 and install the following in a MinGW-w64 Win64 Shell:

pacman -Syu --needed mingw-w64-x86_64-meson mingw-w64-x86_64-gcc mingw-w64-x86_64-boost \
mingw-w64-x86_64-openal mingw-w64-x86_64-freetype mingw-w64-x86_64-libvorbis \
mingw-w64-x86_64-libwebp mingw-w64-x86_64-dlfcn mingw-w64-x86_64-libepoxy mingw-w64-x86_64-python3 \
mingw-w64-x86_64-cmake make mingw-w64-x86_64-gdb

Visual C++ 2015 or newer

Open visualcpp/JNGL.sln and press Ctrl+F5 to build JNGL and run the example application.

Visual Studio Code

Change the terminal to MINGW64 in settings.json:

"": "C:\\msys64\\usr\\bin\\bash.exe",
"": [
"": {
    "CHERE_INVOKING": "1",
    "MSYSTEM": "MINGW64",

In the terminal run:

cmake -H. -Bbuild -G"MSYS Makefiles"
make -Cbuild


Use Homebrew to install the build dependencies:

brew install sdl2 freetype libvorbis libepoxy jpeg webp meson pkg-config boost
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig


meson build
ninja -C build


Install the Android SDK and let ANDROID_HOME point to it. In the Android SDK Manager install the NDK build tools. Type the following to run the test app via ADB:

make -C android run

You can also open the android/test folder in Android Studio and build from there.


Install Boost using brew install boost and run ln -s /usr/local/include/boost include/ios/boost. Open xcode/JNGL.xcodeproj and run the "Test iOS" target.

You can’t perform that action at this time.