Book of Odin
5×3 line slot with a BOOK Wild/Scatter, a selected expanding symbol in Free Spins, and a 5×3 Hold & Win that triggers in either the base game or Free Spins.
book-of-odin-v2EXISTS AS A DRAFT. NOT FOR PRODUCTION OR CERTIFICATION.The Hold & Win described here is implemented, measured and seeded as a new config version. It is Draft: not frozen, not published, not enabled for any operator. Every RTP, frequency, volatility and maximum-exposure figure below is an internal measurement of an unfrozen pack.
Config versions
Two versions of one game. They share a game_id and coexist as separate game_configs rows.
book-of-odin-v2 also carries a canonical config hash —
b3ac1b12f3225dafb6f098a01ba2ae3237383a523e217a84abe22d8544cc4f40 — computed by the
repository's single canonicalisation implementation. That is the identity the runtime records
on durable feature rows; the SHA-256 above identifies the source file.
Seed migration: apps/game-engine/migrations/024_seed_book_of_odin_v2.sql. It does not touch
migration 008.
The previously recorded revision 4e1e907d245b9cc9656d262336121f7655a24e5e was stale — it did
not match backend HEAD when this work began — and is replaced here together with the v2
identity, not separately.
Source-of-truth boundary
The backend pack is the mathematical source of truth. This folder records the design, the
measured result and the evidence trail; it does not duplicate the complete paytable, reels or
weights. The seed migration's config_json is generated from the pack and must never be edited
by hand.
What v2 is, in one paragraph
Whole-game RTP 97.9979% against a 98.00% target (tolerance ±0.10 pp), composed of 39.51% base lines, 30.67% Free Spins lines and expansion, 25.08% base-origin Hold & Win and 2.73% FS-origin Hold & Win, with 0.29% of GRAND inside the last two. Free Spins trigger 1 in 91.7 base spins; Hold & Win 1 in 146.0. The base and Free Spins terms are exact enumerations; the Hold & Win terms are seeded Monte Carlo over 5 000 000 features with a stated interval.
v2 does not inherit anything from v1. In particular it does not inherit v1's ~9.7% Free Spins trigger rate — that rate is a mechanical consequence of v1's reel layout rather than a tuning slip, and v2 targets ~1% by design. It also does not inherit weights or RTP from magic-vault-5x3 or hold_and_win_reference.
Status split
Known limitation carried forward
Whole-game batch simulation is unavailable for this pack. FreeSpinsExecutor — the driver
RunRound and RunBatch use — spins the base reel set and expands the configured symbol,
ignoring FreeSpinsConfig.Variants entirely, so it does not model this game's free spins. The
RTP decomposition routes around it using drivers that are faithful to the runtime, and the
limitation is proven rather than described by
libs/mathengine/games/book_of_odin/reference_driver_test.go.