-
Notifications
You must be signed in to change notification settings - Fork 0
Troubleshooting
Ordered roughly by how often each one actually happens.
Script [Attribute(...)] fields are prefab data. Game Master's properties
panel reads editor attributes, which are a separate system. A node with rich
script attributes shows an empty panel until editor attributes are written for
it.
A slider-backed editor attribute writes a float. Reading it back with
GetInt() gives you 0 every time. This is a code fix — CreateFloat plus
Math.Round(var.GetFloat()) — not something you can configure around.
A Workbench play session is server and client at once, and hides every replication bug. Run it in the Peer Tool (the dropdown beside the Play button) with a real second client before believing it.
The usual specific cause: a Game Master edit sent as a broadcast rather than
an RplProp. A broadcast reaches whoever is connected at that moment; a player
who joins later, or who streams the object in later, permanently sees the old
value.
FACTION and PLAYER are plumbed but unproven. GROUP is not implemented at all
and deliberately falls back to everyone with a warning, rather than silently
hiding messages. Recipe steps (PLAY_TEXT_LINE:) always go to everyone — the
step syntax has no room for an audience, so use a Text Line node when a line
needs one.
The Game Mode Setup wizard generates a MapEntity with empty map texture fields. Fill both in. This is a vanilla issue, not an MCF one.
A world has exactly one. Do not drag a GameMode prefab in — use Plugins → Game Mode Setup, then add the MCF components to the GameMode entity it created.
Local Host is holding UDP 2001. Stop it before starting the dedicated server.
Escape is not a way out in the Workbench — it stops the session. Every MCF screen has a visible close button for this reason.
Both have a way out that does not depend on a key binding.
- The laptop: open the launcher and take Shut down, beside Lock screen.
- The map board: CLOSE BOARD on the strip of paper over the map.
Escape works as well on both, wherever your bindings reach the screen. The map board is the one place it often does not: that screen runs in MapContext, which is what makes the map pan and zoom at all, and MapContext defines no escape action. That is why the button is there.
The drawing is held by the server, on an entity MCF spawns for it. If it is not there, strokes are collected, sent, and dropped. Look for this near the start of the log:
[MCF] Operations systems spawned, map drawing is held by the server
No line means the Operations half of Intelligence did not start on that game mode, and nothing about the map will save. A warning naming the prefab appears in its place.
The map picks its detail layer from the zoom, and the default map props hide
buildings and minor roads on the coarse layers — that is vanilla's behaviour,
not the board's. Zoom in. If detail never appears at any zoom, the board is
stuck on one layer; the map board grid line in the log reports which one.
Compare the map board grid line from both logs. The same widthM with a
different ppu is correct — the boards show the same ground and their windows
have different numbers of pixels. A different widthM means the view has not
replicated yet; set=false on both means nobody has ever moved that board, and
each machine is showing the middle of the world on its own.
It is on by default because the framework is young enough that you want it. For a production server that would rather not have the chatter:
MCF_Core_Log.SetEnabled(false);
Warnings and errors ignore that switch, so validation problems still surface.
Start here
The modules
Reference