Skip to content

Commit 600a376

Browse files
authored
Merge pull request #107 from StakeEngine/volatility-verification
Mirror Stake Engine publish math checks for bet-level verification.
2 parents 403c9fa + 8c6037e commit 600a376

16 files changed

Lines changed: 149 additions & 37 deletions

File tree

‎.github/workflows/tests.yml‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
name: Tests
2+
3+
on:
4+
pull_request:
5+
branches: [main]
6+
7+
jobs:
8+
test:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- uses: actions/checkout@v4
12+
13+
- uses: actions/setup-python@v5
14+
with:
15+
python-version: "3.13"
16+
17+
- name: Install dependencies
18+
run: pip install -r requirements.txt
19+
20+
- name: Run tests
21+
run: pytest tests/ -v

‎games/0_0_cluster/game_config.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def __init__(self):
2323
self.working_name = "Sample Cluster Game"
2424
self.wincap = 5000.0
2525
self.win_type = "cluster"
26-
self.rtp = 0.9700
26+
self.rtp = 0.9670
2727
self.construct_paths()
2828

2929
# Game Dimensions

‎games/0_0_cluster/game_optimization.py‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ def __init__(self, game_config):
2121
"base": {
2222
"conditions": {
2323
"wincap": ConstructConditions(
24-
rtp=0.01, av_win=wincaps["base"], search_conditions=wincaps["base"]
24+
rtp=0.001, av_win=wincaps["base"], search_conditions=wincaps["base"]
2525
).return_dict(),
2626
"0": ConstructConditions(rtp=0, av_win=0, search_conditions=0).return_dict(),
2727
"freegame": ConstructConditions(
28-
rtp=0.37, hr=200, search_conditions={"symbol": "scatter"}
28+
rtp=0.376, hr=200, search_conditions={"symbol": "scatter"}
2929
).return_dict(),
3030
"basegame": ConstructConditions(hr=3.5, rtp=0.59).return_dict(),
3131
},
@@ -67,9 +67,9 @@ def __init__(self, game_config):
6767
"bonus": {
6868
"conditions": {
6969
"wincap": ConstructConditions(
70-
rtp=0.01, av_win=wincaps["bonus"], search_conditions=wincaps["bonus"]
70+
rtp=0.001, av_win=wincaps["bonus"], search_conditions=wincaps["bonus"]
7171
).return_dict(),
72-
"freegame": ConstructConditions(rtp=0.96, hr="x").return_dict(),
72+
"freegame": ConstructConditions(rtp=0.966, hr="x").return_dict(),
7373
},
7474
"scaling": ConstructScaling(
7575
[

‎games/0_0_expwilds/game_config.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def __init__(self):
1616
self.working_name = "Expanding Wilds"
1717
self.wincap = 5000
1818
self.win_type = "lines"
19-
self.rtp = 0.97
19+
self.rtp = 0.967
2020
self.construct_paths()
2121

2222
# Game Dimensions

‎games/0_0_expwilds/game_optimization.py‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ def __init__(self, game_config):
2121
"base": {
2222
"conditions": {
2323
"wincap": ConstructConditions(
24-
rtp=0.01, av_win=wincaps["base"], search_conditions=wincaps["base"]
24+
rtp=0.001, av_win=wincaps["base"], search_conditions=wincaps["base"]
2525
).return_dict(),
2626
"0": ConstructConditions(rtp=0, av_win=0, search_conditions=0).return_dict(),
2727
"freegame": ConstructConditions(
28-
rtp=0.37, hr=200, search_conditions={"symbol": "scatter"}
28+
rtp=0.376, hr=200, search_conditions={"symbol": "scatter"}
2929
).return_dict(),
3030
"basegame": ConstructConditions(hr=3.5, rtp=0.59).return_dict(),
3131
},
@@ -77,9 +77,9 @@ def __init__(self, game_config):
7777
"bonus": {
7878
"conditions": {
7979
"wincap": ConstructConditions(
80-
rtp=0.01, av_win=wincaps["bonus"], search_conditions=wincaps["bonus"]
80+
rtp=0.001, av_win=wincaps["bonus"], search_conditions=wincaps["bonus"]
8181
).return_dict(),
82-
"freegame": ConstructConditions(rtp=0.96, hr="x").return_dict(),
82+
"freegame": ConstructConditions(rtp=0.966, hr="x").return_dict(),
8383
},
8484
"scaling": ConstructScaling(
8585
[
@@ -118,10 +118,10 @@ def __init__(self, game_config):
118118
"superspin": {
119119
"conditions": {
120120
"wincap": ConstructConditions(
121-
rtp=0.01, av_win=wincaps["superspin"], search_conditions=wincaps["superspin"]
121+
rtp=0.001, av_win=wincaps["superspin"], search_conditions=wincaps["superspin"]
122122
).return_dict(),
123123
"0": ConstructConditions(rtp=0, av_win=0, search_conditions=0).return_dict(),
124-
"basegame": ConstructConditions(hr=1.9, rtp=0.96).return_dict(),
124+
"basegame": ConstructConditions(hr=1.9, rtp=0.966).return_dict(),
125125
},
126126
"scaling": ConstructScaling(
127127
[

‎games/0_0_lines/game_config.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def __init__(self):
2222
self.working_name = "Sample Lines Game"
2323
self.wincap = 5000.0
2424
self.win_type = "lines"
25-
self.rtp = 0.9700
25+
self.rtp = 0.9670
2626
self.construct_paths()
2727

2828
# Game Dimensions

‎games/0_0_lines/game_optimization.py‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ def __init__(self, game_config):
2222
"base": {
2323
"conditions": {
2424
"wincap": ConstructConditions(
25-
rtp=0.01, av_win=wincaps["base"], search_conditions=wincaps["base"]
25+
rtp=0.001, av_win=wincaps["base"], search_conditions=wincaps["base"]
2626
).return_dict(),
2727
"0": ConstructConditions(rtp=0, av_win=0, search_conditions=0).return_dict(),
2828
"freegame": ConstructConditions(
29-
rtp=0.37, hr=200, search_conditions={"symbol": "scatter"}
29+
rtp=0.367, hr=200, search_conditions={"symbol": "scatter"}
3030
).return_dict(),
31-
"basegame": ConstructConditions(hr=3.5, rtp=0.59).return_dict(),
31+
"basegame": ConstructConditions(hr=3.5, rtp=0.599).return_dict(),
3232
},
3333
"scaling": ConstructScaling(
3434
[
@@ -68,9 +68,9 @@ def __init__(self, game_config):
6868
"bonus": {
6969
"conditions": {
7070
"wincap": ConstructConditions(
71-
rtp=0.01, av_win=wincaps["bonus"], search_conditions=wincaps["bonus"]
71+
rtp=0.001, av_win=wincaps["bonus"], search_conditions=wincaps["bonus"]
7272
).return_dict(),
73-
"freegame": ConstructConditions(rtp=0.96, hr="x").return_dict(),
73+
"freegame": ConstructConditions(rtp=0.966, hr="x").return_dict(),
7474
},
7575
"scaling": ConstructScaling(
7676
[

‎games/0_0_lines_feature_match/game_config.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def __init__(self):
2222
self.working_name = "Sample Lines Game"
2323
self.wincap = 5000.0
2424
self.win_type = "lines"
25-
self.rtp = 0.9700
25+
self.rtp = 0.967
2626
self.construct_paths()
2727

2828
# Game Dimensions

‎games/0_0_lines_feature_match/game_optimization.py‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ def __init__(self, game_config):
2121
"base": {
2222
"conditions": {
2323
"wincap": ConstructConditions(
24-
rtp=0.01, av_win=wincaps["base"], search_conditions=wincaps["base"]
24+
rtp=0.001, av_win=wincaps["base"], search_conditions=wincaps["base"]
2525
).return_dict(),
2626
"0": ConstructConditions(rtp=0, av_win=0, search_conditions=0).return_dict(),
2727
"freegame": ConstructConditions(
28-
rtp=0.37, hr=200, search_conditions={"symbol": "scatter"}
28+
rtp=0.376, hr=200, search_conditions={"symbol": "scatter"}
2929
).return_dict(),
3030
"basegame": ConstructConditions(hr=3.5, rtp=0.59).return_dict(),
3131
},
@@ -50,9 +50,9 @@ def __init__(self, game_config):
5050
"bonus": {
5151
"conditions": {
5252
"wincap": ConstructConditions(
53-
rtp=0.01, av_win=wincaps["bonus"], search_conditions=wincaps["bonus"]
53+
rtp=0.001, av_win=wincaps["bonus"], search_conditions=wincaps["bonus"]
5454
).return_dict(),
55-
"freegame": ConstructConditions(rtp=0.96, hr="x").return_dict(),
55+
"freegame": ConstructConditions(rtp=0.966, hr="x").return_dict(),
5656
},
5757
"scaling": ConstructScaling([]).return_dict(),
5858
"parameters": ConstructParameters(

‎games/0_0_scatter/game_config.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def __init__(self):
2222
self.working_name = "Sample scatter pay (pay anywhere)"
2323
self.wincap = 5000.0
2424
self.win_type = "scatter"
25-
self.rtp = 0.9700
25+
self.rtp = 0.967
2626
self.construct_paths()
2727

2828
# Game Dimensions

0 commit comments

Comments
 (0)