An easy-to-use cross-platform 2D game library for C++ supporting desktop, mobile, console, and web platforms.
JNGL is a cross-platform 2D game library for C++ that simplifies game development across desktop, mobile, console, and web platforms. It provides a clean, scene-based API for handling graphics, input, audio, and window management while abstracting away platform-specific details. The library enables developers to write game logic once and deploy to multiple targets including Linux, Windows, macOS, Android, iOS, Xbox, Nintendo Switch, and web browsers.
C++ developers looking to create 2D games that need to run on multiple platforms without rewriting platform-specific code. Game developers who want a lightweight alternative to larger game engines while maintaining cross-platform compatibility.
JNGL offers a minimal, focused API that reduces boilerplate code while providing true cross-platform support from desktop to consoles and web. Unlike heavier game engines, it gives developers fine-grained control over game logic while handling the complexities of platform abstraction.
Easy to use cross-platform 2D game library for C++
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
JNGL supports deployment to Linux, Windows, macOS, Android, iOS, Xbox, Nintendo Switch, and web browsers from a single codebase, as shown in the detailed build instructions for each platform in the README.
The library uses an intuitive scene-based system with overridable step() and draw() methods, simplifying game loop management and reducing boilerplate, as demonstrated in the 'Hello, World!' example.
It includes built-in support for fonts, text rendering, audio playback, and optional video recording via the VideoRecorder class, handling common game development needs without external dependencies.
JNGL provides a straightforward API that abstracts platform complexities while keeping setup code lightweight, allowing developers to focus on game logic with less initial configuration.
Setting up JNGL requires following detailed, platform-dependent build instructions for each target (e.g., separate steps for Linux, Windows, Android), which can be time-consuming and error-prone for multi-platform projects.
As a lightweight library, JNGL lacks advanced features like physics engines, particle systems, or animation tools found in full game engines, forcing developers to implement or integrate these separately.
Compared to larger frameworks like SDL or Unity, JNGL has a smaller community, resulting in fewer tutorials, third-party plugins, and community-driven resources for troubleshooting.