Artificial World

Message reference#

Every message a client can send this server and every message the server can send back, field by field, with every shape those fields are made of. It is read off the server's own message definitions when the server starts, so what is written here is what the running server accepts and sends — a message kind or a field added to the server is on this page without anybody editing it.

The protocol page says how the messages are used together: how a session starts, what a client subscribes to, what an action's reply promises. The schema reference has every closed set a field can name, how identifiers and positions are written, and every bound the world enforces.

Field names are written exactly as they appear on the wire. Required is about the client writing the message: yes means the server refuses the message without it, no means it may be left out, and a default is what leaving it out means. A field marked derived is one the server computes and sends, and never reads.

Client to server#

Anything a client sends.

Each one carries "type": "…" naming which it is, spelled exactly as the headings below.

hello#

Opens a session, states which protocol the client speaks, and says who is playing.

FieldTypeRequiredMeaning
ProtocolVersionintegeryesThe protocol this client speaks. Must be 1; anything else is answered with an error and the rest of the message is ignored.
TokenstringnoThe secret proving this account is yours. Given when the account was registered; omitted on a first connection, which registers.
ClientNamestringno, default "unknown"Free text for logs, such as "Unity Editor".
LoginNamestringnoStable account name. Null for an anonymous session.
DisplayNamestringnoName other players see. Defaults to the login name.
ResumeKeystringnoWhich browsing context this connection belongs to, so a reload is recognised as the same one coming back rather than a second arrival. Opaque to the server, which never reads it as anything but a label.

chunk_subscribe#

Asks for chunks to be streamed. This is the client's area of interest: the server sends nothing about a chunk nobody is subscribed to.

FieldTypeRequiredMeaning
Chunksarray of ChunkIdyesThe chunks to start watching. Each one newly watched is answered with its snapshot, and from then on with deltas.

chunk_unsubscribe#

Stops the streaming of chunks the client no longer wants; nothing more is sent about them until they are asked for again.

FieldTypeRequiredMeaning
Chunksarray of ChunkIdyesThe chunks to stop watching.

action_request#

Asks the server to do something. It may refuse.

FieldTypeRequiredMeaning
RequestIdstring (a UUID)yesCorrelates the reply, so a client can await one action among many.
Actionone of the actions, by actionyesWhat to do: one of the actions, named by its action field.

simulation_control#

Changes the server's simulation speed. Deliberately a server concern: a client changing its own time scale would only desynchronise itself.

FieldTypeRequiredMeaning
SpeedintegeryesThe multiplier: 0, 1, 2, 5, 10 or 50. Anything else is refused, and so is anybody not connected from the machine the world runs on.

metrics_request#

Asks for the server's counters. Answered with server_metrics; the same figures are served at /metrics.

No fields beyond type.

blueprint_request#

Asks for a design the client has been told about but does not hold.

FieldTypeRequiredMeaning
BlueprintBlueprintIdyesWhich design, as a snapshot's visual component or a list names it.

blueprint_list_request#

Asks what designs exist.

No fields beyond type.

player_list_request#

Asks who else is connected.

No fields beyond type.

agent_list_request#

Asks what the world's agents are doing.

No fields beyond type.

chat_send#

Says something. A request like any other: the server decides who hears it, and may refuse.

FieldTypeRequiredMeaning
ScopeChatScopeno, default PublicWho should hear it. Public when omitted.
TextstringyesWhat to say. Length-capped and stripped of control characters server-side.
TostringnoWho to say it to, for Direct: a player's login name or an agent's name. Ignored otherwise, and resolved to an OwnerId by the server — a name is how somebody addresses another, an id is who they reached.

prompt_list_request#

Asks what the world is currently waiting on an answer to.

No fields beyond type.

Actions#

The actions a client may request.

Each one carries "action": "…" naming which it is, spelled exactly as the headings below.

move_entity#

Starts a journey for something with a movement component. It takes simulated time, and the destination's height is the server's: the point is snapped to the ground, or to a floor the walker can reach from where it is. Needs Control.

FieldTypeRequiredMeaning
EntityEntityIdyesWhat to move.
DestinationWorldPositionyesWhere to. The height you send is ignored.

teleport_entity#

Puts an entity somewhere now, with no journey. Judged exactly as MoveEntityAction is, plus a refusal for open water; the height names the storey wanted and the server lands it on the surface there. Needs Control.

FieldTypeRequiredMeaning
EntityEntityIdyes
DestinationWorldPositionyes

remove_natural#

Fells a tree or clears a rock, recording a world delta.

FieldTypeRequiredMeaning
EntityEntityIdyesThe tree or rock. Needs Destroy.

demolish_entity#

Unbuilds something that was built, deleting what was stored for it.

FieldTypeRequiredMeaning
EntityEntityIdyesWhat to take down. Needs Destroy, which a claim over the ground never gives over somebody else's property standing on it.
WithContentsbooleanno, default falseWhether what it holds is destroyed with it.

inspect_entity#

Asks for one entity in full: every component, what can be asked of it, and what you may do to it. Needs Inspect, which anybody has.

FieldTypeRequiredMeaning
EntityEntityIdyesWhat to look at.

claim_land#

Claims unheld ground.

FieldTypeRequiredMeaning
Chunksarray of ChunkIdyesThe chunks to claim. Refused entirely if any one of them is already held, and refused outright for an anonymous session.

release_land#

Gives claimed ground back, in whole or in part.

FieldTypeRequiredMeaning
Chunksarray of ChunkIdyesThe chunks to give back. All of them must be yours.

program_entity#

Puts a script on something, which needs Program permission.

FieldTypeRequiredMeaning
EntityEntityIdyesThe machine.
ScriptPathstringyesA path on the machine's own filesystem, such as /main.lua.

spawn_blueprint#

Builds a machine from a stored design. Needs Build permission on the ground it will stand on.

FieldTypeRequiredMeaning
BlueprintBlueprintIdyesThe design to build from.
PositionWorldPositionyesExactly where to put it. Nothing is snapped: the caller decides the height, and a design with a physics component falls from there.

save_blueprint#

Saves a design, so a person can make a thing rather than only place one somebody else made.

FieldTypeRequiredMeaning
NamestringyesWhat to call it.
EntityTypeEntityTypeyesWhat kind of thing it is — a validated string, not a closed set.
VisualProceduralAssetDefinitionyesThe shapes it is made of.
Componentsobject of string by stringnoComponents a spawned one should carry, by registered name and JSON.
Scriptsobject of string by stringnoScripts to put on a spawned one's filesystem, by path.
Includesarray of BlueprintPartnoOther designs this one is built from.
RevisesBlueprintIdnoA design of the sender's this is a new description of.

delete_blueprint#

Removes a design of the sender's from the catalogue.

FieldTypeRequiredMeaning
BlueprintBlueprintIdyes

set_access#

Says who else may do what with something of yours.

FieldTypeRequiredMeaning
ToOwnerIdyesWho is being let in, or shown out.
PermissionsPermissionyesWhat they may do.
Grantingbooleanno, default trueFalse to take it back.
EntityEntityIdnoThe thing this is about, if it is about a thing.
AtWorldPositionnoWhere the ground is, if it is about ground.

set_public_access#

Says what anybody at all may do with something of yours.

FieldTypeRequiredMeaning
PermissionsPermissionyesWhat anybody may do. Replaces the previous policy rather than adding to it.
EntityEntityIdnoThe thing this is about, if it is about a thing.
AtWorldPositionnoWhere the ground is, if it is about ground.

request_access#

Asks somebody to let you in.

FieldTypeRequiredMeaning
PermissionsPermissionyesWhat you are asking to be allowed.
NotestringnoA line for the owner, saying why.
EntityEntityIdnoThe thing this is about, if it is about a thing.
AtWorldPositionnoWhere the ground is, if it is about ground.

create_agent#

Asks for an agent to be created and set to work.

FieldTypeRequiredMeaning
NamestringyesWhat to call it.
BrainstringyesWhich brain should decide for it, such as city or dummy.
Goalsarray of stringyesWhat it is for. At least one and at most sixteen, each at most 120 characters; the world refuses more, and names the bound when it does.
AtWorldPositionnoWhere to put it to work. Omitted means wherever the server finds room.
ScriptstringnoA brain written in Lua, for an agent nobody has written a brain for. Given one, Brain is ignored and the agent runs this.

dismiss_agent#

Dismisses an agent.

FieldTypeRequiredMeaning
AgentAgentIdyesWhich agent. Only the account that employed it may dismiss it.

use_entity#

Uses something. The general verb: the server checks permission and delivers a use event to the thing's scripts, which decide what it means. A door and a market stall are the same action with different Lua.

FieldTypeRequiredMeaning
EntityEntityIdyesWhat to use. Needs Use, and to be within reach of it unless it is your own.

transfer_items#

Moves items between two inventories. Needs Handle on both ends, because taking is as much an imposition as giving, and the two ends have to be within reach of each other unless both are the asker's own. Everything moves, or nothing does.

FieldTypeRequiredMeaning
FromEntityIdyesThe inventory to take from.
ToEntityIdyesThe inventory to put into.
ItemstringyesThe item's name, as the inventory lists it.
QuantityintegeryesHow many.

exchange_items#

Swaps goods both ways at once, or moves nothing.

FieldTypeRequiredMeaning
AEntityIdyesOne side of the trade: the one that gives Give and receives Take.
BEntityIdyesThe other side.
GivestringyesWhat A hands over.
GiveQuantityintegeryesHow many of Give.
TakestringyesWhat B hands back.
TakeQuantityintegeryesHow many of Take.

start_script#

Runs a script already on a computer's filesystem.

FieldTypeRequiredMeaning
EntityEntityIdyesThe machine.
ScriptPathstringyesThe script's path on that machine.

stop_script#

Stops one running process on a machine. Needs Program.

FieldTypeRequiredMeaning
EntityEntityIdyesThe machine.
PidintegeryesThe process, by the id the machine's computer component lists.

answer_prompt#

Answers a question the world put to you.

FieldTypeRequiredMeaning
PromptPromptIdyesWhich question. Assigned by the server when it was raised.
OptionstringyesWhich of the answers it offered.
Valuesobject of string by stringnoWhat was typed into the fields it asked for, by their names.

set_readout#

Puts a reading above something, or takes one away.

FieldTypeRequiredMeaning
EntityEntityIdyesWhat to show it on. Needs Modify.
KeystringyesWhich reading: lowercase letters, digits and underscores. Writing the same one twice replaces it.
ReadoutReadoutChangeyesWhat to change about it. A reading left with neither words nor a number is taken down.

Server to client#

Anything the server sends.

Each one carries "type": "…" naming which it is, spelled exactly as the headings below.

world_bootstrap#

Everything a client needs before it can render anything.

FieldTypeRequiredMeaning
ProtocolVersionintegeryesWhat this server speaks.
PlanetIdPlanetIdyesWhich world this is.
PlanetNamestringyesWhat the world is called.
SeedintegeryesWhat the terrain is generated from. A client holding the seed can generate matching natural visuals itself.
GeneratorVersionintegeryesWhich generator made the terrain from that seed; a different version is a different planet from the same number.
RegionSizeMetersnumberyesThe unit of region activity, in metres.
ChunkSizeMetersnumberyesThe unit of streaming, claiming and searching, in metres.
SeaLevelMetersnumberyesThe height water stands at, in metres.
SimulationSimulationStateSnapshotyesThe clock, its speed and what it has scheduled, as of this message.
SpawnPositionWorldPositionyesWhere a client should place a newly arrived player. Deterministic for a given seed, and chosen to be dry land rather than whatever the origin happens to be.
PlayerPlayerSnapshotnoWho this connection is. Null for an anonymous session, which can watch the world but owns nothing.
MayControlSimulationbooleanyesWhether this connection may change how fast the world runs.
Brainsarray of stringyesThe names of the brains this server can run, for a create_agent's Brain. Empty means this world runs no agents at all.

chunk_snapshot#

A chunk's terrain and everything currently standing in it.

FieldTypeRequiredMeaning
ChunkChunkIdyesWhich chunk.
DominantBiomeBiomeTypeyesThe biome most of it is.
HeightmapHeightmapSnapshotyesIts terrain, sampled on a grid that shares its edges with the neighbouring chunks.
Entitiesarray of EntitySnapshotyesEverything standing in it, described in full.

entity_delta#

What changed in a chunk since the last message about it.

FieldTypeRequiredMeaning
ChunkChunkIdyesWhich chunk this is about.
Updatedarray of EntitySnapshotyesThe entities that changed, described in full.
Removedarray of EntityIdyesThe entities gone from this chunk: destroyed, or walked into another one.

action_result#

The answer to an action_request, refusals included. It is always sent, and it reaches the asker before any delta describing what the action changed.

FieldTypeRequiredMeaning
RequestIdstring (a UUID)yesThe request this answers.
SuccessbooleanyesWhether it happened.
ErrorstringnoWhy the server refused. Null when it did not.
EntityEntitySnapshotnoThe entity the action concerned, when the client asked to inspect one.
Affordancesarray of EntityAffordancenoWhat can be asked of that entity, whenever one is described.
PermissionsPermissionnoWhat the server currently thinks the asker may do to that entity.
RemovedbooleannoWhether the entity the action concerned is gone because of it.
PromptPromptSnapshotnoA question the world put to the asker while carrying this out.
DesignDesignResultnoWhat became of the design a save_blueprint or delete_blueprint concerned. Absent for every other action.

simulation_state#

The clock changed speed. Sent to every client, because everybody shares one clock.

FieldTypeRequiredMeaning
SimulationSimulationStateSnapshotyesThe clock as it now stands.

server_metrics#

The server's counters, answering a metrics_request.

FieldTypeRequiredMeaning
MetricsServerMetricsSnapshotyesThe counters.

blueprint#

A design, so the client can build its model at runtime.

FieldTypeRequiredMeaning
BlueprintBlueprintDefinitionyesThe whole design.

blueprint_list#

What designs exist, without their full definitions.

FieldTypeRequiredMeaning
Blueprintsarray of BlueprintSummaryyesOne summary per design in the catalogue.

player_list#

Who is connected, and roughly where.

FieldTypeRequiredMeaning
Playersarray of ConnectedPlayeryesEverybody the world counts as here, whether over a socket or over MCP.

agent_list#

What the world's agents are doing.

FieldTypeRequiredMeaning
Agentsarray of AgentSummaryyesEvery agent, as somebody watching it needs to see it.

chat#

One line of chat, as delivered.

FieldTypeRequiredMeaning
ScopeChatScopeyesWho this line reached.
FromOwnerIdyesWho said it: a player or an agent, kind included.
FromNamestringyesTheir name, as the server holds it — never as a sender asserted it.
TextstringyesWhat was said, after cleaning.
Atstring (a timestamp)yesWhen it was said, by the wall clock.
ToOwnerIdnoThe recipient, for a direct message. Null for everything else.
ToNamestringnoThe recipient's name, for a direct message.

prompt#

Something in the world is asking you a question.

FieldTypeRequiredMeaning
PromptPromptSnapshotyesThe question.

prompt_list#

Everything currently waiting on this connection's answer.

FieldTypeRequiredMeaning
Promptsarray of PromptSnapshotyesEvery question still waiting on this connection.

error#

A request the server would not carry out. Never a reason to drop the connection: invalid input is expected, not exceptional.

FieldTypeRequiredMeaning
MessagestringyesWhat was wrong.
DetailstringnoMore, when there is more to say.

Shapes the messages carry#

The objects the fields above are made of, by the name the tables use for them.

AgentGoalSummary#

One goal, and whether the agent considers it done.

FieldTypeRequiredMeaning
NamestringyesThe goal, in the words it was given.
CompletedbooleanyesWhether the agent considers it done.

AgentSummary#

One agent, as somebody watching it needs to see it.

FieldTypeRequiredMeaning
IdAgentIdyesWhich agent.
NamestringyesWhat it is called.
BrainstringyesWhich brain decides for it, such as city or dummy.
Employerstringno, default ""Who employed it, written as an owner — player:<uuid> — or empty where nobody is on record.
StatestringyesIdle, Waiting, Thinking, Finished or Failed.
ThoughtCountintegeryesHow many times its brain has run.
NextThinkTimeTicksintegernoWhen it is next due to think, in simulation ticks. Null means dormant.
BodyEntityIdyesIts character, or the empty identity while it has none.
HomeEntityIdyesThe machine it thinks on.
PositionWorldPositionnoWhere its character stands, or where its machine is if it has none.
DestinationWorldPositionnoWhere it is walking to, if it is.
Goalsarray of AgentGoalSummaryyesWhat it is for, and how far it has got.
Memoryobject of string by stringyesWhat it has written down about its own work, such as which step it is on.
ReasoningstringnoThe line its brain last gave for what it did.
LastActionsarray of stringyesWhat its last thought asked for, and whether the world agreed.

AssetPart#

One piece of a procedural model.

FieldTypeRequiredMeaning
IdPartIdyesThe part's name within the design: lowercase letters, digits and underscores, starting with a letter.
PrimitivePrimitiveShapeyesWhich shape.
ParentPartIdno, default "" (none)The part this hangs from, or none for a root part.
PositionWorldPositionnoOffset from the parent's pivot, in metres, in the parent's own frame — so a turned parent swings this round with it, while its scale leaves it alone.
RotationWorldRotationno, default (0, 0, 0, 1)How it is turned relative to its parent.
ScaleWorldPositionno, default (1, 1, 1)Size in metres along each axis.
MaterialAssetMaterialno, default WhiteWhat it is made of, from the named materials.
ColourPartColournoA colour of the design's own choosing, overriding Material.
SurfaceMaterialIdnoA surface pattern from the design's own Materials, drawn over this part.
SurfaceTilingnumberno, default 1How many times the surface pattern repeats across a metre.
SemanticTagstringnoWhat this part is for, such as head or lower_arm_left.
Solidbooleanno, default falseWhether this part blocks movement.
Patharray of PathPointnoThe line a Ribbon runs along, in this part's own frame, in metres. Null for every other shape, and for a ribbon that simply runs straight.
Drapedbooleanno, default falseWhether this part lies on the ground it crosses rather than holding the shape the design gave it.
IsRootbooleanderived — sent, never readWhether it hangs from nothing.

BlueprintDefinition#

A design something can be built from.

FieldTypeRequiredMeaning
IdBlueprintIdyesThe design's identity.
NamestringyesWhat it is called.
CreatorOwnerIdyesWho designed it. A player, an agent, or the world itself.
VersionintegeryesWhich version of its line this is. The first is 1.
SupersedesBlueprintIdnoThe design this one replaced, or none if it is the first of its line.
CreatedAtstring (a timestamp)yesWhen it was saved, by the wall clock.
VisualProceduralAssetDefinitionyesWhat it looks like.
EntityTypeEntityTypeyesWhat entity type a spawned instance has.
Componentsobject of string by stringno, default {}Components by registered name and serialised value.
Scriptsobject of string by stringno, default {}Scripts to place on the spawned machine's filesystem, by virtual path.
Includesarray of BlueprintPartno, default []Other designs this one is built from. Each becomes its own entity in the group, so a door in a house is something you can open.
IsCompositebooleanderived — sent, never readWhether this design is made of other designs.
Metadataobject of string by stringno, default {}Free-form notes: who made it, why, what it is for.

BlueprintPart#

Another design, included in this one.

FieldTypeRequiredMeaning
BlueprintBlueprintIdyesThe design to include.
OffsetWorldPositionnoWhere it sits relative to the design that includes it, in metres.
RotationWorldRotationno, default (0, 0, 0, 1)How it is turned relative to the design including it.
TagstringnoWhat this piece is to the whole — front_door, left_wheel. The same idea as a part's semantic tag, one level up.

BlueprintSummary#

Enough of a design to choose it from a list.

FieldTypeRequiredMeaning
IdBlueprintIdyesThe design's identity.
NamestringyesWhat it is called.
VersionintegeryesWhich version of its line this is; a revision is a new design with the next number.
CreatorstringyesWho designed it: a player, an agent, or the world.
PartCountintegeryesHow many shapes it is made of.
EntityTypestringnoWhat kind of thing it is, so a client can put a design back into a form to change it.
Versionsintegerno, default 1How many versions the line has, this one included. One for most designs.

ConnectedPlayer#

One other person in the world.

FieldTypeRequiredMeaning
ClientIdstringyesThis connection's identity, which is not the account's: one person with two windows open is two of these.
LoginNamestringnoTheir account name, or null for an anonymous spectator.
ClientNamestringyesWhat their client called itself when it said hello.
PositionWorldPositionnoWhere they are: their body, or the middle of what they are watching if they have none, and null if they have neither.
BodyEntityIdnoThe body they are standing in, or none if they have not taken one.
SubscribedChunksintegeryesHow many chunks they are watching. Zero for somebody acting over MCP, who is in the world with nothing streamed to them.
IsYoubooleanyesWhether this row is the asker.

DesignResult#

A design as an action left it.

FieldTypeRequiredMeaning
IdBlueprintIdyes
Namestringyes
Versionintegeryes
Outcomestringyescreated, unchanged, updated, superseded or deleted.
SupersedesBlueprintIdnoFor superseded: the design that was revised and is still there.
BuiltFromPreviousintegernoFor superseded: how many stored things were built from it, and keep it.

EntityAffordance#

One thing the server says can be asked of an entity.

FieldTypeRequiredMeaning
IdstringyesA stable identifier for this affordance on this kind of thing, so a client can keep a button in the same place between two descriptions. Distinct from Action, because one action can be offered twice with different settled arguments — sharing and revoking are both set_access.
ActionstringyesThe WorldAction discriminator this asks for.
LabelstringyesThe button, in the words of whoever designed the thing where it says.
HintstringyesA line explaining what pressing it does.
AudienceAffordanceAudienceno, default VisitingWhich kind of client this verb belongs in front of.
Needsarray of InputFieldno, default []What the person has to supply. Empty when the verb needs nothing.
Settledobject of any JSON by stringno, default {}Arguments the server has already settled for this affordance, merged into the action as they are. It is how one action kind can be two buttons: Granting is true on Share and false on Revoke.

EntitySnapshot#

One entity as the server describes it to a client.

FieldTypeRequiredMeaning
IdEntityIdyesIts identity.
TypeEntityTypeyesWhat kind of thing it is: a validated name, not a closed set.
OwnerOwnerIdyesWhose it is: the world, a player or an agent.
PersistenceClassPersistenceClassyesWhat the world owes it, which is also what decides how it is removed.
VersionintegeryesThe version this snapshot describes, so a client can discard stale deltas.
Componentsobject of any JSON by stringyesComponents keyed by their registered name, each as raw JSON. The inspector shows these directly, so a new component becomes visible to the client without a protocol change.

HeightmapSnapshot#

The terrain of one chunk, as sampled by the generator.

FieldTypeRequiredMeaning
ResolutionintegeryesPoints along each edge of the chunk. The grid is this squared.
Heightsarray of numberyesRow-major heights, sharing edges with neighbouring chunks.
Biomesarray of BiomeTypeyesThe biome at each of those points, so the client can colour terrain by what is underfoot rather than by one value for the whole chunk.

InputField#

One value the world needs before it can act.

FieldTypeRequiredMeaning
NamestringyesThe name the client collects it under. Stable: a client builds the message it sends from these, so renaming one is a wire change.
LabelstringyesWhat to call the field where a person will read it.
KindInputFieldKindyesWhat kind of value: a line of text, a whole number, or a set of permissions.
PlaceholderstringnoGreyed-out example text, when there is something useful to say.
ValuestringnoWhat to fill in already, where the server knows a good answer — the script path the thing actually runs, the first item it actually holds.

PartColour#

A colour a design chose for itself.

FieldTypeRequiredMeaning
RednumbernoRed, from 0 to 1.
GreennumbernoGreen, from 0 to 1.
BluenumbernoBlue, from 0 to 1.
AlphanumbernoOpacity. Below one makes glass, water and anything else you can see through.
IsValidbooleanderived — sent, never readWhether every channel is finite and within range.

PathPoint#

One point on a part's path, in the part's own frame, in metres.

FieldTypeRequiredMeaning
XnumbernoMetres east of the part's own origin.
ZnumbernoMetres north of the part's own origin.
IsFinitebooleanderived — sent, never readWhether both numbers are real: a point at infinity has no direction to lay a strip along.

PlayerSnapshot#

Who the server thinks this client is, and what it already owns.

FieldTypeRequiredMeaning
IdPlayerIdyesThe account's durable identity.
LoginNamestringyesThe account's name.
DisplayNamestringyesThe name other players see.
WasRegisteredbooleanyesTrue when this connection registered the account just now.
Tokenstringno (omitted when null)The account's token, sent exactly once — when it is registered, or when an account older than tokens adopts one. Keep it: the server stores only its hash and cannot send it again.
OwnedEntitiesarray of EntityIdyesEntities this player owns on this planet, restored into the world.

ProceduralAssetDefinition#

A model described as parts rather than geometry.

FieldTypeRequiredMeaning
NamestringyesWhat the model is called.
Partsarray of AssetPartyesThe shapes, each with its place, its size and what it is made of.
Materialsarray of SvgMaterialno, default []The surface patterns this design's parts may name.
PartCountintegerderived — sent, never readHow many parts.
Rootsarray of AssetPartderived — sent, never readParts with no parent. A well-formed model has at least one.
FollowsGroundbooleanderived — sent, never readWhether this design lies along the ground rather than standing on it: any part of it is Draped.

PromptChoice#

One answer a prompt offers, as the client draws it.

FieldTypeRequiredMeaning
NamestringyesWhat comes back when it is chosen. An identifier, not a sentence.
LabelstringyesThe wording on the button, in whoever's words asked.

PromptSnapshot#

A question the world is waiting on, as it crosses the wire.

FieldTypeRequiredMeaning
IdPromptIdyesThe question's identity. Sent back with the answer.
FromEntityIdyesThe thing that is asking, so the client can point at it.
FromNamestringyesWhat that thing is called, which is all the client has to show.
QuestionstringyesWhat it wants to know.
Optionsarray of PromptChoiceyesThe answers it will take. At least one.
Needsarray of InputFieldno, default []What to collect beside the choice. Usually empty.
SecondsLeftnumberyesHow long the question has left, in seconds of simulated time.

ReadoutChange#

A change to one of the readings a thing shows above itself.

FieldTypeRequiredMeaning
KindstringnoHow to draw it: bar or text. Text, if never said.
SourcestringnoWhere the number comes from: given, health, energy or growth. Given, if never said.
LabelstringnoA word or two naming what is shown. Empty takes it away.
TextstringnoWords to show instead of a number. Empty takes them away.
ColourstringnoA colour as #rgb, #rrggbb or #rrggbbaa. Empty takes it away.
ValuenumbernoThe number to show now.
RatePerSecondnumbernoHow fast it changes from here, per second. Nothing more is written after this.
LimitnumbernoWhere it stops changing.
MaximumnumbernoWhat counts as full, for a bar showing a number of your own.
OrderintegernoWhere it sits in the stack, smallest first.
Clearbooleanno, default falseStart from nothing rather than from what is already there.
SaysNothingbooleanderived — sent, never readWhether this asks for anything at all.

ServerMetricsSnapshot#

Debug counters.

FieldTypeRequiredMeaning
EntitiesTotalintegeryesEntities the world holds.
EntitiesActiveintegeryesEntities in a region that is costing something: active, or operational. The rest are there, but nothing is attending to them.
LoadedChunksintegeryesChunks in memory.
ScheduledEventsintegeryesEvents waiting to happen.
EventsProcessedintegeryesEvents carried out since the server started.
EventsFailedintegeryesEvents whose handler failed.
ConnectedClientsintegeryesSockets open right now.
SubscribedChunksintegeryesChunks being watched, counted over every client.
DatabaseWritesintegeryesWrites to storage since the server started.
LuaProcessesintegeryesLua processes alive.
LuaExecutionsintegeryesTimes a script has run since the server started.
LuaErrorsintegeryesTimes a script has failed since the server started.
BlueprintsintegeryesDesigns in the catalogue.
RegionsActiveintegeryesRegions with a player in them.
RegionsDormantintegeryesRegions costing nothing — dormant or summarised.
ChunksAggregatedintegeryesChunks of wood collapsed to a summary.
AgentCountintegeryesAgents this world is running.
AgentThinkCountintegeryesThoughts had since the server started.
ClaimsintegeryesClaims held.
ClaimedChunksintegeryesChunks under those claims.
BatteriesEmptiedintegeryesBatteries that have run flat since the server started.
GrownToMaturityintegeryesThings that have finished growing since the server started.
SimulationTimeTicksintegeryesThe clock, in ticks.
PlanetNamestringno (omitted when null)What the world is called. Left out where the answer is not about a particular world.

SimulationStateSnapshot#

What the server knows about the simulation right now.

FieldTypeRequiredMeaning
SimulationTimeTicksintegeryesThe clock, in ticks: ten million to the simulated second.
SpeedintegeryesThe multiplier real time is run at. Zero is paused.
ScheduledEventsintegeryesHow many things the world has arranged to do later.

SvgMaterial#

A surface pattern, written as SVG.

FieldTypeRequiredMeaning
IdMaterialIdyesThe digest of Svg, and nothing else.
NamestringyesWhat a person calls it: brick, tartan, rosette.
SvgstringyesThe drawing itself, as SVG source.
ByteSizeintegerderived — sent, never readHow large the drawing is on the wire and in storage.
IsSelfConsistentbooleanderived — sent, never readWhether Id is the digest of Svg.