Trashure Island · Methodology
How a round becomes data
Trashure Island records how players steer: what they see and what they decide. This is the exact path of that data, the code that handles it and what it is worth.
Exploratory Recording since 30 October 2026. Corpus in progress, publication planned for 2027.
- pilot frames
- 10 / s
- world observations
- 5 / s
- per upload to the server
- 15 s
- per full round
- 255 ko
01 The plan
Each room is a stage, each door a possible passage. Under each name, the code that does the work.
01 The game
The player sails for three minutes. On every frame the recorder looks at what was pressed and what the boat received.
gameLoop()trashure-fury.htmlcalls the recorder after every move_runRec.tick()trashure-fury.html10 frames and 5 observations a second, on a fixed step
02 The choice
A menu checkbox, separate from the required consent. It comes back ticked on every load, so one kiosk player doesn't decide for the next.
#research-inputtrashure-fury.htmlread once, when the round starts
03 Anonymising
Each round gets a random ID, used once. The name, email and score are not copied into the recording: the public leaderboard shows the score next to a name.
newRunId()trashure-fury.htmlrandom ID, rounded hourflush()trashure-fury.htmlpacks a 15-second chunkti_run_pendinglocalStoragequeue on the device, 3 MB at most
04 The contacts
Emails and scores live in another room on the server. The public leaderboard reads from here, never from the trajectories.
onRequest()party/main.tsreceives consents and scores?action=adminparty/main.tstoken-protected access
05 The trajectories
The server checks the shape of each chunk, drops any unknown field and rounds the receive time. Sending a chunk again overwrites it, so a retry can't create a duplicate.
validateRunChunk()party/main.tsrefuses anything of the wrong shapeonRunsRequest()party/main.tsstores in a dedicated roomDO_JURISDICTIONparty/wrangler.jsoncstorage restricted to the EU
06 The corpus Planned 2027
The export and the schema already exist. Publishing the corpus is planned for 2027.
export_runs.pyscripts/regroups chunks, one round per fileRUNS_SCHEMA.mddocs/describes every field
07 The analysis Planned 2027
Comparing human decisions with an autopilot's, on the same situations replayed. None of this has been done yet: it is planned for 2027.
02 What a round records
An observation is what the player has in front of them. An action is what they decide. The corpus pairs the two, across the whole round.
The pilot
10 times a second
Position, heading, health, boost, level, plastic picked up, controls wanted and received, stick position.
The world
5 times a second
Position and state of every moving actor: whale, pirates, other boats.
The events
as they happen
Plastic appearing or disappearing, mines, bombs and where they land, upgrades, change of input device.
One frame, spelled out
- t
- 0,10 s
- game clock
- x, z
- 0,3 · −118,6
- position on the map
- heading
- 0,190 rad
- where the bow points
- wanted
- forward
- what the player presses
- received
- nothing
- the engine hasn't caught yet
From a test round. The full schema
03 What this data says
It shows
- Which target a player picks, and in what order
- How far from a threat they start to steer away
- When they hesitate or change course
- How their choices shift as the clock runs down
It does not show
- How a real boat handlesgame physics: constant turn rate, no inertia
- What an autopilot would dothe in-game Hydronaute follows a scripted route
- What people in general would decideplayers are not a representative sample
- The first seconds of a roundthey mostly show someone learning the controls
This data complements trials on the water: it is not enough, on its own, to train or validate an autonomous system.
04 Verification
Sampling rate
1 802 / 1 800
Frames recorded over a three-minute test round, against 1,800 expected. 901 observations against 900.
Report and recording
2.42 km · 2.41 km
The distance shown to the player, recomputed from the raw recording. Hits: 5 and 5. Wrecks: 0 and 0.
Box unticked
0 chunks
A full round played without sharing: nothing on the server, nothing waiting.
Real round
30 Oct 2026
First round in real conditions: one chunk every 15 seconds to the end, no server errors seen.
These measurements show the recorder does what it says. They say nothing about what the corpus will be worth to research.
The code and its tests are public: github.com/Biutopic/Trashure-Island