Source

Infinite Props is open source under the Apache 2.0 license. Clone it, build it, change it.

The repository

Branches

main holds the releases, each tagged vX.Y.Z. Day-to-day work lands on develop.

Verified releases

Every release publishes SHA256SUMS and per-platform validation records next to the SDKs, the WebAssembly module, this website and the source archive.

Specification first

The .iprop format is a written contract. Semantic changes update spec/ before the code, and frozen versions never change.

Apache 2.0

Use it in commercial and open-source games alike. See LICENSE. The compiled props shown on the home page are not included: they are all rights reserved.

Build from source

You need a C++20 compiler, CMake 3.24 or later and zlib 1.2.9 or later (Linux: zlib1g-dev; macOS: the platform SDK; Windows: vcpkg).

git clone https://github.com/jCzachor6/infinite-props.git
cd infinite-props
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel
ctest --test-dir build --output-on-failure

The tools land in build/tools/. The optional SFML and Godot backends are described under Backends.

The WebAssembly module and this website

emcmake cmake -S backends/html5 -B build/wasm -DCMAKE_BUILD_TYPE=Release
cmake --build build/wasm --parallel
sh website/prepare.sh build/wasm build/tools
npm --prefix website ci
npm --prefix website run build
node website/test/release-smoke.js website/dist build/tools

The smoke test checks every link and compares the website's WebAssembly renders with the native tools pixel for pixel.

Repository layout

pathwhat lives there
spec/the format and VM specifications, one self-contained current contract
runtime/the reference interpreter: loader, validator and VM
language/, compiler/the .ips front end and the compiler with its optimizer
tools/ipc, ipgen, ipsheet, ipdis, ipval, ipa
backends/the C API, HTML5/WASM, SFML and Godot
editor/the VS Code extension
docs/, examples/the handbook sources, guides, recipes and example assets, plus the compiled props of the home page
tests/, benchmarks/unit, golden and conformance tests; runtime and compiler benchmarks
website/this site

Contributing

  • The specification is the contract. Change spec/ first, then the code.
  • Determinism is sacred. No time, threads or FMA contraction in generation; branches on integers only.
  • Golden tests are the law. A change to a golden image or output is a breaking change.

The full guide is in CONTRIBUTING.md; issues and ideas go to the issue tracker.