Skip to content

jhasse/jngl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

61dccea · Apr 19, 2025
Apr 2, 2025
Mar 31, 2025
Apr 19, 2025
Oct 27, 2024
Nov 9, 2024
Feb 19, 2025
Mar 31, 2025
Jan 13, 2023
Dec 18, 2024
Apr 19, 2025
Dec 18, 2021
Feb 22, 2025
Jan 3, 2023
Mar 31, 2025
Jan 27, 2025
Apr 2, 2025
Jan 29, 2018
Mar 31, 2025
Mar 30, 2025

Repository files navigation

JNGL - Just a Neat Game Library

🌐 Website 🏃 Quickstart 🎓 Tutorial 📚 Documentation

Chat

An easy to use C++ game library for Linux, Windows, macOS, Android, iOS, Xbox, the Nintendo Switch, LG webOS and the Web.

Portal Dogs running on the Switch

Building from Source

cmake -Bbuild
cmake --build build
./build/jngl-test

Linux

Ubuntu

sudo apt-get install libgl1-mesa-dev libfreetype6-dev libfontconfig1-dev libpng-dev \
libxxf86vm-dev libvorbis-dev cmake g++ libwebp-dev git libsdl2-dev

Fedora

sudo dnf install fontconfig-devel freetype-devel libvorbis-devel libwebp-devel \
cmake SDL2-devel gcc-c++ libatomic

Arch Linux

pacman -Syu --needed cmake gcc sdl2 pkg-config fontconfig libwebp libvorbis

Windows

MSYS2 / MinGW-w64

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

pacman -Syu --needed mingw-w64-x86_64-gcc \
mingw-w64-x86_64-freetype mingw-w64-x86_64-libvorbis mingw-w64-x86_64-libwebp \
mingw-w64-x86_64-dlfcn mingw-w64-x86_64-cmake make mingw-w64-x86_64-gdb \
mingw-w64-x86_64-libtheora mingw-w64-x86_64-SDL2

Visual Studio 2017 or newer

cmake -Bbuild -DFETCHCONTENT_QUIET=0

Then open build/jngl.sln in Visual Studio.

macOS

Use Homebrew to install the build dependencies:

brew install sdl2 freetype libvorbis webp pkg-config cmake

Android

  1. Install the Android SDK and set ANDROID_HOME to point to it.
  2. In the Android SDK Manager, install the NDK build tools.
  3. Run the following command to test via ADB:
make -C android run

Alternatively, open android/test in Android Studio and build from there.

iOS

Generate an Xcode project using CMake:

cmake -Bbuild-ios -GXcode -DCMAKE_TOOLCHAIN_FILE=cmake/iOS.toolchain.cmake -DIOS_PLATFORM=SIMULATOR

Then open and build build-ios/jngl.xcodeproj in Xcode.

Xbox

cmake -Bbuild-uwp -DCMAKE_SYSTEM_NAME=WindowsStore "-DCMAKE_SYSTEM_VERSION=10.0"

Then open build-uwp/jngl.sln in Visual Studio.

Example Usage

Here's a simple "Hello, World!" example in JNGL:

#include <jngl.hpp>
#include <jngl/init.hpp>

class MyGame : public jngl::Scene {
    void step() override {
        // game logic
    }
    void draw() const override {
        text.draw(jngl::modelview().translate({ -100, 0 }));
    }
    jngl::Font font{ "Arial.ttf", 12 };
    jngl::TextLine text{ font, "Hello World!" };
};

jngl::AppParameters jnglInit() {
    jngl::AppParameters params;
    params.start = []() {
        return std::make_shared<MyGame>();
    };
    return params;
}

For a more complete starting point (i.e. project structure, etc.) check out the JNGL project template.