Kiln Island Docs
KilnIsland Play
Docs

How it actually works

Everything on this page is measured, not described: the trait counts come from the built collection, the stats from the game’s own stat sheet, and the catch table is read out of the same rules file the game rolls against.

← Back to the homepage

Traits

Every value, drawn

Eighteen slots and values between them, every one an authored pixel map rather than a generated one. Generation was tried first and could not hold a 24 pixel bust, or keep a silhouette stable between two tokens sharing a trait.

Each swatch below is rendered by the same generator that draws the collection, cropped to the pixels that slot actually changes, and labelled with how many of the carry it. Rarest first.

Nothing is claimed in metadata that is not drawn, which is why a token wearing no headwear has no headwear line rather than one reading none. The same rule hides a hair colour under a helmet and an iris behind shut eyes, so a percentage here is the share of tokens the trait is visible on rather than the share it was rolled on.

Rarity

Stats you can recompute

Four stats, derived from how rare a token’s traits actually are in the minted supply, not rolled and not chosen. A token’s score is the sum of 1/frequency over its traits, then rank-normalised to 1 to 20. Rank-normalising is what makes the spread honest: all four stats have a mean of exactly 10.50, so no stat is quietly the good one and no token is strong everywhere.

StatMinMaxMean What it moves

Stats live in the game’s stat sheet, derived from the published metadata. Whether they also become on-chain traits is not decided, and it changes what a holder can verify without trusting the game.

Catch rates

The real odds

Every outcome that carries value lives in one small module with no DOM, no randomness of its own and no globals, because the caller passes the random function. The browser runs it so a cast answers instantly; a server will run the same file so a player cannot simply announce a thousand eels. Written once, the two cannot disagree. It is also the only way to check a distribution: 100,000 rolls in Node assert the odds match what the game claims.

SCALE is the in-game unit, and it stays one. It has no contract and no market, it cannot be sold, and the only way it leaves is being spent on gear, so it is destroyed rather than paid out. Making the game coin the tradable token would mint a token every time a fish was sold, which is the failure this whole design is arranged to avoid. How a catch turns into something outside the game is the loop below, and it never passes through coin.

The loop

How a catch becomes stock

One cast produces one item, and that item has two futures that exclude each other. Sell it and you are paid coin, immediately and with certainty. Consign it and you are given a ticket instead, which settles for a share of what the round collected. Nothing is ever both.

Coin buys gear and only gear. It never converts into stock at any price, and that is the whole reason play cannot drain the basket: the basket is filled by trading fees from outside the game, and the only thing fishing decides is how that fixed amount gets divided.

Certain Sell at the Fishmonger Paid in coin the moment you hand the creel over. Coin buys rods and feed, both of which make you gather faster. It buys nothing else, and it leaves the game nowhere.
Uncertain Consign at the trading post Paid in tickets, which settle when the round closes. What a ticket is worth is not known when you make it, because it depends on how many other tickets stand against the same pool.

The two balance each other without anyone tuning them. Heavy consigning dilutes every ticket, which makes selling the better move; heavy selling thins the tickets, which makes consigning the better one. The choice stays live because the crowd keeps moving it.

What each fish is worth, and which slot it feeds

FishRaritySells for Consigns toThat ticket is worth

Rarer fish sell for more and feed a thinner slot, so the two rewards point the same way. Every catch is one ticket regardless of what it was: an earlier version gave rare fish several tickets each, and that cancelled almost exactly against their falling odds, leaving the rarest catch worth 1.2 times the commonest. Flattening it to one ticket apiece is what made rarity matter.

The creel holds , and fish and produce share it. A full creel refuses a cast rather than taking a fish with nowhere to put it.

Rods, and whether they are worth buying

RodCostsCoin per hour CyclePays back after

The payback column is there because a rod that costs more and does more is not automatically a rod worth buying. Measured this way the top two are a poor deal, and that is published rather than hidden.

Two things the rate model does not know. It assumes you never miss a hook, which is the main thing a better rod protects you from, so it understates the gear. And it assumes unbroken fishing, which nobody does.

The paddock

AnimalYieldsWorth StoreReady everyConsigns to
FeedCostsEffect

Produce accrues while the page is closed and stops at the store, so time away is rewarded but not indefinitely. Feed shortens the interval and never raises the store, because a bigger store would be a bigger cap and caps are not for sale.

What luck actually changes

LUKCoin per catch Coin per hourAgainst LUK 1

The token you hold moves the rate further than every rod combined, which is deliberate: the collection should matter more than the grind.

The basket

Where the value comes from

Nothing in the game creates value. Trading the launchpad token does, through a fee on every buy and every sell, and that fee arrives as ether in the creator wallet. The ether is swapped into four stock tokens in equal quarters, and that pool is what tickets are settled against.

So the direction matters: value flows from trading into the game, never out of the game into trading. Fishing does not mint anything. It only decides who gets which share of an amount that was already fixed before anyone cast a line.

The four it holds

SymbolNameContractFee tier HoldersPool depth

Why two fish on one stock is not two shares of it

StockFish feeding it Share of tickets at LUK 1At LUK 10 At LUK 20One ticket is worth

Two of the five fish point at the same stock, so it collects most of the tickets in the round. That is not a bigger share of the basket, it is a thinner slice of the same quarter, because the quarters do not move. The slot everyone feeds pays the least per ticket, and the slot almost nobody reaches pays the most.

It also means the gap closes as luck rises. A table where everyone lands on the rare end is a table where the rare end is no longer rare, and the arithmetic says so without anybody having to tune it.

What one ticket settles to

Tickets standing One ticket settles toWhich is

There is no rate here and there never will be one. A ticket is a numerator over a denominator nobody controls, so any figure printed as a yield would be a promise the design cannot keep. The table above is arithmetic on an illustrative pool, not a forecast.

None of this is the in-game coin. That coin has no contract and no market, it cannot be sold, and it leaves the game only by being spent on a rod or on feed. The pool is the other thing entirely: real stock, bought with real fees, held against tickets. A player never converts one into the other in either direction.

What the payout depends on

These are not tasks on a list. They are the conditions the arithmetic above rests on, and each of them changes what a round can pay rather than when it arrives.

The island

Where each thing happens

One town on a grid you walk, with a jetty running into open sea. Every building that has a name now has a job, which was not true for most of them until the loop was wired.

WhereWhoWhat you can do

The four stats

StatRangeMean What it does today

Every stat comes from trait frequency, not from a second roll: a token's score is the sum of one over the frequency of each trait it carries, rank normalised onto one to twenty. That is why all four means land on exactly 10.50, and why redrawing the art leaves every stat untouched.

Two of the four do nothing yet, and saying so is the point of this row.

Assertions

What is checked, and how

Almost every real defect in this project was invisible on screen and obvious in a number. A sign that read backwards, a one pixel gap in a jacket, livestock rendered inside out, a rarity reward that cancelled itself out, a rod affordable on the first afternoon. None of those were caught by looking.

Twice a check passed while the bug it was written for survived, because it measured something next to the property instead of the property. That is the failure worth naming: a green suite is only worth what its checks actually assert.

A round, worked through

What you actually get

One formula, run once per stock, and then added up.

your share = that stock’s pot × your tickets on it ÷ every ticket anyone consigned on it

Your LUKStockYour tickets All ticketsYour share You take

Read the fourth column before the last one. A ticket count in the thousands sounds enormous and means nothing on its own: what it buys is a fraction, and the fraction is what arrives.

Add up what every player takes and the answer is exactly the pool, never a fraction more. The game does not mint anything. It decides who gets which part of an amount that was already fixed before anybody cast a line, and that is the only reason it can keep doing it.

Which is also why no rate can be promised. The denominator is not known until the round closes, so any figure printed as a yield would be a number the design has no way to keep.