Playmatter

Privacy

Playmatter sends anonymous usage statistics to a server run by its developer, at analytics.playmatter.bybrooklyn.dev. That is the only address the game sends anything to. They are on by default and can be turned off in the settings. They show whether the game runs well, where it crashes and which parts get used.

The game does not send your name, an account, an e-mail address, file or folder names, text you type, things you build or screenshots. The server does not store your internet address or your country.

Everything that is sent is listed on this page. If the game sends something that is not listed here, that is a bug.

Turning it off

On first launch the game shows this line in the corner of the screen: "Anonymous usage statistics are on. You can turn them off in the settings." Nothing is sent before that line has been shown, or for 30 seconds after it.

The install ID

The game makes a random 128-bit number, the install ID, and keeps it in statistics.json in its settings folder. It is not derived from your hardware, user name or any account. The server uses it to tell ten sessions from one copy of the game apart from ten copies.

What is sent

Messages are sent a few seconds after the game starts, every five minutes, and when it closes. Every message has these fields:

SentWhat it isExample
Format versionWhich version of this list the message follows1
Install IDThe random number described aboved294ddb6b44c…
Session IDA random number for this run7c1e09aa35f2…
Message number0 for the first message of the run, 1 for the next, and so on3
Game versionThe version of the game0.0.1
BuildRelease or developer buildrelease

Once per run

SentWhat it isExample
Operating systemThe familylinux, windows
System versionThe system's name and version number. On Linux, the distribution's name and the kernel version. Not the machine's nameUbuntu 24.04, kernel 6.8.0
Processor typeThe architecture, not the modelx86_64
Processor coresHow many8
MemoryIn whole gigabytes16
Graphics adapterThe model name the driver reportsNVIDIA GeForce RTX 3070 Ti
Graphics interfaceWhich one the game is usingvulkan
Window sizeWidth and height in pixels1920, 1080
Refresh rateOf the display, in hertz144
Tick rateThe simulation setting120
VsyncOn or offfalse
Frame capThe setting; 0 for none0
ModsThe number of mods running. Not their names or contents2

During the run

Each message repeats the run's totals so far. They are totals, not a record of when you did what.

SentWhat it is
LengthSeconds since the game started
Time in the sandboxSeconds, and how many of them were paused, in slow motion or in fast forward
FramesHow many frames were drawn
Frame timeMean, median, 95th and 99th percentile and the worst, in milliseconds
Slow framesThe share of frames too slow for 60 frames a second, and the share too slow for 30
Tick costMean and 99th percentile of the time one simulation step took, in milliseconds
Most bodies and peopleThe largest number of physics bodies, and of people, in the world at once
Time held backSeconds in which the simulation was slowed down to keep the frame rate up
The same per mapThe rows above for each map you were on, with the map's name. Only maps that come with the game are named; any other is counted as "(other map)"

What was used

These are counts with no times attached.

SentWhat it isExample
Items spawnedHow many of each catalog item, by catalog name. An item added by a mod is counted as "(mod item)"Human: 3, Crate: 2
Tools and powers usedHow many times each was used, by nameDrag: 40, Pin: 1
Maps openedHow many times each map was opened, by nameDefault: 1, Sea: 1
Settings changedThe names of settings that are not at their defaults, without their values. Changed key bindings are sent as the single name "bindings"video.vsync
Quick saves and loadsHow many1, 0
ContraptionsHow many were saved, placed, and imported from the original game. Not their names or contents0, 2, 0

When the run ends

SentWhat it is
LengthSeconds the run lasted
Ended cleanlyYes if you closed the game, no if it was killed or crashed

If the last message cannot be sent when the game closes, it is kept on your machine and sent the next time the game starts. After three failed starts it is deleted.

Crashes

When the game stops with an internal error it writes a report to its data folder and sends it the next time it starts.

SentWhat it isExample
The error messageThe game's description of what went wrong, at most 300 charactersindex out of bounds: the len is 3 but the index is 7
WhereThe source file, line and column in the game's codecrates/game/src/ui.rs:120:9
ThreadThe name of the thread it happened onmain
What was runningUp to 24 function names from the game and its engine, some with source file and lineopenplayground::ui::toolbox
WhenSeconds since the game started431

An error message can contain a file path. Before the report is written, the game removes your home folder and user name from the message. If a path remains that is not part of the game's own source code, the message is cut off at that point. The server checks again and discards anything that still looks like a path.

What the server adds

The server records the date, without the time, on which it first heard from a session.

It does not store your internet address or your country. The statistics go to computers run by Cloudflare, which see the address a request comes from while they handle it, as any internet service does. The collector uses the address to limit how many requests one machine can send. It counts requests against a hash of the address made with a secret, and the hash changes every day. The address is not written to the database or to a log, and request logging is switched off.

What is kept on your machine

How long it is kept

180 days. Each day the server deletes sessions, frame times and crash reports older than that, and install IDs it has not heard from in that time.

Deleting your data

Write to playmatter@bybrooklyn.dev with your install ID. The settings show it, and it is in statistics.json. Everything stored under that ID is then deleted. The ID is the only way to find your data, so if you have reset it or deleted the file, the old data cannot be found and is removed when it is 180 days old.

When nothing is sent