part 29
Every world its own currency: level, coins and achievements by realm
From one level, one currency and one list of achievements, things became per realm. Colony pays 13, 30 and 58 XP, tokens go 1 per 1 XP, and 32 "general" achievements belong to Kastgard. The home screen does not show it yet.
Until 30 October 2026 the game had one hero level, one currency (Golden Dice) and one list of 90 achievement chains. Colony, the hex-board game from the article about Colony, wrote a line to the history after a finished game and paid nothing. The decision of 29 and 30 October: every realm (a term from the article about realms) gets its own level, its own currency and its own achievements. This article describes how it was built in the data in seven steps (R3a, R3b, R3h, R3g1, R3d, R3g2, R3g3), and how it was proven that the older profiles lost nothing and nothing was paid twice.
There are three findings. The 32 achievement chains that were treated as "general" are not moved by a single finished game of Colony: they were general only because the tool could not mark them otherwise. The whole rule against farming the weakest AI is one number, the doubling of the payout at each level of AI. And the third has to be said at once: most of this can so far be seen only in the data, on the closing card of Colony and in the achievements window, while the home screen looks as it did before the split. The last part lists what is not built yet.
From one level to two: the decisions
The decisions are in the ROADMAP (chapter 26) with dates:
- Every realm has its own level, there is no main level. At this point, of 29 October 2026, the ROADMAP quotes the answer in a single word: "abolish". XP is not lost, the sum stays the same.
- The currency belongs to one realm and does not pass to another. Golden Dice belong to Kastgard, Rokgard got Golden tokens[1]. A shared currency would need an exchange rate between games, or the reward would depend on the order of play (R3-ACHIEVEMENTS-BY-REALM 4.1). The answer of 30 October is that the currency is a required part of every realm, even if it serves only for appearance.
- Hero Dice belongs to Kastgard, the hero of Rokgard is a token: a picture without a voice. Globally there is only the player and the name of the hero, in the note of 29 October: "the name global, the rest in the realm".
- Nothing is shared between realms. At this point, the decision of 30 October changed the recommendation of the analysis: the looks of the Gallery that the player got in Kastgard do not apply in Rokgard.
| Before 30 Oct | After 30 Oct (version 0.63.4) | |
|---|---|---|
| level | one, profile.xp, curve 25 × n² | Kastgard: profile.xp (the key and its meaning stay); Rokgard: realms.taflgard.xp, the same curve, no cap |
| currency | Golden Dice | Kastgard Golden Dice, Rokgard Golden tokens; they are not converted |
| looks of the Gallery | apply in every mode | apply in Kastgard |
| achievements | 90 chains, one currency | the same, each has a realm; paid in the currency of the realm |
Step R3a (version 0.59.3) changed nothing the player sees. A new register Economy was added to the core: a package registers in it what it keeps (XP, the curve of levels, the mark of what the player already knows), and the platform asks the register, not the keys of the profile. The functions of the level got the realm as their last argument, with the default value 'stacks'. Thanks to this, all 81 lines in 17 files that call HeroDice.… stayed correct, and the level of Kastgard is bit for bit the old main level. Part of R3a is also the reputation of Asgard: the sum of the levels of the realms in which the player played, derived, stored nowhere and without a reward, because on the day when it would pay something, it would be the main level again. The function Hero.reputation exists; a test holds that a player at level 31 who never opened Rokgard has 31, not 32. It does not have a screen yet.
What Colony pays: the rule, the table and farming the weakest AI
For Colony there are so far no data of a human playing (the analysis quotes only five games of one player against an older level 1), so the price was measured on games of the AI: 400 games per cell of the table (40 at level 3), for the player a "common" AI (it takes the move with the largest immediate gain) or AI of levels 1 to 3, for the opponent an AI of levels 1 to 3. Three things came out:
- The levels of AI are a ladder without overlap. An AI beats a lower level in 95 – 100 % of games and a higher one in 0 – 2.5 %. Whoever wins half of the games is at their own level.
- A game lasts 97 – 117 half-moves (49 – 59 rounds), but the shortest has 9 to 21 half-moves. A fixed price for a win would pay a win in 9 half-moves the same as in 117.
- The time of the human's move is the only estimate: 5 seconds per move and 30 seconds per game.
The rule that received approval on 30 October: a win pays 0.5 XP for each move of the player, times 0.5 / 1 / 2 depending on the level of the AI. A draw pays half. A loss, a game in which the AI played, and a watched game pay nothing (in Colony this cannot happen yet, but the code guards it); an abandoned game pays once it is finished. There is no bonus for the first win. The moves of the player are the rounds of the game. A typical win:
| Weak | Normal | Strong | |
|---|---|---|---|
| rounds of a typical win | 52 | 59 | 58 |
| XP for a win | 13 | 30 | 58 |
| XP for a draw | 7 | 15 | 29 |
| XP for a win in 5 rounds | 1 | 3 | 5 |
At 5 seconds per move this comes to 308 XP per hour of wins against the Normal one, which is the pace of the Principalities[2] mode: 316 XP per hour on the island and 278 on the field. At 3 seconds per move it is 465, at 8 seconds 205. The first level (100 XP) comes after 8 wins against the Weak AI or after 4 against the Normal, level 10 (2,500 XP) after 84 wins against the Normal AI, about 8 hours. The payment regardless of time is described in the article on the score by the length of a game; here the rule is tied to the moves from the start. The comparison holds for today's table of Principalities: the decision of 30 October is that Kastgard will also pay by moves (ROADMAP chapter 27), but the formula is so far only data.
Farming remains. In Kastgard it is a secondary question, because the levels of AI are close to each other (a win in Principalities on the island for two players pays 69 / 79 / 92 XP). In Colony a player who always beats the Weak AI earns at its level, whatever the payout. Three choices of the factor for a player of level 2, in XP per hour at 5 seconds per move:
| factor of levels 1 / 2 / 3 | farming the Weak AI | game against the Normal AI | what the player gains by moving up |
|---|---|---|---|
| flat as in Principalities: 0.87 / 1 / 1.17 | 264 | 150 | nothing, rather loses: the farming yields 1.8 times more |
| doubling: 0.5 / 1 / 2 | 152 | 150 | indifference: both paces are the same |
| steeper: 0.4 / 1 / 2.5 | 122 | 150 | pressure upward |
Doubling was chosen: it is the only value at which the weakest AI is neither worse nor better than the level to which the player belongs, so neither a daily limit nor a decay of the reward is needed. The cost: a win against the Strong AI pays four times more than against the Weak one, which is a statement about the ladder, not about the player.
Golden tokens and the Gallery that stayed at home
Tokens (step R3d, version 0.62.3) are derived from the XP that the game has just paid: 1 token per 1 XP. A win thus pays as many tokens as XP, a draw half, a loss nothing, and when the pace is tuned both values move the same way. Tokens are never added up with Golden Dice nor converted; their pace is almost the same (308 per hour against 316 in Principalities), so the two purses fill at about the same speed. The player sees them on the closing card of Colony ("Experience: +30 XP", "Golden tokens: +30", "Level 1 in the realm Rokgard") and as a chip with the balance in the header of the Rokgard hub (zero is shown). The order of words differs: the name of the currency is the subject, which after a number would need another case, so Slovak, Czech, Serbian and Russian write "Golden tokens: +30".
The Gallery came as step R3h. In the old tree (git archive of version 0.59.3) it turned out that the look from the Gallery of Kastgard is already in Rokgard: Colony and Lines both drew a parchment background and a lion as the emblem. The analysis of Lines of 30 October did not know this; it showed up only in the running game. The rule: a look from the Gallery applies where the wardrobe of the realm contains its kind of screen (Kastgard dice, board, emblem, Rokgard none). Screens without a realm (home, Collection) hold all looks, because nothing else reads them.
Achievements: 32 chains that were not general
Before 30 October there were 90 chains, 291 steps and 51,922 Golden Dice. Of them 32 chains (115 steps, 24,430 Golden Dice) had no realm, and so they looked general. The decision of 29 October left them general with Golden Dice; on 30 October it was decided that the achievements of a realm pay in its currency, so they must be reworked. The analysis (R3g0) therefore first measured what those 32 count.
A probe with profiles written by the real writing functions showed that not a single one of the 32 chains moved on the games of Colony: all 32 count Kastgard and its section Campaign. The error was in the mark, which could say only "Kastgard itself" or "section", not both, so a chain that counts both got null.
The fix (step R3g1) is a single flag value, span: true ("counts the realm and its sections too"). The fingerprint of all steps (id, texts, targets, rewards, order, the queue of secrets) is, with the code of version 0.59.3, the same even after the change (90 chains, 291 steps, 97,180 bytes). Nothing is converted or paid again.
A general chain is from now on one that needs facts from two realms, and it pays nothing: there is no currency in which it could pay, and an exchange rate between currencies is forbidden. Three one-step chains and two secrets are added, night-owl (a win between midnight and four) and friday-13, move among the general ones; they cost 130 Golden Dice of a future reward. The identifiers should get the prefix of the realm: stacks_, taflgard_, global_.
The achievements window has, in the header of a realm, a chip with the currency that the steps paid, and a chip of the level; the tabs are drawn only from two realms on. Today only Kastgard has chains. The first set of Rokgard is in a draft: 7 chains, 27 steps, 2,643 tokens. The advantage in a win was measured on it: against the Normal AI the median is 4 pieces, against the Weak one 26. Therefore the advantage and the streak count only games against the Normal or Strong AI. The family "win by annihilation" was dropped: of 225 wins of the Normal over the Normal, not one ended by annihilation.
Profile migration: the proof by the old code
The proof of a migration is done in this project in the same way: the data are made by the old code (git archive of the commit in question, its own process) and the new code loads them.
| Step | What the new code loaded | Mutations |
|---|---|---|
| R3a | 40 sequences, 2,400 calls, 375 loads, 17 fixtures with 204 damaged copies, 24 backups | 15, all caught |
| R3b | 12 profiles after games of Colony, estimate 168 / 5 / 0 / 47 / 15 / 24,014 XP | 11 by hand and 11 in the memory of the tool |
| R3d | 36 profiles in three states of history and 17 unusual pairs of tokens | 21 in the memory of the tool |
| R3g1 | fingerprint of 90 chains and 291 steps | – |
| R3g3 | 48 profiles, one with 60 games of Colony | 26 |
| R3h | the old and the new tree side by side in the panel of the browser | 9 |
The data of Kastgard (level, xp, hero.seenLevel, Golden Dice, earned, wallet, ach, hero) are, after each call, load and restore from a backup, bit for bit old; only the container of Rokgard changes, exactly as the rule requires. The full suite had at R3g3 3,137 tests, 3,136 passed, 1 was skipped. Three decisions are worth mentioning:
- A player who played Colony before gets XP once, by estimate. The function
settlepays the lines of the historym: 'colony'by the rule and the wins that the counts show and the lines do not (the history is trimmed to 1,500 lines), it pays at the typical rounds of the level (52 / 59 / 58). Nothing is invented: losses pay nothing, and a game that is neither in a line nor in a count does not exist. An extreme profile with 1,640 games got 24,014 XP, level 30. The same estimate gives tokens too. - The mark "already paid" is written also after a loss. The key
paidis written at every recorded game, not only at a paid one; otherwise a player who never won would look like a container of the old code and would be estimated again at every load. For tokens the mark is the keyearned. - The weak spot is named. When both keys are damaged at once, the container looks old and the estimate pays again: it is a restoration of losses, not a double payment, and it takes two damaged keys.
The tests that until then guarded that Colony pays nothing changed in the same commit as the code. At R3b one mutation passed unnoticed: removing the condition Autopilot.isAssisted from recordBoard broke no test, and the line therefore disappeared from the code instead of remaining without evidence. An older build from before M8a drops the key realms, and with it the XP and the tokens of Rokgard; the answer 11 accepted it, because nothing is released.
What is not built yet
Update of 1 November 2026. Step R3c1 is built (version 0.68.9, 31 October); R3c2 and R3c3 were not done separately, they were absorbed by steps H3 (panel and screen Your hero, version 0.74.4) and H1 and H2 (icon and reputation, versions 0.71.2 and 0.72.0). The story of the home screen is in the article Home page without a spinning die (forthcoming article no. 34). The wardrobe of Rokgard (R3e) and Talents and Trophies in the Campaign (R5) still wait. The rest of this section is the state of 31 October.
Everything that the previous parts describe is in the data, on the closing card of Colony, in the chip of the Rokgard hub and in the achievements window. The home screen is in the state before the split. According to the code of 31 October 2026 (version 0.65.6):
| Step | What it brings | State in the code |
|---|---|---|
| R3c1 | header without the die, the level and the purse; a panel of each realm (hero, level, coin); Your hero and Collection into the hub of Kastgard | not there: index.html has in the header #hubHero (the spinning die), #hubLevel, #hubCoins (Golden Dice), #hubStone, #hubIron; the analysis puts it after M8b |
| R3c2 | the Your hero screen without inputs, its settings window, settings per realm | not there |
| R3c3 | the slogan "Conquer the maps, become the Hero of Asgard." in nine languages, the reputation of Asgard on the screen, "Hero Dice" → "Hero", the level toast with the name of the realm | not there: the slogan is not in the code, Hero.reputation has no screen, the toast "Level N!" has the same words for each realm |
| R3e | the wardrobe of Rokgard: stone and die, frames of the token, own themes; spending of tokens | not there: the manifest of Rokgard has wardrobe: none, tokens are spent nowhere, only the disc is offered |
| R3g4 – R3g6 | 7 chains of Rokgard; three general chains and the tab General; prefixes of ids | not there: Rokgard has 0 chains, without a realm there are 0 |
| R5 | Talents and Trophies from the Collection into the section Campaign (decided 30 October) | not there: the Collection has five tabs (Die, Talents, Looks, Trophies, Hall) |
| M8b | cutting the core off app.js (18 hosts, 112 edges) | not there |
(R3f, the hero of Rokgard, is not built: the hero is a token.)
For a player this means today the following. In the hub of Rokgard they see in the header a spinning die of the hero of Kastgard and the Golden Dice of Kastgard; the tokens and the level of Rokgard they see only in the chip of the hub and on the closing card. The Collection (die, talents, looks, trophies) is not divided by realms. The reputation of Asgard is a function without a screen. Tokens are collected, but there is nothing to spend them on. Lines pays nothing: only Colony has a payout table, and tic is a solved game, which according to the analysis should pay nothing even then (the article about the game Three in a row).
The order is given by the dependencies. R3c1 changes app.js, the file that every step of R3 touched, so the analysis puts it after M8b cuts its part; DESIGN §95 places M8b among what remains after the move of Kastgard. R3g4 waited for XP and tokens (otherwise the step would pay without a currency); both are now in the game.
Sources and notes
- Decisions and dates:
docs/ROADMAP.md, chapter 26 (blocks "Decided" of 29 and 30 October) and chapter 27 (payment by moves in Kastgard). - Measurements and state:
docs/R3-REALM-ECONOMY.md(parts 1, 2, 3, 5 and 8),docs/TUNING.md§40 – §41,docs/R3-ACHIEVEMENTS-BY-REALM.md. - Steps and proofs:
docs/DESIGN.md§81 – §88 and §95; the commandsnode tools/core/xp.js --checkandnode tools/core/realms.js --checkof 31 October 2026.
What could not be verified: the manual playability of Rokgard with the new economy (5 seconds per move is an estimate; nobody measured the advantage against the Strong AI); the migration tools were not run, their counts are from DESIGN; the panels of Rokgard and the tabs of the achievements window are proven only on toy chains; the look of the home screen comes from grep, not from looking at it, and the observation of 31 October 2026 comes from the assignment of this article; seven languages besides English and Slovak have machine drafts; at 3 seconds per move the analysis gives 464 XP per hour, the tool 465.