Skip to content

Navigation Menu

Sign in
Sign up

Map format (.json)

Vicious Squid edited this page Jun 3, 2026 · 9 revisions

Version 3 (June 2026)

V3 Fio Map files are stored in .json format containing two main sections:

  • brushes — Constructive solid geometry (world geometry)
  • things — Gameplay entities and logic objects

Root Structure

{
 "brushes": [],
 "things": []
}

brushes – Geometry

Each brush is a rectangular solid used to build level geometry.

Brush fields

Field Type Description
pos array Centre position [x, y, z]
size array Dimensions [width, height, depth]
operation string Boolean operation. Currently always "add"
textures object Texture assignments for all six faces
lock boolean Editor lock flag
id string/int Unique brush identifier

Texture faces

The textures object contains one texture path per face:

"textures": {
 "north": "default.png",
 "south": "default.png",
 "east": "default.png",
 "west": "default.png",
 "top": "default.png",
 "down": "default.png"
}

Textures are resolved relative to the project texture directory.

Common texture conventions:

Texture Purpose
default.png Standard visible surface
nodraw.jpg Invisible/non-rendered surface

Optional brush flags

Depending on editor operations and gameplay systems, brushes may also contain:

Field Description
name Named brush for I/O targeting
hidden Runtime/editor visibility toggle
tint RGB tint override [r, g, b]
is_trigger Marks brush as a trigger volume
is_door Marks brush as a door
is_mover Marks brush as a moving platform
properties Type-specific runtime data
_io_connections Internal I/O connection data

Example brush

{
 "id": 12,
 "pos": [0, 64, 0],
 "size": [256, 128, 256],
 "operation": "add",
 "lock": true,
 "textures": {
 "north": "brick.png",
 "south": "brick.png",
 "east": "brick.png",
 "west": "brick.png",
 "top": "ceiling.png",
 "down": "floor.png"
 }
}

things – Entities

Entities represent gameplay objects, logic systems, lights, monsters, pickups, and level scripting objects.

Entity fields

Field Type Description
type string Entity class/type
pos array World position [x, y, z]
properties object Type-specific entity data
io_connections array Logic outputs and links

Common entity types

Type Purpose
playerstart Player spawn location
pickup Item or weapon pickup
light Dynamic or static light source
monster AI enemy
levelchanger Loads another map
portal Linked teleport/portal system

Entity Properties

The properties object is fully dynamic and depends on the entity type.

Example:

{
 "type": "light",
 "pos": [128, 96, 0],
 "properties": {
 "name": "hall_light",
 "color": [255, 200, 180],
 "intensity": 2.0,
 "radius": 512
 },
 "io_connections": []
}

I/O System

Entities can communicate using Source-style input/output logic.

Connections are stored in io_connections.

Connection structure

{
 "output": "OnTrigger",
 "target": "main_door",
 "input": "Open",
 "delay": 0.0,
 "parameter": ""
}

I/O fields

Field Description
output Output event emitted by source entity
target Name of target entity
input Input function called on target
delay Delay before firing
parameter Optional string parameter

Coordinates

The engine uses Cartesian 3D coordinates:

X = horizontal
Y = vertical
Z = depth

Positions are stored in world units as floating point values.


Units

Value Meaning
1 One engine unit
64 Typical wall thickness
128 Player/Human enemy height
256+ Large structures

Serialization Notes

  • Maps are saved as plain UTF-8 JSON files
  • Unknown fields are generally preserved
  • Missing optional fields are generated automatically by the editor
  • Runtime/editor-only fields may be added temporarily during editing

Example minimal map

{
 "brushes": [
 {
 "id": 1,
 "pos": [0, 0, 0],
 "size": [512, 32, 512],
 "operation": "add",
 "lock": true,
 "textures": {
 "north": "floor.png",
 "south": "floor.png",
 "east": "floor.png",
 "west": "floor.png",
 "top": "floor.png",
 "down": "nodraw.jpg"
 }
 }
 ],
 "things": [
 {
 "type": "playerstart",
 "pos": [0, 64, 0],
 "properties": {
 "name": "spawn_1"
 },
 "io_connections": []
 }
 ]
}

Version history

v1 – original format, no I/O connections, legacy target property.

v2 – introduced io_connections and per‐entity id.

v3 – added logic_graph, lightmap_scene_hash, terrain and portal properties, shader brush fields.

Clone this wiki locally

AltStyle によって変換されたページ (->オリジナル) /