Skip to content

Verification

Method

Four implementations calculate the game:

Implementation File Method
Excel workbook excel/TacklinTheKraken_TheoCalc.xlsx Formulas. Exact.
Exact calculator gamemath/exact_calc.py Python with exact fractions
Game engine and simulator web/js/engine.js, sim/simulate.mjs Monte Carlo simulation with the engine of the playable game
C++ simulator sim_cpp/krakensim.cpp Monte Carlo simulation with its own C++ engine. It made the simulation results of this document.

The script tools/verify_all.py compares them. It does these checks:

  1. The reel strips obey the design rules. The script also examines each window of each reel: one special symbol at most, and one or more symbols that are not AUS symbols.
  2. The inputs of the workbook are equal to the configuration file.
  3. The results of the workbook are equal to the results of the exact calculator.
  4. The script changes the inputs in a copy of the workbook and does check 3 again. It uses three changed configurations:
    • A: new pays (with 1 OAK and 2 OAK pays), new fish values and weights, new level thresholds, spins and multipliers, multiplier rule fish.
    • B: new reel strips with KEY symbols on all 5 reels, more FS symbols, a bet of 25 credits.
    • C: reel strips with random manual changes that do not obey the gap rule.
  5. The JavaScript engine and an independent Python evaluator give the same result for 40,000 random spins.
  6. The C++ simulator and the JavaScript engine give the same result for 100,000 random spins.
  7. The simulation agrees with the exact values: the total RTP, each RTP component, the trigger frequency and the level probabilities.

Microsoft Excel also calculated the workbook of version 2.0.0. The result was the same as the exact calculator (total RTP 96.1999706942%).

Results

18 of 18 checks passed.

Check Result Detail
Reel strips obey the design rules (gap, AUS limit, placement, windows) PASS
Workbook inputs equal config/game_config.json PASS
Workbook equals exact_calc.py (shipped configuration) PASS largest relative difference 5.40e-15
Workbook check cells are all OK PASS 7 check cells
Workbook equals exact_calc.py (variant A: new pays, values, weights, levels, multiplier rule 'fish') PASS largest relative difference 2.74e-15
excel_to_config.py reads variant A correctly PASS
Workbook equals exact_calc.py (variant B: new reel strips, KEY on all 5 reels, more FS, bet 25) PASS largest relative difference 4.96e-15
excel_to_config.py reads variant B correctly PASS
Workbook equals exact_calc.py (variant C: reel strips with random hand edits) PASS largest relative difference 4.26e-15
excel_to_config.py reads variant C correctly PASS
JavaScript engine equals the Python evaluator on random stops PASS 40000 spins compared, 0 different
C++ simulator equals the JavaScript engine on random stops PASS 100000 spins compared, 0 different
Simulated RTP is within 3 standard errors of the exact RTP PASS sim 0.962015, exact 0.962000, SE 0.000010, z = +1.48, rounds 1.00e+12
Simulated RTP component baseWays is near the exact value PASS difference -0.000003
Simulated RTP component baseFish is near the exact value PASS difference +0.000003
Simulated RTP component bonus is near the exact value PASS difference +0.000015
Simulated trigger frequency is near the exact value PASS relative difference -0.00001
Simulated level probabilities are near the exact values PASS largest difference 0.00001

Playable game

These tests used the game in a browser.

Test Result
Fish value swap after the wager 501 ms to 505 ms. All five reels were in motion.
Reel stops, usual speed 1.28 s to 2.32 s after the wager
KEY anticipation on reels 4 and 5 Shown after a KEY symbol on reel 1, 2 or 3
FS anticipation Shown on the subsequent reels after two FS symbols
Kraken slow motion: the kraken stops in the window Reel 5 decreased its speed from 34 to 2.8 symbols for each second. The slow motion part took 1.4 s. The collect paid 2000 credits.
Kraken slow motion: the kraken stops one row below the window Slow motion until the reel stopped (2.0 s). No collect for the kraken.
Kraken slow motion: the kraken passes by Slow motion for 1.65 s. Then the reel increased its speed and stopped.
KEY anticipation with no kraken near the stop No slow motion. The reel stopped at the usual speed.
Skip request during the slow motion, turbo mode, slow motion set to off The reel stopped quickly. Turbo: 6.4 symbols for each second. Off: no slow motion.
Forced 3 FS trigger, free spins to level 3 The balance was equal to the engine results
Fast rounds in sequence (187 rounds with version 1.0.0, 47 rounds with version 1.1.0) No error. The balance was equal to the start balance minus the bets plus the wins.
Forced KEY with FISH4 (the kraken), version 1.1.0 The collect paid 500 credits (usual kraken) and 2000 credits (golden kraken). The two assets showed correctly in sets A, B and C.
Free spins started at level 4 with two KEY symbols in one spin Each KEY collected each fish. The x10 multiplier applied. The balance was correct.
Asset sets A, B and C, and an asset of a different set for one symbol Shown correctly
Configuration with a WILD symbol on reel 1 Rejected with a message
Version 2.0.0: KEY symbols on reels 1, 2 and 3; all forced results of the demo suite Found on the reel strips and paid correctly. No engine warnings.
Version 2.0.0: two KEY symbols in one free spin Each KEY collected each value symbol. The balance was correct.
Theme sets D and E with their own game texts The symbols and the texts showed correctly. A forced collect of the golden top symbol paid 2005 credits.
Theme sets F, G and H with their own game texts The symbols and the texts showed correctly
All 8 asset sets Each set has all 34 asset files. The game showed no placeholder.
Default asset set A browser with no saved selection showed set B (Neon flat)
The game in the built document (page Play the game), from a web server The game started. The math version was 2.0.0. The balance was equal to the start balance minus the bets plus the wins. The browser showed no error.

Limits of the verification

  • The simulation has a standard error of 0.001% RTP. It cannot show a difference smaller than this.
  • The random number generator of the playable game is xoshiro128**. The random number generator of the C++ simulator is xoshiro256++. They are not certified for real money play.
  • An independent test laboratory did not examine this model.