
gittech. site
for different kinds of informations and explorations.
Easy to use cross-platform 2D game library for C++
JNGL - Just a Neat Game Library
π Website π Quickstart π Tutorial π Documentation
An easy to use C++ game library for Linux, Windows, macOS, Android, iOS, Xbox, the Nintendo Switch, LG webOS and the Web.
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
- Install the Android SDK and set
ANDROID_HOME
to point to it. - In the Android SDK Manager, install the NDK build tools.
- 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::Work {
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.