About this project

Fio is a unified world editor, real-time engine and game creation toolkit for building, editing and running first-person, top-down and large-scale worlds. It is inspired by classic Radiant and Hammer/Worldcraft workflows, and is designed with an efficiency-first philosophy on low-power ARM hardware. The central idea is that the editor and runtime operate on the same live world state. Pressing Play does not export, compile or bake the level into a separate runtime representation; the world simply continues running. The project describes this as "the map is the program, the editor is the engine." Editing and gameplay features include classic brush/CSG editing with arbitrary convex polyhedra, entity I/O gameplay inspired by Source, and LogicState — persistent typed state (strings, integers, floats, booleans, nulls, UUIDs) attached directly to world objects. Native systems include logic gates, relays, timers, triggers, movers and doors, physics, props, pathfinding, player starts, procedural terrain and world portals. Gameplay can be assembled from entities, inputs, outputs, state and spatial relationships rather than a conventional scripting codebase. For large worlds, a grid-based spatial index supports visibility, distance queries, simulation residency, physics synchronisation, entity lookup and culling. BigWorld builds on this to move entities between full, reduced and dormant simulation states instead of processing every object identically each frame. Bulk numerical work — spatial calculations, transformations, culling, physics synchronisation and entity indexing — is handled with dense NumPy arrays, while irregular or highly stateful operations remain scalar Python. Rendering uses a lean OpenGL 3.3 Core renderer operating directly on NumPy arrays, with dynamic lighting, dynamic shadows, fog, glass, water, frustum and distance culling, GLB assets, and first-person and top-down camera modes. Native world portals provide non-Euclidean connections between arbitrary locations using stencil-buffer masking and oblique near-plane clipping, without requiring BSP, VIS/PVS preprocessing or offline visibility compilation. Other features include a plugin architecture with example plugins, portable world packaging via .fiopak archives, procedural world generation and experimental map-generation tools, and local split-screen multiplayer. Binaries are offered for Windows, macOS and Linux, and the project can also be run from source or via an included Dockerfile. Running from source requires Python 3.10+ and installing requirements.txt before launching main.py. Documentation is available in the project wiki, and the repository notes active development and welcomes contributions and experiments.