-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
173 lines (167 loc) · 42.5 KB
/
Copy pathindex.html
File metadata and controls
173 lines (167 loc) · 42.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
<!doctype html><html lang="en"><head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Loot Survivor — Player Performance Data</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js"></script>
<style>
:root{--ink:#1a2233;--mut:#5b6473;--line:#e4e8ef;--accent:#2f5fe0;--good:#1f9d6b;--vet:#d9772b;--bg:#f6f8fb;--card:#fff}
*{box-sizing:border-box}body{margin:0;font:16px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--bg)}
.wrap{max-width:1000px;margin:0 auto;padding:40px 22px 80px}
h1{font-size:29px;margin:0 0 6px}.sub{color:var(--mut);font-size:17px;margin:0 0 28px}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:24px 26px;margin:22px 0;box-shadow:0 1px 2px rgba(20,30,60,.04)}
h2{font-size:20px;margin:0 0 4px}.take{color:var(--mut);margin:0 0 18px;font-size:15.5px}
.chart{position:relative;height:330px}
.kpis{display:flex;gap:26px;flex-wrap:wrap;margin:6px 0 16px}
.kpi{flex:1;min-width:150px;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:14px 16px}
.kpi b{display:block;font-size:30px;line-height:1.1}.kpi span{color:var(--mut);font-size:13.5px}
.verify{margin-top:16px;font-size:13.5px}.verify a{color:var(--accent);text-decoration:none}.verify a:hover{text-decoration:underline}
details{margin-top:10px}summary{cursor:pointer;color:var(--mut);font-size:13.5px}
pre{background:#0f1626;color:#cdd6e6;padding:14px;border-radius:9px;overflow:auto;font-size:11.5px;line-height:1.45}
.prov{background:#0f1626;color:#e7ecf5;border-color:#0f1626}
.prov h2{color:#fff}.prov p,.prov li{color:#aeb9cc}.prov a{color:#7fa6ff}
.prov code{background:#1d2840;padding:2px 6px;border-radius:5px;font-size:12.5px;color:#cdd6e6;word-break:break-all}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.foot{color:var(--mut);font-size:13px;margin-top:30px}
.badge{display:inline-block;background:#eaf0ff;color:var(--accent);border-radius:20px;padding:3px 11px;font-size:12.5px;font-weight:600;margin-bottom:14px}
</style></head><body><div class="wrap">
<div class="badge">On-chain data · independently reproducible</div>
<h1>Loot Survivor — player performance data</h1>
<p class="sub">Descriptive statistics from <b>231,717 games</b> played by <b>2,741 players</b> on Starknet mainnet (Sep 2025 – May 2026). Each chart is rendered from data recorded on a public blockchain and links to a query that returns the same figures.</p>
<div class="card prov">
<h2>Data source and how to reproduce it</h2>
<p>Every Loot Survivor game is a non-fungible token (NFT) minted on <b>Starknet mainnet</b>, and the final score of each game is written to the blockchain by the game's smart contract. The figures below are read directly from that on-chain record.</p>
<ul>
<li><b>Game contract (scores & ownership):</b> <code>0x036017e69d21d6d8c13e266eabb73ef1f1d02722d86bdcabe5f168f8e549d3cd</code> — <a href="https://voyager.online/contract/0x036017e69d21d6d8c13e266eabb73ef1f1d02722d86bdcabe5f168f8e549d3cd" target="_blank">view on Voyager ↗</a></li>
<li><b>Public data endpoint:</b> Cartridge's open Torii indexer — <code>https://api.cartridge.gg/x/pg-mainnet-10/torii/sql</code>. The “re-run” link under each chart returns the exact figures shown.</li>
<li><b>Previous-title control:</b> the original Loot Survivor NFT <code>0x018108b32cea514a78ef1b0e4a0753e855cdf620bc0565202c02456f618c4dc4</code> (<a href="https://voyager.online/contract/0x018108b32cea514a78ef1b0e4a0753e855cdf620bc0565202c02456f618c4dc4" target="_blank">Voyager ↗</a>), read from Starknet mint events, distinguishes players new to the franchise from returning ones.</li>
</ul>
<p style="margin-bottom:0">Method applied to every chart: official game minter only, standard ruleset (<span class="mono">settings_id = 1</span>). Figures are <b>medians</b> (the middle / typical value), which are not skewed by extreme outliers.</p>
</div>
<div class="card">
<h2>1 · Median score by player experience</h2>
<p class="take">Each game grouped by the player's experience at the time it was played — their 1st game, 2nd–5th, 6th–20th, and so on — shown against the median (typical) score in each group.</p>
<div class="chart"><canvas id="c1"></canvas></div>
<div class="verify"><a href="https://api.cartridge.gg/x/pg-mainnet-10/torii/sql?query=--+Loot+Survivor+%E2%80%94+Claim+1%3A+Median+score+by+player+experience%0A--+Source%3A+https%3A%2F%2Fapi.cartridge.gg%2Fx%2Fpg-mainnet-10%2Ftorii%2Fsql++%28SQLite%29%0A--+Each+game+is+grouped+by+the+player%27s+experience+AT+THE+TIME+it+was+played%0A--+%28i.e.+where+the+game+falls+in+that+player%27s+own+chronological+sequence%29%2C+then+we%0A--+take+the+median+score+per+experience+tier.+This+measures+experience-at-time-of-play%0A--+and+is+monotonic%3B+it+avoids+the+confound+of+bucketing+by+a+player%27s+lifetime+game%0A--+total+%28which+mixes+in+selection+effects+and+produces+a+spurious+mid-range+dip%29.%0AWITH+g+AS+%28%0A++SELECT+%28+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C7%2C1%29%29-1%29%2A17592186044416%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C8%2C1%29%29-1%29%2A1099511627776%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C9%2C1%29%29-1%29%2A68719476736%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C10%2C1%29%29-1%29%2A4294967296%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C11%2C1%29%29-1%29%2A268435456%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C12%2C1%29%29-1%29%2A16777216%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C13%2C1%29%29-1%29%2A1048576%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C14%2C1%29%29-1%29%2A65536%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C15%2C1%29%29-1%29%2A4096%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C16%2C1%29%29-1%29%2A256%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C17%2C1%29%29-1%29%2A16%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C18%2C1%29%29-1%29+%29+AS+sc%2C%0A+++++++++ROW_NUMBER%28%29+OVER+%28PARTITION+BY+o.owner+ORDER+BY+s.internal_executed_at%29+AS+game_no%0A++FROM+%22relayer_0_0_1-TokenMetadataUpdate%22+m%0A++JOIN+%22relayer_0_0_1-TokenScoreUpdate%22+++s+ON+s.id+%3D+m.id%0A++JOIN+%22relayer_0_0_1-OwnersUpdate%22+++++++o+ON+o.token_id+%3D+m.id%0A++WHERE+m.settings_id+%3D+1+AND+m.minted_by+%3D+%270x0000000000000006%27%0A%29%2C%0Ab+AS+%28%0A++SELECT+CASE+WHEN+game_no%3D1+THEN+%271st+game%27%0A++++++++++++++WHEN+game_no%3C%3D5+THEN+%272nd-5th+game%27%0A++++++++++++++WHEN+game_no%3C%3D20+THEN+%276th-20th+game%27%0A++++++++++++++WHEN+game_no%3C%3D50+THEN+%2721st-50th+game%27%0A++++++++++++++ELSE+%2751st%2B+game%27+END+AS+experience%2C%0A+++++++++CASE+WHEN+game_no%3D1+THEN+1+WHEN+game_no%3C%3D5+THEN+2+WHEN+game_no%3C%3D20+THEN+3%0A++++++++++++++WHEN+game_no%3C%3D50+THEN+4+ELSE+5+END+AS+ord%2C%0A+++++++++sc%0A++FROM+g+WHERE+sc+BETWEEN+1+AND+3000%0A%29%2C%0Ar+AS+%28SELECT+experience%2C+ord%2C+sc%2C%0A+++++++++++++ROW_NUMBER%28%29+OVER+%28PARTITION+BY+experience+ORDER+BY+sc%29+rn%2C%0A+++++++++++++COUNT%28%2A%29+++++OVER+%28PARTITION+BY+experience%29+c+FROM+b%29%0ASELECT+experience%2C%0A+++++++c+AS+games%2C%0A+++++++ROUND%28AVG%28CASE+WHEN+rn+IN+%28%28c%2B1%29%2F2%2C%28c%2B2%29%2F2%29+THEN+sc+END%29%2C1%29+AS+median_score%0AFROM+r+GROUP+BY+experience+ORDER+BY+MIN%28ord%29%3B%0A" target="_blank">↗ Run this query on live on-chain data</a></div>
<details><summary>Show the exact SQL</summary><pre>-- Loot Survivor — Claim 1: Median score by player experience
-- Source: https://api.cartridge.gg/x/pg-mainnet-10/torii/sql (SQLite)
-- Each game is grouped by the player's experience AT THE TIME it was played
-- (i.e. where the game falls in that player's own chronological sequence), then we
-- take the median score per experience tier. This measures experience-at-time-of-play
-- and is monotonic; it avoids the confound of bucketing by a player's lifetime game
-- total (which mixes in selection effects and produces a spurious mid-range dip).
WITH g AS (
SELECT ( (instr('0123456789abcdef',substr(s.score,7,1))-1)*17592186044416
+ (instr('0123456789abcdef',substr(s.score,8,1))-1)*1099511627776
+ (instr('0123456789abcdef',substr(s.score,9,1))-1)*68719476736
+ (instr('0123456789abcdef',substr(s.score,10,1))-1)*4294967296
+ (instr('0123456789abcdef',substr(s.score,11,1))-1)*268435456
+ (instr('0123456789abcdef',substr(s.score,12,1))-1)*16777216
+ (instr('0123456789abcdef',substr(s.score,13,1))-1)*1048576
+ (instr('0123456789abcdef',substr(s.score,14,1))-1)*65536
+ (instr('0123456789abcdef',substr(s.score,15,1))-1)*4096
+ (instr('0123456789abcdef',substr(s.score,16,1))-1)*256
+ (instr('0123456789abcdef',substr(s.score,17,1))-1)*16
+ (instr('0123456789abcdef',substr(s.score,18,1))-1) ) AS sc,
ROW_NUMBER() OVER (PARTITION BY o.owner ORDER BY s.internal_executed_at) AS game_no
FROM "relayer_0_0_1-TokenMetadataUpdate" m
JOIN "relayer_0_0_1-TokenScoreUpdate" s ON s.id = m.id
JOIN "relayer_0_0_1-OwnersUpdate" o ON o.token_id = m.id
WHERE m.settings_id = 1 AND m.minted_by = '0x0000000000000006'
),
b AS (
SELECT CASE WHEN game_no=1 THEN '1st game'
WHEN game_no<=5 THEN '2nd-5th game'
WHEN game_no<=20 THEN '6th-20th game'
WHEN game_no<=50 THEN '21st-50th game'
ELSE '51st+ game' END AS experience,
CASE WHEN game_no=1 THEN 1 WHEN game_no<=5 THEN 2 WHEN game_no<=20 THEN 3
WHEN game_no<=50 THEN 4 ELSE 5 END AS ord,
sc
FROM g WHERE sc BETWEEN 1 AND 3000
),
r AS (SELECT experience, ord, sc,
ROW_NUMBER() OVER (PARTITION BY experience ORDER BY sc) rn,
COUNT(*) OVER (PARTITION BY experience) c FROM b)
SELECT experience,
c AS games,
ROUND(AVG(CASE WHEN rn IN ((c+1)/2,(c+2)/2) THEN sc END),1) AS median_score
FROM r GROUP BY experience ORDER BY MIN(ord);
</pre></details>
</div>
<div class="card">
<h2>2 · Skill persists: later score, grouped by skill in the first 10 games</h2>
<p class="take">Players with 20+ games are split into four tiers by their median score over their <b>first 10 games</b>, then each tier's median score is tracked across their later games. The tiers stay ordered and separated across 100+ games — they never cross. A game decided by chance would show the four lines converging.</p>
<div class="chart"><canvas id="c2"></canvas></div>
<div class="kpis">
<div class="kpi"><b>r = 0.55</b><span>correlation between a player's first-10-game median and their later-game median, across 763 players (0 = pure chance, 1 = fully determined by skill)</span></div>
<div class="kpi"><b>128 vs 181</b><span>median score of the lowest vs highest early-skill tier, measured 70+ games later — a gap that holds the entire time</span></div>
</div>
<div class="verify"><a href="https://api.cartridge.gg/x/pg-mainnet-10/torii/sql?query=--+Loot+Survivor+%E2%80%94+Claim%3A+skill+persists+%28skilled+players+consistently+outscore+weaker+players+over+many+games%29%0A--+Source%3A+https%3A%2F%2Fapi.cartridge.gg%2Fx%2Fpg-mainnet-10%2Ftorii%2Fsql++%28SQLite%29%0A--+Players+%28%3E%3D20+games%29+are+split+into+four+tiers+by+their+MEDIAN+score+over+their+FIRST+10+games%2C%0A--+then+each+tier%27s+median+score+is+tracked+across+later+game+windows.+If+outcomes+were+driven+by%0A--+chance+the+tiers+would+converge%3B+instead+they+stay+ordered+and+separated+across+100%2B+games.%0AWITH+g+AS+%28%0A++SELECT+o.owner+AS+player%2C%0A+++++++++%28+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C7%2C1%29%29-1%29%2A17592186044416%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C8%2C1%29%29-1%29%2A1099511627776%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C9%2C1%29%29-1%29%2A68719476736%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C10%2C1%29%29-1%29%2A4294967296%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C11%2C1%29%29-1%29%2A268435456%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C12%2C1%29%29-1%29%2A16777216%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C13%2C1%29%29-1%29%2A1048576%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C14%2C1%29%29-1%29%2A65536%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C15%2C1%29%29-1%29%2A4096%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C16%2C1%29%29-1%29%2A256%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C17%2C1%29%29-1%29%2A16%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C18%2C1%29%29-1%29+%29+AS+sc%2C%0A+++++++++ROW_NUMBER%28%29+OVER+%28PARTITION+BY+o.owner+ORDER+BY+s.internal_executed_at%29+AS+gn%2C%0A+++++++++COUNT%28%2A%29+++++OVER+%28PARTITION+BY+o.owner%29+AS+n%0A++FROM+%22relayer_0_0_1-TokenMetadataUpdate%22+m%0A++JOIN+%22relayer_0_0_1-TokenScoreUpdate%22+++s+ON+s.id+%3D+m.id%0A++JOIN+%22relayer_0_0_1-OwnersUpdate%22+++++++o+ON+o.token_id+%3D+m.id%0A++WHERE+m.settings_id+%3D+1+AND+m.minted_by+%3D+%270x0000000000000006%27%0A%29%2C%0Ae+AS+%28SELECT+player%2C+sc%2C+gn+FROM+g+WHERE+n+%3E%3D+20+AND+sc+BETWEEN+1+AND+3000%29%2C%0Aem+AS+%28++--+each+player%27s+median+over+their+first+10+games%0A++SELECT+player%2C+AVG%28CASE+WHEN+rn+IN+%28%28c%2B1%29%2F2%2C%28c%2B2%29%2F2%29+THEN+sc+END%29+AS+e10%0A++FROM+%28SELECT+player%2C+sc%2C+ROW_NUMBER%28%29+OVER+%28PARTITION+BY+player+ORDER+BY+sc%29+rn%2C%0A+++++++++++++++COUNT%28%2A%29+OVER+%28PARTITION+BY+player%29+c+FROM+e+WHERE+gn+%3C%3D+10%29+GROUP+BY+player%29%2C%0Aq+AS+%28SELECT+player%2C+NTILE%284%29+OVER+%28ORDER+BY+e10%29+AS+skill_tier+FROM+em%29%2C%0Alater+AS+%28%0A++SELECT+q.skill_tier%2C+e.sc%2C%0A+++++++++CASE+WHEN+e.gn%3C%3D20+THEN+1+WHEN+e.gn%3C%3D40+THEN+2+WHEN+e.gn%3C%3D70+THEN+3+ELSE+4+END+AS+later_window%0A++FROM+e+JOIN+q+USING%28player%29+WHERE+e.gn+%3E+10+AND+e.gn+%3C%3D+120%29%2C%0Ar+AS+%28SELECT+skill_tier%2C+later_window%2C+sc%2C%0A+++++++++++++ROW_NUMBER%28%29+OVER+%28PARTITION+BY+skill_tier%2Clater_window+ORDER+BY+sc%29+rn%2C%0A+++++++++++++COUNT%28%2A%29+++++OVER+%28PARTITION+BY+skill_tier%2Clater_window%29+c+FROM+later%29%0ASELECT+skill_tier%2C+later_window%2C+c+AS+games%2C%0A+++++++ROUND%28AVG%28CASE+WHEN+rn+IN+%28%28c%2B1%29%2F2%2C%28c%2B2%29%2F2%29+THEN+sc+END%29%2C1%29+AS+median_score%0AFROM+r+GROUP+BY+skill_tier%2C+later_window+ORDER+BY+skill_tier%2C+later_window%3B%0A" target="_blank">↗ Run this query on live on-chain data</a></div>
<details><summary>Show the exact SQL</summary><pre>-- Loot Survivor — Claim: skill persists (skilled players consistently outscore weaker players over many games)
-- Source: https://api.cartridge.gg/x/pg-mainnet-10/torii/sql (SQLite)
-- Players (>=20 games) are split into four tiers by their MEDIAN score over their FIRST 10 games,
-- then each tier's median score is tracked across later game windows. If outcomes were driven by
-- chance the tiers would converge; instead they stay ordered and separated across 100+ games.
WITH g AS (
SELECT o.owner AS player,
( (instr('0123456789abcdef',substr(s.score,7,1))-1)*17592186044416
+ (instr('0123456789abcdef',substr(s.score,8,1))-1)*1099511627776
+ (instr('0123456789abcdef',substr(s.score,9,1))-1)*68719476736
+ (instr('0123456789abcdef',substr(s.score,10,1))-1)*4294967296
+ (instr('0123456789abcdef',substr(s.score,11,1))-1)*268435456
+ (instr('0123456789abcdef',substr(s.score,12,1))-1)*16777216
+ (instr('0123456789abcdef',substr(s.score,13,1))-1)*1048576
+ (instr('0123456789abcdef',substr(s.score,14,1))-1)*65536
+ (instr('0123456789abcdef',substr(s.score,15,1))-1)*4096
+ (instr('0123456789abcdef',substr(s.score,16,1))-1)*256
+ (instr('0123456789abcdef',substr(s.score,17,1))-1)*16
+ (instr('0123456789abcdef',substr(s.score,18,1))-1) ) AS sc,
ROW_NUMBER() OVER (PARTITION BY o.owner ORDER BY s.internal_executed_at) AS gn,
COUNT(*) OVER (PARTITION BY o.owner) AS n
FROM "relayer_0_0_1-TokenMetadataUpdate" m
JOIN "relayer_0_0_1-TokenScoreUpdate" s ON s.id = m.id
JOIN "relayer_0_0_1-OwnersUpdate" o ON o.token_id = m.id
WHERE m.settings_id = 1 AND m.minted_by = '0x0000000000000006'
),
e AS (SELECT player, sc, gn FROM g WHERE n >= 20 AND sc BETWEEN 1 AND 3000),
em AS ( -- each player's median over their first 10 games
SELECT player, AVG(CASE WHEN rn IN ((c+1)/2,(c+2)/2) THEN sc END) AS e10
FROM (SELECT player, sc, ROW_NUMBER() OVER (PARTITION BY player ORDER BY sc) rn,
COUNT(*) OVER (PARTITION BY player) c FROM e WHERE gn <= 10) GROUP BY player),
q AS (SELECT player, NTILE(4) OVER (ORDER BY e10) AS skill_tier FROM em),
later AS (
SELECT q.skill_tier, e.sc,
CASE WHEN e.gn<=20 THEN 1 WHEN e.gn<=40 THEN 2 WHEN e.gn<=70 THEN 3 ELSE 4 END AS later_window
FROM e JOIN q USING(player) WHERE e.gn > 10 AND e.gn <= 120),
r AS (SELECT skill_tier, later_window, sc,
ROW_NUMBER() OVER (PARTITION BY skill_tier,later_window ORDER BY sc) rn,
COUNT(*) OVER (PARTITION BY skill_tier,later_window) c FROM later)
SELECT skill_tier, later_window, c AS games,
ROUND(AVG(CASE WHEN rn IN ((c+1)/2,(c+2)/2) THEN sc END),1) AS median_score
FROM r GROUP BY skill_tier, later_window ORDER BY skill_tier, later_window;
</pre></details>
</div>
<div class="card">
<h2>3 · First-games score: players new to the franchise vs. returning players</h2>
<p class="take">Median score over each player's first three games, comparing players with no prior Loot Survivor history against players who had previously played the original title (similar game mechanics).</p>
<div class="chart" style="height:230px"><canvas id="c3"></canvas></div>
<div class="verify"><a href="https://api.cartridge.gg/x/pg-mainnet-10/torii/sql?query=--+Claim+3%3A+Prior+skill+transfers+%E2%80%94+OG+veterans+outscore+new+players+from+game+1%0A--+Source%3A+https%3A%2F%2Fapi.cartridge.gg%2Fx%2Fpg-mainnet-10%2Ftorii%2Fsql++%28SQLite%29%0A--+COHORT-AWARE%3A+separates+genuinely-new+players+from+OG+%22Loot+Survivor%22+veterans%0A--+%28contract+0x018108b3...618c4dc4%29.+The+og_veterans+list+below+is+the+set+of+new-game%0A--+wallets+that+ALSO+minted+an+OG+adventurer%2C+derived+from+on-chain+mint+events%0A--+%28see+scripts%2Fenumerate_og_players.py%29.+Exact-address+match+%3D%3E+a+conservative+LOWER+bound.%0AWITH+og_veterans%28addr%29+AS+%28VALUES%0A++%28%270x0550212d3f13a373dfe9e3ef6aa41fba4124bde63fd7955393f879de19f3f47f%27%29%2C%0A++%28%270x040eef43f4d7b9cc357312a83365c3649273886c5394efafdcc9144bd6b86424%27%29%2C%0A++%28%270x03a285af8c8fb7115ffc69f0bb22c82e1cb5e0b3101c811d51ba8bf9848302ea%27%29%2C%0A++%28%270x056c3cd5ed408a22b2932947abfdf69e467cb999d0cde0b51d6055baa009b544%27%29%2C%0A++%28%270x04fa70827a01403b4f61fbe8cc39270dead83d1de1281d91e0ea4826a3ea8306%27%29%2C%0A++%28%270x05a2a4a94ea13f89605654001fc69ae70e6ccd91d0891727e3598a0b7f713901%27%29%2C%0A++%28%270x01783f0133d0044701b1e9cada98fc08142c436e22c3928365f94194662e9f4f%27%29%2C%0A++%28%270x01c9f001de664f0cd5b9e22fbb013865c2ca68c75c3ecc6d627b30ac6e2f8cd2%27%29%2C%0A++%28%270x020e24af25b913186c23d81eadb7a60670e20dc7364e807df45590ad77ecc4dd%27%29%2C%0A++%28%270x016c8b6168e8853b6bcc67f046f67d37abf214eb90172f1b184583d46541ed68%27%29%2C%0A++%28%270x03b5e22fad150c847ce453780292fbab5e0371df3cd0d36d7cbeb8b22f8cbb92%27%29%2C%0A++%28%270x0419d649f349f191ded9ae98f63627082d2d3bb6888af8fb7cd387ff54a054fc%27%29%2C%0A++%28%270x032d083f46cd40ed9429fc040412f402a710ed44c57d9a6574edbabc71594706%27%29%2C%0A++%28%270x048e13ef7ab79637afd38a4b022862a7e6f3fd934f194c435d7e7b17bac06715%27%29%2C%0A++%28%270x01483baba3337df2def5f69a069164627c3e4b4b6cdaa5f825cfa45835421de8%27%29%2C%0A++%28%270x0254dff075e6d9c73a9a9116861df956b60fcd87e9832ab54015e49cad28cb70%27%29%2C%0A++%28%270x053654a610be9950fd73f72833ded20b049a1da30f42c732a076e55c27024381%27%29%2C%0A++%28%270x0247393f2b4f3915fd5ed5acd704248cbd119709ae89a4787497d7157f4553b0%27%29%2C%0A++%28%270x03c0f67740e3fe298a52fe75dd24b4981217406f133e0835331379731b67dc92%27%29%2C%0A++%28%270x020a813da9f67b4b5407c49ffd0f69b861b7b5b38f81457365f43fb882a0c0d8%27%29%2C%0A++%28%270x077b8ed8356a7c1f0903fc4ba6e15f9b09cf437ce04f21b2cbf32dc2790183d0%27%29%2C%0A++%28%270x06b525b0aaf7694a7e854f44ae0a4467c84c4e0111c15df7a6e2ab691bd77311%27%29%2C%0A++%28%270x02f178bdb16939fbc5edc77ea1d2d789be3a7b4b4d8377502504a30e7a25bb4c%27%29%2C%0A++%28%270x02db8033ea9d190bd01e739b34aabf0f67346087b28ce7b68d71aece70149fe8%27%29%2C%0A++%28%270x076bd69406bce444e6f872e3939a4230e7a5dd73cbd50f0ec7d2a304f7d1c1b7%27%29%2C%0A++%28%270x058ff6513194522db457c7f4996dd120f49402e8693f7e1e831ebc56ab660222%27%29%2C%0A++%28%270x052eaece65e70b394f6907fbef609a143466ee0b861bc339306ab54dc8668a25%27%29%2C%0A++%28%270x029a092d0810ef4ad66075753c453d29e7ee3c714bf81fbb8130ffe0412fdd96%27%29%2C%0A++%28%270x057c54434905c896cc163358a9057f91b5e3e6a4f60b5a4bef3fdd77c2dc91aa%27%29%2C%0A++%28%270x03794259833a4d39fc711477a984e986c1fe843b31da71995728fe447b93b494%27%29%2C%0A++%28%270x0689701974d95364aad9c2306bc322a40a27fb775b0c97733fd0e36e900b1878%27%29%2C%0A++%28%270x0122e080cc536262dcad82d6ab04d48316f636432f9134e9d3db8d5e82200839%27%29%2C%0A++%28%270x005bee3a70403512c1a2ee7c4ecc4530a8d3c8b59f2edc7c0dbae5794500756c%27%29%2C%0A++%28%270x00c9cc60add566d71b3b563508fad22b75db93eb725139bf94aaa5a15ed45704%27%29%2C%0A++%28%270x07155b794c3c575ad8b3cfb1021246cd2c25d983f2410ff03867f305d80680ca%27%29%2C%0A++%28%270x0048cd209ee4c48d81301ff0e065a6e110f700e79c6b51cfc9db9e945f41c03d%27%29%2C%0A++%28%270x05182d69e155054d4852c775f3da3df704fd12fd77ebcc97b0a4ec3d619f60e6%27%29%2C%0A++%28%270x070adf2a101fa4996dfafc6ddd04a5eb9e66d671bd80a6c40c39196a415783a6%27%29%2C%0A++%28%270x01f1e541246efe1380f211a4d3df73a87b6fc13b5651a0016dd418d67280bf11%27%29%2C%0A++%28%270x02220cd2757cb68b4e7ee28b233a331222ec9ef96336c8301195b61b904a6c30%27%29%2C%0A++%28%270x02d85c07a3f6c48e3fb0d0440215143251a7993ee40b159c35033ca7225f9044%27%29%2C%0A++%28%270x010b685e795f70a7fb32d473878154e38a2668372dfe5d01d6cbdd9309d1be7f%27%29%2C%0A++%28%270x04364d8e9f994453f5d0c8dc838293226d8ae0aec78030e5ee5fb91614b00eb5%27%29%2C%0A++%28%270x00a2621ff2b0317ac99b881541b96aa75a7e118901b45025aad22a23633cccbe%27%29%2C%0A++%28%270x06c8abcd816f7fa14dfcddf4b827ed421f75da37de34fd7da9b0c6ce3c75b4ca%27%29%2C%0A++%28%270x010cc45e3ff2203e63797a8e4dee0b7f1edcd3d2dd9157c9a5adc642a04cf263%27%29%2C%0A++%28%270x06f03e397802c01eaaf323c9dc0d162944974b9f14825bee440ec2b19108a79b%27%29%2C%0A++%28%270x00cda908b1bf8f1ef8ea3423129130a53e805d96249f71bcc15bb4d4036850c2%27%29%2C%0A++%28%270x07086e9c8504a3e8f440ad975f01ed59c83f9273ebb3868a24697f3c5f369b30%27%29%2C%0A++%28%270x05c802f261c3eb2c23936b979d5cd246dbfcfb883c7b4d790ae7511ed430b7c8%27%29%2C%0A++%28%270x05dee5b03428c8b5d56969defc711c763ccaec583975a879994b94f118c104fd%27%29%2C%0A++%28%270x072f1575ba02cc5332ed54abc9e6bea5f9a71848cd99b92cbd519f12d8ead781%27%29%2C%0A++%28%270x044dd4c6bd243cba10b5934247303adf08374f84621cf9de04e853936d363f20%27%29%2C%0A++%28%270x063f57596022b9b2af8b81216325f24dcc7b0dad08e06405e24bfc8e56c9e00d%27%29%2C%0A++%28%270x015b75cb3b1594257606399b886c1699a0e2fc8afc13bd11bb7f3b55be23f047%27%29%2C%0A++%28%270x044c6e5f2ba58ce6fa7e191b85f08f5c999569220c4aab3eec0675a4867956f7%27%29%2C%0A++%28%270x02e4727dfc9f4a6a0c8cee69c6987f487637ccd5e220808fd975bf267cf70431%27%29%2C%0A++%28%270x0674db424f107f2d9b663c96ce566ae45e79471730f1be20ee77277078a2eeee%27%29%2C%0A++%28%270x0629dd6378ca8d4855c8763384cad82a13cf7eedf758abe9de785bb9daea7e4a%27%29%2C%0A++%28%270x0702150abd7903798fb763b6240beeb7fb6c73d7eceb2bb81ae11cf63ee4cfd8%27%29%2C%0A++%28%270x042f66a913d63ec80482708f26bdd24a245b5e3818cce53e79d612d2db9479c9%27%29%2C%0A++%28%270x0222b647960f9d1c5932a8b6abcaa3aee993c7b4a727176d4f98e6fc1e66b5e0%27%29%2C%0A++%28%270x062f0ca21835f5fb7470f80eaee41dcf29f7989e14607f023f390fcfb864bc7c%27%29%2C%0A++%28%270x075e0c534432bf872ec4814b4b0bd6b274b8851e813334e8fef3a1d92ee058c8%27%29%2C%0A++%28%270x048925dc0ef51ca1194d89fe5647bd38abe2e2532930472a2a4298207821ff19%27%29%2C%0A++%28%270x00e85a88d090bb4f47ff3f5b7b40c543d50cac55e1cac999178893a6e6a0c097%27%29%2C%0A++%28%270x002828359162a32abbe0eb5d0867068d13398103f1152414f14ded7063cfedc2%27%29%2C%0A++%28%270x074cc33d3953874cd8cd07b153d8d868059b56433ea810b3257e2a5caa64234a%27%29%2C%0A++%28%270x050d9aaeb185e3075241dd22e021f97b29475f9522739aace5d82f23a28852f7%27%29%2C%0A++%28%270x04d8046d5a8211babec35eebd62eb80643ebd65b68d56321ee77e06cd268d6f9%27%29%2C%0A++%28%270x0456395f05593d5fa89480624b150a672ff90014c1f0197480b3f022197a410d%27%29%2C%0A++%28%270x078e3652bbe1417400680681d37083c440ed6abfd8ecb56b95c83a1eee7a6bc7%27%29%2C%0A++%28%270x00b84a823923418377abbd2c896e2138a4fa28e52addc805c42327406a628db2%27%29%2C%0A++%28%270x032c19cc28ff31c1a789a0986a51624de57d97bc48e547d078c13a83ee6ea7cc%27%29%2C%0A++%28%270x05144466224fde5d648d6295a2fb6e7cd45f2ca3ede06196728026f12c84c9ff%27%29%2C%0A++%28%270x06a3cf1c4d6e0c8ce125ad73b91eab83ea16f49aa094180513145ffe915c1eff%27%29%2C%0A++%28%270x03ff78b3d10499c4d0fa064b612a8d34d3ea9d33321dc1a4177cf052141adfd3%27%29%2C%0A++%28%270x0400f5848c553adc4b589db64f3a1e9e6c8ef1dd5080b266d88eb43b828ef73d%27%29%2C%0A++%28%270x062e37b4f6cb15aa5e8b6048f95be160198bbf10dda0ed40f929c64c52efd2ca%27%29%2C%0A++%28%270x014a77615f1a1afdd7f37ff139a2976d02412cc41e30e1242ba56fbffe4031d4%27%29%2C%0A++%28%270x01abdb0c3319b72218653a0a94962ee66ebe27fd6b0bde234d1eddfccec57ed0%27%29%2C%0A++%28%270x0075d07ad2abd626c7bdb60724d0d1a903c4508cb8811725cadd8d832a30b516%27%29%2C%0A++%28%270x03953f2c785ead3417bdcb989cc3a25f52740c4e43fde35c6447f80bf63f78bf%27%29%2C%0A++%28%270x068f33cff4322aa64f481ca709b9fb3f86da80bd336088c637285e9759c2f0f0%27%29%2C%0A++%28%270x0351550b36d5fb5213dbee17166665384d3a9e269d942f06861cccc0376d4aee%27%29%2C%0A++%28%270x017850de07d48bd75469642589ab18f7202322614f7323c37d6c240a592eac8d%27%29%2C%0A++%28%270x013f1386e3d4267a1502d8ca782d34b63634d969d3c527a511814c2ef67b84c4%27%29%2C%0A++%28%270x060086d4f2c17c64ba185809ee065b7b10124458601a665506d58e3b454cee23%27%29%2C%0A++%28%270x02b970283a9a9560f8355e2799d1bc83a71cf21ea74c265cda72445d4f1e54e6%27%29%2C%0A++%28%270x0629c702d3afdb8154261510f47dfc0f2b4310daa0875dadcb64da3a5af389d1%27%29%2C%0A++%28%270x02d9a8562e7dc3a462c1433b06a3d6fd9ceb4c48aca87acc0c4bb22e59b6174c%27%29%2C%0A++%28%270x075cd56aba1d142df2b3588ddd71a2551bccea4ad23fc2f871302f79097404a3%27%29%2C%0A++%28%270x05e24e41ebcc41e5d062f3573092203f86bd08857a3076dc0b1257caf2789993%27%29%2C%0A++%28%270x07c4d03b35e224ac19247c429a203c36ca40653e12d28e696d2674ee61a60fa3%27%29%2C%0A++%28%270x07254cc6473779d31d70fff4a226d7cce4e28c3e0cdd274e5d97d1fbcdc8b6bd%27%29%2C%0A++%28%270x06ef70f561393dbbafc8c8f2687b29a2605399530bcd4029a6f8d002eaf094ec%27%29%0A%29%2C%0Ag+AS+%28%0A++SELECT+CASE+WHEN+o.owner+IN+%28SELECT+addr+FROM+og_veterans%29+THEN+%27og_veteran%27%0A++++++++++++++ELSE+%27genuinely_new%27+END+AS+cohort%2C%0A+++++++++%28+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C7%2C1%29%29-1%29%2A17592186044416%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C8%2C1%29%29-1%29%2A1099511627776%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C9%2C1%29%29-1%29%2A68719476736%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C10%2C1%29%29-1%29%2A4294967296%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C11%2C1%29%29-1%29%2A268435456%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C12%2C1%29%29-1%29%2A16777216%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C13%2C1%29%29-1%29%2A1048576%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C14%2C1%29%29-1%29%2A65536%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C15%2C1%29%29-1%29%2A4096%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C16%2C1%29%29-1%29%2A256%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C17%2C1%29%29-1%29%2A16%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C18%2C1%29%29-1%29+%29+AS+sc%2C%0A+++++++++ROW_NUMBER%28%29+OVER+%28PARTITION+BY+o.owner+ORDER+BY+s.internal_executed_at%29+AS+game_no%0A++FROM+%22relayer_0_0_1-TokenMetadataUpdate%22+m%0A++JOIN+%22relayer_0_0_1-TokenScoreUpdate%22+++s+ON+s.id+%3D+m.id%0A++JOIN+%22relayer_0_0_1-OwnersUpdate%22+++++++o+ON+o.token_id+%3D+m.id%0A++WHERE+m.settings_id+%3D+1+AND+m.minted_by+%3D+%270x0000000000000006%27%0A%29%2C%0Ae+AS+%28SELECT+cohort%2C+sc%2C%0A+++++++++++++ROW_NUMBER%28%29+OVER+%28PARTITION+BY+cohort+ORDER+BY+sc%29+rn%2C%0A+++++++++++++COUNT%28%2A%29+++++OVER+%28PARTITION+BY+cohort%29+c%0A++++++FROM+g+WHERE+game_no+%3C%3D+3+AND+sc+BETWEEN+1+AND+3000%29%0ASELECT+cohort%2C%0A+++++++c+AS+first3_games%2C%0A+++++++ROUND%28AVG%28CASE+WHEN+rn+IN+%28%28c%2B1%29%2F2%2C%28c%2B2%29%2F2%29+THEN+sc+END%29%2C1%29+AS+median_score_first_3_games%0AFROM+e+GROUP+BY+cohort%3B%0A" target="_blank">↗ Run this query</a> · <a href="https://api.cartridge.gg/x/pg-mainnet-10/torii/sql?query=--+Claim+2+%28clean%29%3A+genuinely-NEW+players+improve+over+time+%28OG+veterans+removed%29%0A--+Source%3A+https%3A%2F%2Fapi.cartridge.gg%2Fx%2Fpg-mainnet-10%2Ftorii%2Fsql++%28SQLite%29%0A--+COHORT-AWARE%3A+separates+genuinely-new+players+from+OG+%22Loot+Survivor%22+veterans%0A--+%28contract+0x018108b3...618c4dc4%29.+The+og_veterans+list+below+is+the+set+of+new-game%0A--+wallets+that+ALSO+minted+an+OG+adventurer%2C+derived+from+on-chain+mint+events%0A--+%28see+scripts%2Fenumerate_og_players.py%29.+Exact-address+match+%3D%3E+a+conservative+LOWER+bound.%0AWITH+og_veterans%28addr%29+AS+%28VALUES%0A++%28%270x0550212d3f13a373dfe9e3ef6aa41fba4124bde63fd7955393f879de19f3f47f%27%29%2C%0A++%28%270x040eef43f4d7b9cc357312a83365c3649273886c5394efafdcc9144bd6b86424%27%29%2C%0A++%28%270x03a285af8c8fb7115ffc69f0bb22c82e1cb5e0b3101c811d51ba8bf9848302ea%27%29%2C%0A++%28%270x056c3cd5ed408a22b2932947abfdf69e467cb999d0cde0b51d6055baa009b544%27%29%2C%0A++%28%270x04fa70827a01403b4f61fbe8cc39270dead83d1de1281d91e0ea4826a3ea8306%27%29%2C%0A++%28%270x05a2a4a94ea13f89605654001fc69ae70e6ccd91d0891727e3598a0b7f713901%27%29%2C%0A++%28%270x01783f0133d0044701b1e9cada98fc08142c436e22c3928365f94194662e9f4f%27%29%2C%0A++%28%270x01c9f001de664f0cd5b9e22fbb013865c2ca68c75c3ecc6d627b30ac6e2f8cd2%27%29%2C%0A++%28%270x020e24af25b913186c23d81eadb7a60670e20dc7364e807df45590ad77ecc4dd%27%29%2C%0A++%28%270x016c8b6168e8853b6bcc67f046f67d37abf214eb90172f1b184583d46541ed68%27%29%2C%0A++%28%270x03b5e22fad150c847ce453780292fbab5e0371df3cd0d36d7cbeb8b22f8cbb92%27%29%2C%0A++%28%270x0419d649f349f191ded9ae98f63627082d2d3bb6888af8fb7cd387ff54a054fc%27%29%2C%0A++%28%270x032d083f46cd40ed9429fc040412f402a710ed44c57d9a6574edbabc71594706%27%29%2C%0A++%28%270x048e13ef7ab79637afd38a4b022862a7e6f3fd934f194c435d7e7b17bac06715%27%29%2C%0A++%28%270x01483baba3337df2def5f69a069164627c3e4b4b6cdaa5f825cfa45835421de8%27%29%2C%0A++%28%270x0254dff075e6d9c73a9a9116861df956b60fcd87e9832ab54015e49cad28cb70%27%29%2C%0A++%28%270x053654a610be9950fd73f72833ded20b049a1da30f42c732a076e55c27024381%27%29%2C%0A++%28%270x0247393f2b4f3915fd5ed5acd704248cbd119709ae89a4787497d7157f4553b0%27%29%2C%0A++%28%270x03c0f67740e3fe298a52fe75dd24b4981217406f133e0835331379731b67dc92%27%29%2C%0A++%28%270x020a813da9f67b4b5407c49ffd0f69b861b7b5b38f81457365f43fb882a0c0d8%27%29%2C%0A++%28%270x077b8ed8356a7c1f0903fc4ba6e15f9b09cf437ce04f21b2cbf32dc2790183d0%27%29%2C%0A++%28%270x06b525b0aaf7694a7e854f44ae0a4467c84c4e0111c15df7a6e2ab691bd77311%27%29%2C%0A++%28%270x02f178bdb16939fbc5edc77ea1d2d789be3a7b4b4d8377502504a30e7a25bb4c%27%29%2C%0A++%28%270x02db8033ea9d190bd01e739b34aabf0f67346087b28ce7b68d71aece70149fe8%27%29%2C%0A++%28%270x076bd69406bce444e6f872e3939a4230e7a5dd73cbd50f0ec7d2a304f7d1c1b7%27%29%2C%0A++%28%270x058ff6513194522db457c7f4996dd120f49402e8693f7e1e831ebc56ab660222%27%29%2C%0A++%28%270x052eaece65e70b394f6907fbef609a143466ee0b861bc339306ab54dc8668a25%27%29%2C%0A++%28%270x029a092d0810ef4ad66075753c453d29e7ee3c714bf81fbb8130ffe0412fdd96%27%29%2C%0A++%28%270x057c54434905c896cc163358a9057f91b5e3e6a4f60b5a4bef3fdd77c2dc91aa%27%29%2C%0A++%28%270x03794259833a4d39fc711477a984e986c1fe843b31da71995728fe447b93b494%27%29%2C%0A++%28%270x0689701974d95364aad9c2306bc322a40a27fb775b0c97733fd0e36e900b1878%27%29%2C%0A++%28%270x0122e080cc536262dcad82d6ab04d48316f636432f9134e9d3db8d5e82200839%27%29%2C%0A++%28%270x005bee3a70403512c1a2ee7c4ecc4530a8d3c8b59f2edc7c0dbae5794500756c%27%29%2C%0A++%28%270x00c9cc60add566d71b3b563508fad22b75db93eb725139bf94aaa5a15ed45704%27%29%2C%0A++%28%270x07155b794c3c575ad8b3cfb1021246cd2c25d983f2410ff03867f305d80680ca%27%29%2C%0A++%28%270x0048cd209ee4c48d81301ff0e065a6e110f700e79c6b51cfc9db9e945f41c03d%27%29%2C%0A++%28%270x05182d69e155054d4852c775f3da3df704fd12fd77ebcc97b0a4ec3d619f60e6%27%29%2C%0A++%28%270x070adf2a101fa4996dfafc6ddd04a5eb9e66d671bd80a6c40c39196a415783a6%27%29%2C%0A++%28%270x01f1e541246efe1380f211a4d3df73a87b6fc13b5651a0016dd418d67280bf11%27%29%2C%0A++%28%270x02220cd2757cb68b4e7ee28b233a331222ec9ef96336c8301195b61b904a6c30%27%29%2C%0A++%28%270x02d85c07a3f6c48e3fb0d0440215143251a7993ee40b159c35033ca7225f9044%27%29%2C%0A++%28%270x010b685e795f70a7fb32d473878154e38a2668372dfe5d01d6cbdd9309d1be7f%27%29%2C%0A++%28%270x04364d8e9f994453f5d0c8dc838293226d8ae0aec78030e5ee5fb91614b00eb5%27%29%2C%0A++%28%270x00a2621ff2b0317ac99b881541b96aa75a7e118901b45025aad22a23633cccbe%27%29%2C%0A++%28%270x06c8abcd816f7fa14dfcddf4b827ed421f75da37de34fd7da9b0c6ce3c75b4ca%27%29%2C%0A++%28%270x010cc45e3ff2203e63797a8e4dee0b7f1edcd3d2dd9157c9a5adc642a04cf263%27%29%2C%0A++%28%270x06f03e397802c01eaaf323c9dc0d162944974b9f14825bee440ec2b19108a79b%27%29%2C%0A++%28%270x00cda908b1bf8f1ef8ea3423129130a53e805d96249f71bcc15bb4d4036850c2%27%29%2C%0A++%28%270x07086e9c8504a3e8f440ad975f01ed59c83f9273ebb3868a24697f3c5f369b30%27%29%2C%0A++%28%270x05c802f261c3eb2c23936b979d5cd246dbfcfb883c7b4d790ae7511ed430b7c8%27%29%2C%0A++%28%270x05dee5b03428c8b5d56969defc711c763ccaec583975a879994b94f118c104fd%27%29%2C%0A++%28%270x072f1575ba02cc5332ed54abc9e6bea5f9a71848cd99b92cbd519f12d8ead781%27%29%2C%0A++%28%270x044dd4c6bd243cba10b5934247303adf08374f84621cf9de04e853936d363f20%27%29%2C%0A++%28%270x063f57596022b9b2af8b81216325f24dcc7b0dad08e06405e24bfc8e56c9e00d%27%29%2C%0A++%28%270x015b75cb3b1594257606399b886c1699a0e2fc8afc13bd11bb7f3b55be23f047%27%29%2C%0A++%28%270x044c6e5f2ba58ce6fa7e191b85f08f5c999569220c4aab3eec0675a4867956f7%27%29%2C%0A++%28%270x02e4727dfc9f4a6a0c8cee69c6987f487637ccd5e220808fd975bf267cf70431%27%29%2C%0A++%28%270x0674db424f107f2d9b663c96ce566ae45e79471730f1be20ee77277078a2eeee%27%29%2C%0A++%28%270x0629dd6378ca8d4855c8763384cad82a13cf7eedf758abe9de785bb9daea7e4a%27%29%2C%0A++%28%270x0702150abd7903798fb763b6240beeb7fb6c73d7eceb2bb81ae11cf63ee4cfd8%27%29%2C%0A++%28%270x042f66a913d63ec80482708f26bdd24a245b5e3818cce53e79d612d2db9479c9%27%29%2C%0A++%28%270x0222b647960f9d1c5932a8b6abcaa3aee993c7b4a727176d4f98e6fc1e66b5e0%27%29%2C%0A++%28%270x062f0ca21835f5fb7470f80eaee41dcf29f7989e14607f023f390fcfb864bc7c%27%29%2C%0A++%28%270x075e0c534432bf872ec4814b4b0bd6b274b8851e813334e8fef3a1d92ee058c8%27%29%2C%0A++%28%270x048925dc0ef51ca1194d89fe5647bd38abe2e2532930472a2a4298207821ff19%27%29%2C%0A++%28%270x00e85a88d090bb4f47ff3f5b7b40c543d50cac55e1cac999178893a6e6a0c097%27%29%2C%0A++%28%270x002828359162a32abbe0eb5d0867068d13398103f1152414f14ded7063cfedc2%27%29%2C%0A++%28%270x074cc33d3953874cd8cd07b153d8d868059b56433ea810b3257e2a5caa64234a%27%29%2C%0A++%28%270x050d9aaeb185e3075241dd22e021f97b29475f9522739aace5d82f23a28852f7%27%29%2C%0A++%28%270x04d8046d5a8211babec35eebd62eb80643ebd65b68d56321ee77e06cd268d6f9%27%29%2C%0A++%28%270x0456395f05593d5fa89480624b150a672ff90014c1f0197480b3f022197a410d%27%29%2C%0A++%28%270x078e3652bbe1417400680681d37083c440ed6abfd8ecb56b95c83a1eee7a6bc7%27%29%2C%0A++%28%270x00b84a823923418377abbd2c896e2138a4fa28e52addc805c42327406a628db2%27%29%2C%0A++%28%270x032c19cc28ff31c1a789a0986a51624de57d97bc48e547d078c13a83ee6ea7cc%27%29%2C%0A++%28%270x05144466224fde5d648d6295a2fb6e7cd45f2ca3ede06196728026f12c84c9ff%27%29%2C%0A++%28%270x06a3cf1c4d6e0c8ce125ad73b91eab83ea16f49aa094180513145ffe915c1eff%27%29%2C%0A++%28%270x03ff78b3d10499c4d0fa064b612a8d34d3ea9d33321dc1a4177cf052141adfd3%27%29%2C%0A++%28%270x0400f5848c553adc4b589db64f3a1e9e6c8ef1dd5080b266d88eb43b828ef73d%27%29%2C%0A++%28%270x062e37b4f6cb15aa5e8b6048f95be160198bbf10dda0ed40f929c64c52efd2ca%27%29%2C%0A++%28%270x014a77615f1a1afdd7f37ff139a2976d02412cc41e30e1242ba56fbffe4031d4%27%29%2C%0A++%28%270x01abdb0c3319b72218653a0a94962ee66ebe27fd6b0bde234d1eddfccec57ed0%27%29%2C%0A++%28%270x0075d07ad2abd626c7bdb60724d0d1a903c4508cb8811725cadd8d832a30b516%27%29%2C%0A++%28%270x03953f2c785ead3417bdcb989cc3a25f52740c4e43fde35c6447f80bf63f78bf%27%29%2C%0A++%28%270x068f33cff4322aa64f481ca709b9fb3f86da80bd336088c637285e9759c2f0f0%27%29%2C%0A++%28%270x0351550b36d5fb5213dbee17166665384d3a9e269d942f06861cccc0376d4aee%27%29%2C%0A++%28%270x017850de07d48bd75469642589ab18f7202322614f7323c37d6c240a592eac8d%27%29%2C%0A++%28%270x013f1386e3d4267a1502d8ca782d34b63634d969d3c527a511814c2ef67b84c4%27%29%2C%0A++%28%270x060086d4f2c17c64ba185809ee065b7b10124458601a665506d58e3b454cee23%27%29%2C%0A++%28%270x02b970283a9a9560f8355e2799d1bc83a71cf21ea74c265cda72445d4f1e54e6%27%29%2C%0A++%28%270x0629c702d3afdb8154261510f47dfc0f2b4310daa0875dadcb64da3a5af389d1%27%29%2C%0A++%28%270x02d9a8562e7dc3a462c1433b06a3d6fd9ceb4c48aca87acc0c4bb22e59b6174c%27%29%2C%0A++%28%270x075cd56aba1d142df2b3588ddd71a2551bccea4ad23fc2f871302f79097404a3%27%29%2C%0A++%28%270x05e24e41ebcc41e5d062f3573092203f86bd08857a3076dc0b1257caf2789993%27%29%2C%0A++%28%270x07c4d03b35e224ac19247c429a203c36ca40653e12d28e696d2674ee61a60fa3%27%29%2C%0A++%28%270x07254cc6473779d31d70fff4a226d7cce4e28c3e0cdd274e5d97d1fbcdc8b6bd%27%29%2C%0A++%28%270x06ef70f561393dbbafc8c8f2687b29a2605399530bcd4029a6f8d002eaf094ec%27%29%0A%29%2C%0Ag+AS+%28%0A++SELECT+CASE+WHEN+o.owner+IN+%28SELECT+addr+FROM+og_veterans%29+THEN+%27og_veteran%27%0A++++++++++++++ELSE+%27genuinely_new%27+END+AS+cohort%2C%0A+++++++++%28+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C7%2C1%29%29-1%29%2A17592186044416%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C8%2C1%29%29-1%29%2A1099511627776%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C9%2C1%29%29-1%29%2A68719476736%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C10%2C1%29%29-1%29%2A4294967296%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C11%2C1%29%29-1%29%2A268435456%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C12%2C1%29%29-1%29%2A16777216%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C13%2C1%29%29-1%29%2A1048576%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C14%2C1%29%29-1%29%2A65536%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C15%2C1%29%29-1%29%2A4096%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C16%2C1%29%29-1%29%2A256%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C17%2C1%29%29-1%29%2A16%0A+++++++++%2B+%28instr%28%270123456789abcdef%27%2Csubstr%28s.score%2C18%2C1%29%29-1%29+%29+AS+sc%2C%0A+++++++++ROW_NUMBER%28%29+OVER+%28PARTITION+BY+o.owner+ORDER+BY+s.internal_executed_at%29+AS+game_no%0A++FROM+%22relayer_0_0_1-TokenMetadataUpdate%22+m%0A++JOIN+%22relayer_0_0_1-TokenScoreUpdate%22+++s+ON+s.id+%3D+m.id%0A++JOIN+%22relayer_0_0_1-OwnersUpdate%22+++++++o+ON+o.token_id+%3D+m.id%0A++WHERE+m.settings_id+%3D+1+AND+m.minted_by+%3D+%270x0000000000000006%27%0A%29%2C%0Ar+AS+%28SELECT+game_no%2C+sc%2C%0A+++++++++++++ROW_NUMBER%28%29+OVER+%28PARTITION+BY+game_no+ORDER+BY+sc%29+rn%2C%0A+++++++++++++COUNT%28%2A%29+++++OVER+%28PARTITION+BY+game_no%29+c%0A++++++FROM+g+WHERE+cohort+%3D+%27genuinely_new%27+AND+sc+BETWEEN+1+AND+3000%29%0ASELECT+game_no%2C%0A+++++++c+AS+players%2C%0A+++++++ROUND%28AVG%28CASE+WHEN+rn+IN+%28%28c%2B1%29%2F2%2C%28c%2B2%29%2F2%29+THEN+sc+END%29%2C1%29+AS+median_score%0AFROM+r%0AGROUP+BY+game_no+HAVING+c+%3E%3D+30%0AORDER+BY+game_no%3B%0A" target="_blank">↗ Nth-game query, returning players excluded</a></div>
<details><summary>Show the exact SQL</summary><pre>-- Claim 3: Prior skill transfers — OG veterans outscore new players from game 1
-- Source: https://api.cartridge.gg/x/pg-mainnet-10/torii/sql (SQLite)
-- COHORT-AWARE: separates genuinely-new players from OG "Loot Survivor" veterans
-- (contract 0x018108b3...618c4dc4). The og_veterans list below is the set of new-game
-- wallets that ALSO minted an OG adventurer, derived from on-chain mint events
-- (see scripts/enumerate_og_players.py). Exact-address match => a conservative LOWER bound.
WITH og_veterans(addr) AS (VALUES
('0x0550212d3f13a373dfe9e3ef6aa41fba4124bde63fd7955393f879de19f3f47f'
... (96 returning-player addresses embedded) ...</pre></details>
</div>
</div>
<script>
const D={"d01": [{"experience": "1st game", "games": 2640, "median_score": 58.0}, {"experience": "2nd-5th game", "games": 9485, "median_score": 57.0}, {"experience": "6th-20th game", "games": 14687, "median_score": 123.0}, {"experience": "21st-50th game", "games": 18784, "median_score": 145.0}, {"experience": "51st+ game", "games": 186121, "median_score": 168.0}], "win": ["games 11\u201320", "games 21\u201340", "games 41\u201370", "games 71\u2013120"], "tiers": {"1": [102.0, 110.0, 122.0, 128.0], "2": [132.5, 140.0, 142.0, 150.0], "3": [147.0, 150.0, 158.0, 159.0], "4": [173.0, 176.0, 174.0, 181.0]}, "new3": 55.0, "vet3": 101.0};
const f={legend:{labels:{font:{size:13}}}};
const gridc='#eef1f6';
new Chart(c1,{type:'bar',data:{labels:D.d01.map(r=>r.experience),datasets:[{label:'Median score',data:D.d01.map(r=>r.median_score),backgroundColor:'#2f5fe0',borderRadius:6}]},options:{plugins:{legend:{display:false}},scales:{y:{beginAtZero:true,grid:{color:gridc},title:{display:true,text:'Median score'}},x:{grid:{display:false},title:{display:true,text:"Player's experience (which game in their sequence)"}}}}});
const tcol={1:'#c0392b',2:'#e08a2b',3:'#2f9e6b',4:'#2f5fe0'};const tname={1:'Tier 1 — lowest early skill',2:'Tier 2',3:'Tier 3',4:'Tier 4 — highest early skill'};
new Chart(c2,{type:'line',data:{labels:D.win,datasets:[4,3,2,1].map(t=>({label:tname[t],data:D.tiers[t],borderColor:tcol[t],backgroundColor:tcol[t],tension:.25,pointRadius:3,borderWidth:2.5}))},options:{interaction:{mode:'index',intersect:false},plugins:{legend:{labels:{font:{size:13},boxWidth:14}}},scales:{y:{beginAtZero:true,grid:{color:gridc},title:{display:true,text:'Median score'}},x:{grid:{display:false},title:{display:true,text:'Later games (window)'}}}}});
new Chart(c3,{type:'bar',data:{labels:['First 3 games'],datasets:[{label:'New to the franchise',data:[D.new3],backgroundColor:'#1f9d6b',borderRadius:6},{label:'Played the previous title',data:[D.vet3],backgroundColor:'#d9772b',borderRadius:6}]},options:{indexAxis:'y',plugins:f,scales:{x:{beginAtZero:true,grid:{color:gridc},title:{display:true,text:'Median score over first 3 games'}},y:{grid:{display:false}}}}});
</script></body></html>