Kissrule

This is a lightweight rule-based system for game AI micro-decisions, written in C++20. It lets you register object hierarchies as fact sources, load rule sets from files, and evaluate them at runtime with lazy fact fetching and caching.

Copyright © 2026 Laurent Couvidou
Contact: hello@lorancou.net
Source: https://codeberg.org/lorancou/kissrule

Library features

Coding convention

We're loosely following the LLVM coding standards: https://llvm.org/docs/CodingStandards.html, but use snake_case for everything: types, variables and functions. Private member variables end with an underscore: member_variable_. Template parameters are framed with two underscores: _type_.

Known limitations

Third-party dependencies

All vendored libraries live under third_party/. Each directory contains a license file.

Library Purpose License
doctest Test framework MIT
nlohmann/json JSON parsing MIT
tomlplusplus TOML parsing MIT

Future plans