Unified Liminal World Editor, Procedural Engine & Game Creation Toolkit inspired by Radiant and Hammer. Optimised for low-power CPUs.
Python
146
151 commits
updated Oct 7, 2026
Fio is a real-time world machine for creating, editing and running first-person, top-down and large-scale worlds.
Build a world, press Play, and the world you just edited becomes the running simulation.
There is no import, compile or bake stage between authoring and execution. The editor and runtime operate on the same world state.
Designed on low-power ARM hardware with an efficiency-first philosophy.
.fiopak.a modern data-oriented engine wearing the skin of a 1998 GtkRadiant workflow, with Source-style entity I/O instead of a scripting language — deliberately recreating the immediacy of classic Radiant/Worldcraft, but where pressing Play just... runs the world you're editing.
A Fio world contains:
The editor operates directly on that world.
When you press Play, Fio does not export the map into another representation and hand it to a separate game runtime. The world continues running.
FIO WORLD
│
┌───────────────┼────────────────┐
│ │ │
EDIT SIMULATE RENDER
│ │ │
└───────────────┼────────────────┘
│
SAME WORLD
This is the core idea behind Fio:
The map is the program. The editor is the engine.
Fio explores what happens when the immediacy of classic Radiant/Worldcraft-style editing is combined with a modern real-time simulation architecture.
The goal is to reduce the distance between authoring a world and experiencing it.
Fio is designed for rapid experimentation with:
There is no requirement to build a conventional gameplay codebase before a world can become interactive.
Gameplay can be assembled from entities, inputs, outputs, state and spatial relationships.
Fio uses an entity-based gameplay model built around I/O and LogicState.
Objects can send inputs to other objects, react to events, maintain persistent typed state and participate in larger gameplay systems.
LogicState provides object-local typed state including strings, integers, floats, booleans, null values and UUIDs.
Rather than requiring a central quest or scripting runtime, gameplay can emerge from small composable world behaviours.
Fio is designed to make large worlds practical on relatively constrained hardware.
The spatial system maintains world locality through a grid-based spatial index. Systems can use that information for:
BigWorld builds on this infrastructure to control how much of the world needs to remain actively simulated.
World entities can move between different simulation-distance states rather than requiring every object in a large world to receive identical processing every frame.
This makes large worlds a simulation problem, not simply a rendering problem.
Fio is deliberately designed around bulk numerical processing where the workload benefits from it.
Large collections of homogeneous world data can be represented as dense arrays and transformed together using NumPy rather than repeatedly traversing thousands of Python objects.
This architecture is used for areas such as:
The goal is simple:
Don't make the CPU repeatedly perform work that can be expressed as a bulk data transformation.
Scalar Python remains appropriate for small, irregular or highly stateful operations. Fio does not attempt to turn every part of the engine into an array.
Features include:
Fio supports non-Euclidean world connections between arbitrary locations using portal rendering techniques including stencil-buffer masking and oblique near-plane clipping.
There is no requirement for BSP, VIS/PVS preprocessing or offline visibility compilation.
The editor and simulation operate on the same live world representation.
Pressing Play does not require Fio to compile or bake the level into another runtime representation.
Fio combines Python's high-level flexibility with C-accelerated numerical processing through NumPy.
Large homogeneous datasets are processed in bulk, while irregular gameplay and editor operations remain straightforward Python.
The spatial system provides a common foundation for visibility, culling, entity lookup and large-world simulation.
BigWorld uses this infrastructure to determine which parts of a world need full, reduced or dormant simulation.
Fio is open-source and modular, with a plugin API for extending the editor and runtime.
The goal is not to hide the engine behind layers of abstraction, but to make experimentation with the world machine straightforward.
Fio can package worlds and their associated resources into .fiopak archives.
The eventual goal is simple:
A complete Fio world should be something you can hand to another Fio runtime and run.
The same engine architecture is also being developed toward a dedicated player for portable platforms.
Python 3.10 to 3.12 is required.
git clone https://github.com/ViciousSquid/Fio.git
cd Fio
python -m venv venv
source venv/bin/activate # or venv\Scripts\activate on Windows
pip install -r requirements.txt
python main.py
Contributions, feedback and experiments are welcome.
Fio is an active research-and-development project as much as it is a game creation toolkit. If you're interested in world editing, procedural generation, simulation, rendering, spatial systems or unusual gameplay architectures, check the issues and discussions.
115 followers · starred Mar 2026
295 followers · starred Mar 2026
Unified Liminal World Editor, Procedural Engine & Game Creation Toolkit inspired by Radiant and Hammer. Optimised for low-power CPUs.
Python
146
151 commits
updated Oct 7, 2026
Fio is a real-time world machine for creating, editing and running first-person, top-down and large-scale worlds.
Build a world, press Play, and the world you just edited becomes the running simulation.
There is no import, compile or bake stage between authoring and execution. The editor and runtime operate on the same world state.
Designed on low-power ARM hardware with an efficiency-first philosophy.
.fiopak.a modern data-oriented engine wearing the skin of a 1998 GtkRadiant workflow, with Source-style entity I/O instead of a scripting language — deliberately recreating the immediacy of classic Radiant/Worldcraft, but where pressing Play just... runs the world you're editing.
A Fio world contains:
The editor operates directly on that world.
When you press Play, Fio does not export the map into another representation and hand it to a separate game runtime. The world continues running.
FIO WORLD
│
┌───────────────┼────────────────┐
│ │ │
EDIT SIMULATE RENDER
│ │ │
└───────────────┼────────────────┘
│
SAME WORLD
This is the core idea behind Fio:
The map is the program. The editor is the engine.
Fio explores what happens when the immediacy of classic Radiant/Worldcraft-style editing is combined with a modern real-time simulation architecture.
The goal is to reduce the distance between authoring a world and experiencing it.
Fio is designed for rapid experimentation with:
There is no requirement to build a conventional gameplay codebase before a world can become interactive.
Gameplay can be assembled from entities, inputs, outputs, state and spatial relationships.
Fio uses an entity-based gameplay model built around I/O and LogicState.
Objects can send inputs to other objects, react to events, maintain persistent typed state and participate in larger gameplay systems.
LogicState provides object-local typed state including strings, integers, floats, booleans, null values and UUIDs.
Rather than requiring a central quest or scripting runtime, gameplay can emerge from small composable world behaviours.
Fio is designed to make large worlds practical on relatively constrained hardware.
The spatial system maintains world locality through a grid-based spatial index. Systems can use that information for:
BigWorld builds on this infrastructure to control how much of the world needs to remain actively simulated.
World entities can move between different simulation-distance states rather than requiring every object in a large world to receive identical processing every frame.
This makes large worlds a simulation problem, not simply a rendering problem.
Fio is deliberately designed around bulk numerical processing where the workload benefits from it.
Large collections of homogeneous world data can be represented as dense arrays and transformed together using NumPy rather than repeatedly traversing thousands of Python objects.
This architecture is used for areas such as:
The goal is simple:
Don't make the CPU repeatedly perform work that can be expressed as a bulk data transformation.
Scalar Python remains appropriate for small, irregular or highly stateful operations. Fio does not attempt to turn every part of the engine into an array.
Features include:
Fio supports non-Euclidean world connections between arbitrary locations using portal rendering techniques including stencil-buffer masking and oblique near-plane clipping.
There is no requirement for BSP, VIS/PVS preprocessing or offline visibility compilation.
The editor and simulation operate on the same live world representation.
Pressing Play does not require Fio to compile or bake the level into another runtime representation.
Fio combines Python's high-level flexibility with C-accelerated numerical processing through NumPy.
Large homogeneous datasets are processed in bulk, while irregular gameplay and editor operations remain straightforward Python.
The spatial system provides a common foundation for visibility, culling, entity lookup and large-world simulation.
BigWorld uses this infrastructure to determine which parts of a world need full, reduced or dormant simulation.
Fio is open-source and modular, with a plugin API for extending the editor and runtime.
The goal is not to hide the engine behind layers of abstraction, but to make experimentation with the world machine straightforward.
Fio can package worlds and their associated resources into .fiopak archives.
The eventual goal is simple:
A complete Fio world should be something you can hand to another Fio runtime and run.
The same engine architecture is also being developed toward a dedicated player for portable platforms.
Python 3.10 to 3.12 is required.
git clone https://github.com/ViciousSquid/Fio.git
cd Fio
python -m venv venv
source venv/bin/activate # or venv\Scripts\activate on Windows
pip install -r requirements.txt
python main.py
Contributions, feedback and experiments are welcome.
Fio is an active research-and-development project as much as it is a game creation toolkit. If you're interested in world editing, procedural generation, simulation, rendering, spatial systems or unusual gameplay architectures, check the issues and discussions.
115 followers · starred Mar 2026
295 followers · starred Mar 2026