Jazz² Resurrection

This is an API documentation for Jazz² Resurrection. For user documentation, please visit project homepage. Additionaly, the project is hosted on https://github.com/deathkiller/jazz2-native/.

Jazz² Resurrection is reimplementation of the game Jazz Jackrabbit 2 released in 1998. Supports various versions of the game (Shareware Demo, Holiday Hare '98, The Secret Files and Christmas Chronicles). Also, it partially supports some features of JJ2+ extension and MLLE. Online multiplayer and scripting support (AngelScript) is currently in development, everything else, including story episodes fully playable in cooperation, is already implemented.

To get in touch with the developers and the community, you can use the official Discord server.

For getting started guide, see Building the project — and Building for consoles for the console targets. For game-specific API documentation, see Jazz2 namespace. For common utility functions and generic containers, see the shared root namespace. In addition, CommonBase.h contains common configuration-specific and platform-specific definitions. For nCine game engine documentation, see nCine namespace. The nCine game engine used in this game has been extensively modified, so the original documentation no longer matches the current implementation.

Supported platforms

  • Android
  • FreeBSD
  • Linux and other Unix-like systems
  • macOS
  • iOS (iPhone and iPad) with a Metal or OpenGL|ES 3.0 rendering backend, see Building for iOS
  • Windows
  • Xbox (Universal Windows Platform)
  • Web (WebAssembly) using Emscripten
  • Nintendo Switch using devkitPro toolchain, see Nintendo Switch
  • Nintendo Wii and Nintendo GameCube using devkitPro toolchain and a fixed-function GX rendering backend, see Nintendo Wii and Nintendo GameCube
  • Nintendo 3DS using devkitPro toolchain with libctru and citro3d and a fixed-function PICA200 rendering backend, see Nintendo 3DS
  • Nintendo 64 using libdragon and a fixed-function RDP rendering backend, see Nintendo 64 (experimental — it is by far the smallest machine here and does not hold a steady frame rate)
  • Sega Dreamcast using KallistiOS and a fixed-function PowerVR rendering backend, see Sega Dreamcast
  • PlayStation Portable using pspdev and a fixed-function GU rendering backend, see PlayStation Portable
  • PlayStation 2 using ps2dev and a fixed-function Graphics Synthesizer rendering backend, see PlayStation 2
  • PlayStation 3 using ps3toolchain with PSL1GHT and a native libgcm rendering backend for the RSX, see PlayStation 3
  • PlayStation Vita using VitaSDK and a native sceGxm rendering backend, or OpenGL|ES 2.0 through vitaGL, see PlayStation Vita
  • libretro core for RetroArch, see Libretro core
  • AmigaOS 3.x on 68040/68060, PiStorm and Vampire machines, using a bespoke Intuition/RTG window backend and the CPU software rasterizer, see AmigaOS 3.x (m68k)
  • AmigaOS 4.1 and MorphOS on PowerPC, using their own SDKs through SDL2 and the fixed-function LegacyGL rendering backend on the OpenGL 1.x each of them provides (MiniGL over Warp3D, resp. TinyGL), see AmigaOS 4.1 (PowerPC) and MorphOS (PowerPC)

The code is mainly optimized to run on 64-bit x86 and ARM processors including advanced instruction sets. Additionally, the application requires a rendering backend — OpenGL 3.3, OpenGL|ES 3.0, WebGL 2.0, Direct3D 11, Vulkan, Metal and a CPU software rasterizer are all fully supported and interchangeable, so any of them can be used depending on the target platform. The platforms above are where that stops being a free choice: seven of the consoles have no programmable shaders at all and are driven by one of six rendering backends written for their fixed-function graphics hardware (the Wii and the GameCube share one), a seventh such backend drives the fixed-function OpenGL 1.x of the two PowerPC Amigas, while the PlayStation Vita and the PlayStation 3 have real shaders and drive their native APIs — sceGxm and libgcm — directly. The classic Amiga has no usable graphics hardware at all, so there the software rasterizer is the renderer rather than a fallback. See also the list of features each console supports, which is where the platform differences are the largest.

License

This project is licensed under the terms of the GNU General Public License v3.0. See also Third-party components for the licenses of the libraries used.