FOnline Engine
Current master GitHub
Documentation Docs/en/reference/map-format/baking.md

Map Baking And Runtime Loading

Generated reference. Do not edit directly. Update BuildTools/MapFormatInterface.json or the owning engine metadata, then run python BuildTools/docs_map_format.py --write.

Index Syntax Properties Baking Validation Canonical JSON Authoring guide

Map containers are selected by Baking.ProtoFileExtensions plus at least one [ProtoMap] anchor; .fomap is a project convention, not an engine requirement. Each declared map emits <MapId>.fomap-bin-server and <MapId>.fomap-bin-client as a coupled resource pair.

The server payload contains placed critters and all items. The client payload contains visible static items; hidden static items contribute required string hashes but no client item record.

Item ownership

Ownership Value Map-supported Reference/position Meaning Enum source
MapHex 0 yes Hex Places the item on a map hex. Static items must use this mode. Source/Common/Common.h
CritterInventory 1 yes CritterId Creates a non-static item in the inventory of the placed critter identified by CritterId. Source/Common/Common.h
ItemContainer 2 yes ContainerId Creates a non-static item inside the placed non-static item identified by ContainerId. Source/Common/Common.h
Nowhere 3 no none Exists in the enum but is not a supported authored map-placement mode. Source/Common/Common.h

Runtime split

  • Static MapHex items become immutable grid entries and may block movement or shooting, expose triggers, and occupy multihex cells.
  • Non-static MapHex items and placed critters are generated for each map instance; their authored ids are remapped to runtime ids.
  • CritterInventory and ItemContainer records are attached after their direct owners are generated. A missing owner mapping skips the child.
  • The client reconstructs only the visible static map layer from the client binary; dynamic entities arrive through normal runtime synchronization.
Start typing to search.