Skip to content

Interest Engine v0.2.0

Latest

Choose a tag to compare

@PullsarDev PullsarDev released this 24 Oct 07:24
52e33c4

Interest Engine v0.2.0 adds configurable event novelty directionality to the standalone C++20 attention-selection library for game NPCs.

Features

  • CandidateSnapshot::eventDirectionality controls novelty's angular gate independently of raw preference scoring. The default 1.f preserves the legacy numerical path exactly; 0.f removes novelty's angle penalty, and intermediate values interpolate.
    For example, an important event behind an observer can contribute to novelty without changing the angular preference used for ordinary stimuli.
  • CandidateTrace::noveltyGate exposes the actual rounded gate used by novelty scoring.
  • Directionality must be finite and within [0,1]. Invalid values reject the candidate as InvalidEvent, including when events are absent or novelty is disabled.
  • Distance gating, perception strength, raw scoring, temporal policy and allocation-free prepared Step() calls are preserved.

Compatibility

Public structs include new fields. Rebuild consumers with matching headers and library; positional trace aggregate initializers must account for noveltyGate.

On tested Windows x64 MSVC and Linux x86-64 GCC/Clang builds, CandidateTrace remains 96 bytes with all 17 pre-existing field offsets unchanged. These verified layouts are not a general ABI guarantee.

Verification

All 10 GitHub Actions jobs passed for this version. Coverage includes MSVC, GCC and Clang Debug/Release builds, no-exceptions/no-RTTI checks, and Clang ASan/UBSan. Each job passed 15 CTest checks; all three Release consumer-integration checks also passed.

Installation

Requires CMake 3.20 or newer and a C++20 compiler.

git clone --branch v0.2.0 --depth 1 https://github.com/PullsarDev/InterestEngine.git
cd InterestEngine
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release --parallel 2
ctest --test-dir build -C Release --output-on-failure

For application integration, use add_subdirectory() and link InterestEngine::Core. See the README for the API example and platform-specific commands.

Known limitations

  • Documented desktop measurements at default directionality were approximately 0.8–3.8% slower in nonempty single-observer configurations and 1.0–2.0% slower in reference variants than v0.1.0. These observations do not establish a universal overhead bound or a performance improvement.
  • API, ABI and tuning compatibility may change before 1.0. Cross-platform bit-exact output is not guaranteed; other architectures remain unverified.
  • Gating, score saturation, margins and dwell can limit target changes. Tests and benchmarks use synthetic scenarios. The host controls perception strength, event generation and candidate range, and supplies snapshot gathering, animation and scheduling.

License

Copyright 2026 PullsarDev. Licensed under the Apache License 2.0. Test-support attribution is retained in third-party notices.