View on GitHub

FOnline Engine

Flexible cross-platform isometric game engine

FOnline Engine

License GitHub Commit Ask DeepWiki

FOnline is an open-source (MIT) C++20 engine for building online multiplayer RPGs in the classic isometric style of Fallout 1/2/Tactics and Arcanum. One codebase gives you the authoritative server, the game client, the map editor, the content pipeline, and packaging for desktop, mobile, and the browser — you bring the game: content, scripts, and rules live in your own repository that embeds the engine.

In continuous development since 2006, the engine powers community multiplayer RPGs; a current example is Last Frontier, a post-apocalyptic MMO built on it.

Why FOnline?

Feature highlights

Multiplayer core

Scripting

Rendering and presentation

World and maps

Content pipeline and tools

Engineering quality

Architecture at a glance

Your game repository                      FOnline engine (this repo, embedded as Engine/)
────────────────────                      ────────────────────────────────────────────────
content: protos, maps,            ┌──►    Applications — client/server/tool entry points
dialogs, texts, GUI               │       Client & Server runtimes — views vs. authority
AngelScript game logic     embeds │       Common model — entities, properties, protos,
.fomain configuration      ───────┤                      maps, networking, config
native extensions                 │       Frontend — windows, input, audio, renderers
CMake presets, CI,                │       Scripting — AngelScript bridge + generated API
release policy                    └──►    Tools & BuildTools — bakers, mapper, editor,
                                                     CMake stages, codegen, packaging

The engine owns reusable technology; the game owns the product. A game repository adds the engine as an Engine/ submodule, points the engine’s staged CMake pipeline at its own configuration, and gets project-named build targets for every application. The full layer map is in Docs/Architecture.md, and the embedding contract in Docs/EmbeddingProject.md:

GameProject/
├── Engine/                 # this repository as a git submodule
├── CMakeLists.txt          # project entry point that includes engine build logic
├── CMakePresets.json       # project presets and platform variants
├── GameName.fomain         # master project configuration
├── Scripts/                # game AngelScript modules
├── SourceExt/              # optional project-native C++ extensions
├── Critters/ Items/ Maps/  # game content and prototypes
└── Dialogs/ Texts/         # dialogs and localization

Getting started

Supported target platforms: Windows, Linux, macOS, Android, iOS, and Web (WebAssembly). Not every feature is equally mature on every platform — prefer the maintained docs and a real embedding project’s presets over assumptions.

Repository layout

Documentation

The maintained index is Docs/README.md. Deep dives by theme:

Theme Docs
Architecture & navigation Architecture · SourceTree · Applications · Essentials
Runtime model EntityModel · MapsMovementGeometry · Networking · Persistence
Client & server ClientRuntime · ServerRuntime · FrontendAndRendering · ClientUpdater
Scripting Scripting · ScriptMethodsMap · Nullability · GeneratedApiAndMetadata
Build & content pipeline BuildWorkflow · BuildToolsPipeline · BakingPipeline · ConfigurationAndDataSources
Tools Tools · MapperTools
Quality & conventions Testing · ExceptionSafety · SmartPointers · ThreadSafetyAnalysis
Platform debugging Debugging · WebDebugging · AndroidDebugging

When behavior changes in a noticeable way, the owning document is updated in the same change — the docs are maintained as a source-grounded reference, not an afterthought.

Project and community