Dependencies and licences¶
Every piece of software, font and asset the Kreative Kompas Engine uses but did not write itself, what it is for, and what its licence asks of the engine and of games you ship with it.
Not legal advice. This page is a careful plain-language reading of each licence, written so nobody is surprised. If money or a publisher contract depends on it, have a lawyer check the licence texts themselves (they are all in
THIRD_PARTY_LICENSES.txtin every download).
The short version¶
- The engine is MIT (LICENSE). Everything it builds into a game is under a permissive licence too: MIT, BSD, zlib, Apache-2.0, the FreeType License, the SIL Open Font License, or public domain / CC0.
- Nothing copyleft goes into a game. No GPL or LGPL code is compiled into a KKE game. (GPL tools such as GCC and Wine are used to build and test; using a GPL tool doesn't put its licence on what it produces.)
- What those licences ask of you comes down to one thing: ship their
licence texts with your game. The release pipeline does that for you
(
THIRD_PARTY_LICENSES.txt, see below). - Not open source, and flagged below: the optional Steam Audio module contains Intel's IPP under Intel's own licence, the Android NDK comes with Google's SDK terms, and the paid Synty art packs, which are never in the repository or a download.
- Every new dependency must get a row here. CI fails otherwise (Adding a dependency).
What ships with a game¶
When you build a download with tools/packaging/package.sh (what the
release workflow runs, RELEASES.md), the archive contains:
LICENSE.txt: the engine's MIT licence.THIRD_PARTY_LICENSES.txt: the licence text of every library in the build, collected bytools/packaging/third_party_licenses.shfrom the fetched sources (build/_deps/*-src),external/FEMFX, the fonts inassets/fontsand the notices inLICENSES/. Windows builds add the MinGW-w64 runtime notices, because that runtime is linked into every.exe. If FreeType is in the build, the file opens with the credit line the FreeType License asks for.
The dedicated-server Docker image (docker/server/Dockerfile) carries the
same two files in /opt/kke/.
If you ship a game another way (Steam, itch.io, your own installer): include those two files, or put their contents in your game's credits or "licences" screen. That covers every attribution requirement below. Keep them even for libraries whose licence doesn't strictly require it (public-domain ones): it costs nothing and credits their authors.
Built into every game¶
Fetched by CMake at configure time (FetchContent), pinned to the version
shown. "Key" is the name the dependency check looks for.
| Library | Key | Version | What it's for | Licence | What the licence asks |
|---|---|---|---|---|---|
| Vulkan-Headers | vulkan_headers |
v1.3.290 | Vulkan API headers, only when no Vulkan SDK is installed | Apache-2.0 (a few files MIT) | Ship the licence text; note changes to their files |
| volk | volk |
vulkan-sdk-1.4.304.0 | Loads Vulkan functions at run time | MIT | Keep the copyright notice |
| Vulkan Memory Allocator | vma |
v3.1.0 | GPU memory management | MIT | Keep the copyright notice |
| SDL 3 | SDL3 |
release-3.4.16 | Windows, input, gamepads, audio devices | zlib | Nothing for binaries (don't misrepresent authorship; mark altered source) |
| GLM | glm |
1.0.3 | Vector and matrix maths | MIT (or the "Happy Bunny" MIT variant) | Keep the copyright notice |
| stb | stb |
commit 2c980bb (2026-08-01) | Image loading (stb_image) |
MIT or public domain (Unlicense) | Nothing under the public-domain option |
| Dear ImGui | imgui |
v1.91.6 | Developer debug panels | MIT | Keep the copyright notice |
| FreeType | freetype, Freetype |
VER-2-14-3 when fetched; the system's on Linux | Font rendering for RmlUi | FreeType License (FTL), chosen over its GPL-2 option | Credit "portions copyright The FreeType Project" in the documentation (done at the top of THIRD_PARTY_LICENSES.txt) |
| RmlUi | rmlui |
6.3 | Game UI (HTML/CSS-like menus and HUD) | MIT | Keep the copyright notice |
| nlohmann/json | nlohmann_json |
v3.11.3 | JSON config and data files | MIT | Keep the copyright notice |
| spdlog (with its bundled fmt) | spdlog |
v1.14.1 | Logging | MIT (fmt: MIT) | Keep both copyright notices |
| ufbx | ufbx |
v0.23.0 | FBX model and animation import | MIT or public domain (Unlicense) | Nothing under the public-domain option |
| yaml-cpp | yaml_cpp |
yaml-cpp-0.9.0 | YAML versions of every data file (pack.yml, server.yml, settings.yml, ...; kke/DataFile.h, docs/DATA_FILES.md) |
MIT | Keep the copyright notice |
| meshoptimizer | meshoptimizer |
v1.3 | Crowd LODs: welding and simplifying skinned characters (kke/MeshLod.h, the goblin horde) | MIT | Keep the copyright notice |
| Monocypher | monocypher |
4.0.2 | Signatures and hashing for sealed data, anti-cheat and Kreative DRM | BSD-2-Clause or CC0-1.0 | Nothing under the CC0 option |
| miniaudio | miniaudio |
0.11.22 | Audio mixing and output | Public domain (Unlicense) or MIT-0 | Nothing |
| Lua | lua |
5.4.7 | Gameplay scripting | MIT | Keep the copyright notice |
| SQLite | sqlite |
3.53.4 | Built-in save and storage database | Public domain | Nothing |
| Recast & Detour (recastnavigation) | recastnavigation |
v1.6.0 | Navigation meshes and path finding for the AI core (kke::ai::NavMesh, AI.md) |
zlib | Nothing for binaries (don't misrepresent authorship; mark altered source) |
| genann | genann |
v1.1.1 | The small neural network behind teaching animals by example (kke::ai::LearnedPolicy, AI.md) |
zlib | Nothing for binaries (don't misrepresent authorship; mark altered source) |
| Jolt Physics | JoltPhysics |
v5.6.0 | Rigid bodies, collision, character controller, ragdolls (KKE_ENABLE_JOLT, on by default) |
MIT | Keep the copyright notice |
Optional modules¶
Each one is a CMake option; the default is in brackets.
| Library | Key | Version | Option | What it's for | Licence | What the licence asks |
|---|---|---|---|---|---|---|
| ENet | enet |
v1.3.18 | KKE_ENABLE_NET [on] |
Networking transport | MIT | Keep the copyright notice |
| Opus | opus |
v1.5.2 | KKE_ENABLE_VOICE [on] |
Voice chat codec | BSD-3-Clause, plus royalty-free patent licences from the codec's patent holders | Keep the notice; don't use the authors' names to promote your game |
| RNNoise | rnnoise |
v0.1.1 | KKE_ENABLE_VOICE [on] |
Microphone noise suppression | BSD-3-Clause | Keep the notice; no endorsement |
| SpeexDSP | speexdsp |
SpeexDSP-1.2.1 | KKE_ENABLE_VOICE [on] |
Echo cancelling for voice chat | BSD-3-Clause | Keep the notice; no endorsement |
| hiredis | hiredis |
v1.2.0 | KKE_ENABLE_VALKEY [on] |
Storage on a Valkey/Redis server | BSD-3-Clause | Keep the notice; no endorsement |
| libpq | PostgreSQL |
the system's (libpq-dev, libpq5) |
KKE_ENABLE_POSTGRES [off] |
Storage in PostgreSQL | PostgreSQL License (MIT-like) | Keep the notice. Linked from the system, not bundled |
| AMD FEMFX (our fork, vendored) | FEMFX |
v0.1.0 + KKE changes (KKE_FORK.md) | KKE_ENABLE_FEMFX [off; on in releases] |
Soft bodies, melting, fracture | MIT; contains Sony's vector-maths library under BSD-3-Clause (NOTICES.txt) |
Keep both notices |
| Steam Audio | steamaudio, ValveSoftware/steam-audio |
4.6.1 (prebuilt SDK) | KKE_ENABLE_STEAM_AUDIO [off] |
Measured-HRTF 3D audio for headphones | Apache-2.0; the prebuilt library contains Intel IPP under the Intel Simplified Software License (proprietary, redistribution allowed), plus FFTS, PFFFT, MySOFA (BSD) and Embree (Apache-2.0) | Ship its LICENSE.md and THIRDPARTY.md (the collector does). See Things to watch |
Code, fonts and assets kept in this repository¶
| What | Key | Where | Licence | What the licence asks |
|---|---|---|---|---|
| Noto Sans (Regular, Bold, Italic) | NotoSans-Regular.ttf, NotoSans-Bold.ttf, NotoSans-Italic.ttf |
assets/fonts/, shipped with the demos |
SIL Open Font License 1.1 | Ship the licence text with the fonts (NOTO-LICENSE.txt, in every download); don't sell the fonts on their own; a modified font needs a new name |
| Noto Color Emoji | NotoColorEmoji.ttf |
assets/fonts/, shipped with the demos |
SIL Open Font License 1.1 | Same as above |
| AgX tone mapping (Benjamin Wrensch's minimal AgX) | AgX-minimal-MIT.txt |
shaders/tonemap.glsl, notice in LICENSES/ |
MIT | Keep the notice (in the shader and in every download) |
| ACES fit (Krzysztof Narkowicz, "ACES Filmic Tone Mapping Curve", 2016) | shaders/tonemap.glsl |
Published as a formula on his blog, no licence stated | A five-number curve fit; formulas like this are generally not treated as copyrightable (our reading, not verified). Credited in the shader and here | |
| Universal Animation Library mannequin (Quaternius) | UAL1_Standard.fbx |
assets/animations/, not in downloads |
CC0 (public domain) | Nothing |
| Test texture | test_icon.png |
assets/textures/ |
The project's own (MIT) | |
| Kreative Kompas logo and banner | assets/branding/ |
The project's branding (README "Licence"); our reading is that the MIT grant doesn't cover it | Games may say "made with KKE" but shouldn't use the logo as their own |
Paid art (Synty packs) is never in the repository or a download: those
packs are licensed per buyer. Each developer brings their own copy
(assets/README.md, SCENES.md);
package.sh refuses to package anything that looks like one.
System libraries (on the player's machine, not shipped)¶
Linked or loaded from the operating system when the game runs. Nothing to ship, since the game doesn't distribute them.
| What | Key | What it's for | Licence |
|---|---|---|---|
| Vulkan loader and GPU driver | Vulkan |
Graphics | Loader: Apache-2.0; drivers: their vendor's terms |
| Linux desktop libraries (X11, Wayland, libdecor, ALSA/PulseAudio, D-Bus, udev, xkbcommon, EGL) | Loaded by SDL at run time | MIT, LGPL (dynamically linked: allowed in closed games) | |
| FreeType (Linux) | Font rendering | FTL / GPL-2 dual | |
| C and C++ runtime (glibc, libstdc++ on Linux) | LGPL / GPL with the GCC Runtime Library Exception: no obligations for your game | ||
| VulkanProfiler layer | KKE_ENABLE_GPU_PROFILER [off], developer tool |
Installed by the developer, not shipped |
On Windows, the MinGW-w64 C runtime and winpthreads (ZPL-2.1, MIT, BSD
and public-domain parts) are linked statically into each .exe, so their
notices go in THIRD_PARTY_LICENSES.txt; libstdc++ and libgcc are linked
statically too, under the GCC Runtime Library Exception (no notice needed).
Build and test tools (never in a game)¶
Used to compile, test or package. Their licences cover the tools, not what you build with them.
| What | Key | Licence | Notes |
|---|---|---|---|
| GoogleTest | googletest |
BSD-3-Clause | Unit tests only (KKE_ENABLE_TESTS) |
| wayland-scanner | wayland_scanner_src |
MIT | Built from source (1.26.0) to generate SDL's Wayland code; needs expat and optionally libxml-2.0 (both MIT) |
| CMake, Ninja | cmake, ninja-build, ninja |
BSD-3-Clause, Apache-2.0 | ninja is the Chocolatey package on Windows CI |
| GCC, Clang, MinGW-w64 | build-essential, clang, mingw-w64, g++-mingw-w64-x86-64-posix, gcc-mingw-w64-x86-64-posix |
GPL-3 with the GCC Runtime Library Exception; Apache-2.0 with LLVM exception; MinGW-w64: ZPL/MIT/BSD | The compilers' licences don't reach your game (runtime exceptions) |
| MSVC (Visual Studio Build Tools) | ilammy/msvc-dev-cmd |
Microsoft's licence (proprietary) | Only the Windows build check in platforms.yml; releases use MinGW-w64, so no Microsoft runtime is shipped |
| Vulkan SDK | humbletim/setup-vulkan-sdk |
LunarG's SDK: mostly Apache-2.0 | platforms.yml only |
| Android NDK r27c | dl.google.com |
Android SDK License Agreement (Google's terms, not open source); its C++ runtime is Apache-2.0 with LLVM exception | docker/android.Dockerfile. See Things to watch |
| glslang, SPIRV-Tools | glslang-tools, spirv-tools |
BSD-3-Clause / Apache-2.0 | Compile shaders to SPIR-V |
| Wine | wine64 |
LGPL-2.1 | Runs Windows tests in the Windows build container |
| Build-machine packages (Ubuntu 24.04) | ca-certificates, curl, git, pkg-config, unzip, zip, python3, xvfb, xauth, xdotool, imagemagick, lcov, vulkan-tools, mesa-vulkan-drivers, fonts-noto-core, fonts-noto-color-emoji |
Various open-source licences (see each package's /usr/share/doc/<package>/copyright) |
Fetching, packaging, headless test runs, screenshots, coverage |
| Development headers (Ubuntu 24.04) | libvulkan-dev, libfreetype-dev, libudev-dev, libdbus-1-dev, libx11-dev, libxext-dev, libxrandr-dev, libxinerama-dev, libxcursor-dev, libxi-dev, libxss-dev, libxtst-dev, libwayland-dev, wayland-protocols, libxkbcommon-dev, libdrm-dev, libegl-dev, libgl1-mesa-dev, libegl1-mesa-dev, libasound2-dev, libdecor-0-dev, libexpat1-dev, libxml2-dev, libpq-dev |
MIT, BSD, LGPL, FTL (headers of the system libraries above) | Compile against the system libraries |
| Server image runtime packages | libfreetype6, libpq5 |
FTL, PostgreSQL License | In the dedicated-server image, with their copyright files in /usr/share/doc |
Docker base images¶
| Image | Key | Used by | Licence |
|---|---|---|---|
| Ubuntu 24.04 | ubuntu |
Build containers, the dedicated-server image | A Linux distribution: many licences, including GPL. Anyone publishing an image built on it is expected to be able to point to the sources, which Ubuntu provides (our reading) |
| Debian bookworm-slim | debian |
Website build stage | Same as Ubuntu |
| Python 3.12-slim | python |
Docs build stage | PSF License (+ Debian base) |
| nginx-unprivileged 1.27 | nginxinc/nginx-unprivileged |
Serves engine.kreative-kompas.com | BSD-2-Clause (+ Alpine base) |
GitHub Actions¶
| Action | Key | Licence |
|---|---|---|
| checkout, upload-artifact, download-artifact, setup-python | actions/checkout, actions/upload-artifact, actions/download-artifact, actions/setup-python |
MIT |
| msvc-dev-cmd | ilammy/msvc-dev-cmd |
MIT |
| setup-vulkan-sdk | humbletim/setup-vulkan-sdk |
MIT |
Website and docs site¶
| What | Key | Licence | Notes |
|---|---|---|---|
| Hugo (extended) 0.134.3 | gohugoio/hugo |
Apache-2.0 | Builds the showcase site |
| MkDocs, Material for MkDocs, PyMdown Extensions | mkdocs, mkdocs-material, pymdown-extensions |
BSD-2-Clause, MIT, MIT | Build the docs site |
| Inter and JetBrains Mono (Fontsource 5.3.0 variable, latin) | website/static/fonts/ |
SIL Open Font License 1.1 | Served from the site itself; licence texts next to the font files |
| Font Awesome Free 6.5.1 | font-awesome |
Icons CC BY 4.0, fonts OFL-1.1, code MIT | Loaded from cdnjs; the attribution CC BY asks for is in the CSS file's header |
Things to watch¶
- Steam Audio is optional and off by default for a reason: its own code
is Apache-2.0, but the prebuilt
phononlibrary includes Intel IPP under Intel's proprietary (though freely redistributable) licence. A game that turns it on must shipTHIRDPARTY.md(the collector does) and is no longer 100% open source. The engine's own HRTF path needs none of it. - Android NDK: downloading it means accepting Google's Android SDK License Agreement. That governs the developer's use of the toolkit; the runtime it adds to a game (libc++) is Apache-2.0 with the LLVM exception.
- Website fonts are served from the site itself, not Google Fonts: loading them from Google's servers would send visitors' IP addresses to Google, which a German court (LG München I, 2022) found a GDPR violation without consent. Keep it that way when changing fonts.
- FreeType on Windows is compiled in, so the FreeType credit must stay
in the documentation (it is at the top of
THIRD_PARTY_LICENSES.txt). - Synty packs and other paid art: never commit, never package (assets/README.md).
- Kreative Kompas branding isn't MIT: forks and games may say they use KKE but can't present the logo as their own.
Licences in plain words¶
| Licence | What it lets you do | What it asks |
|---|---|---|
| Public domain, CC0, Unlicense, MIT-0 | Anything | Nothing |
| MIT, BSD-2-Clause, zlib, PostgreSQL | Anything, including closed and paid games | Keep the copyright notice and licence text with the software (zlib: only for source) |
| BSD-3-Clause | As MIT | As MIT, and don't use the authors' names to promote your product |
| Apache-2.0 | As MIT, plus a patent licence from the contributors | Ship the licence and any NOTICE file; say if you changed their files |
| FreeType License (FTL) | As BSD | Credit the FreeType Project in your documentation |
| SIL Open Font License 1.1 | Use, embed and ship the font in any game, free or paid | Ship the licence with the font; don't sell the font alone; rename a modified font |
| CC BY 4.0 | Anything | Credit the author |
| LGPL, GPL | Only reach KKE through system libraries and build tools; none is compiled into a game |
Adding a dependency¶
The engine prefers well-known open-source libraries under the permissive licences above, or writing it ourselves. Before adding one:
- Check the licence. MIT, BSD, zlib, Apache-2.0, OFL, public domain or CC0: fine. GPL, AGPL, LGPL for anything compiled into a game, "free for non-commercial use", or proprietary: ask first, and it must be an option that is off by default.
- Pin a version (a tag or a commit, never a branch), so the licence and the code can't change under us.
- Add a row to the right table on this page, with its key in backticks, the version, what it's for, the licence and what it asks.
- Make sure its licence ships. Anything fetched with
FetchContentis picked up automatically when it has aLICENSE/COPYING-style file at the top of its source. Otherwise, extendtools/packaging/third_party_licenses.sh, or, for code copied into the repository, add a notice file toLICENSES/and keep the notice in the source file.
CI runs python3 tools/ci/check_dependencies.py. It finds dependencies in
CMake (FetchContent_Declare, ExternalProject_Add, CPMAddPackage,
find_package, pkg_check_modules), external/, LICENSES/, assets/,
Dockerfiles (FROM, apt-get install, downloads), workflows (uses:,
apt-get/choco install, downloads), pip requirements files and the
website's <link>/<script> URLs, and fails if any of their keys is
missing from this page. Code pasted into a source file is the one thing
it can't see: add its notice to LICENSES/ yourself.