About this project

FOnline is an MIT-licensed C++20 engine for building online multiplayer RPGs in the classic isometric style of Fallout 1/2/Tactics and Arcanum. It has been in continuous development since 2006 and powers community multiplayer RPGs, with Last Frontier cited as a current example. The design is multiplayer-first: an authoritative server, replicated entity state and client/server separation are core to the entity model rather than added on top. One codebase produces the server, client, map editor, content pipeline and packaging for desktop, mobile and the browser. Feature areas described in the README: - Multiplayer core: authoritative server runtime with entity managers, client validation and hardened parsing of untrusted input; a shared entity/property/prototype model with generated type-safe property wrappers and automatic replication; pluggable transports including TCP sockets, an Asio-based server, WebSockets for browser play, ordered UDP and in-process transport for tests; pluggable persistence via JSON files, SQLite, MongoDB or in-memory behind one database facade with async commit queue and recovery logs; a built-in client auto-updater with resumable file transfer and a server-side update backend. - Scripting: AngelScript gameplay scripting over a backend-neutral script system; the native API is exported to scripts by code generation from ///@ annotations, keeping methods, properties, events, remote calls and enums in sync; nullability is enforced across the script/native boundary; script debugging is supported alongside native debugging. - Rendering: OpenGL, Direct3D, Vulkan and SDL_GPU backends plus headless/null modes for servers and CI; effects written once in GLSL, compiled through glslang to SPIR-V and translated per backend via SPIRV-Cross; sprite-based isometric worlds with 3D character models (FBX), particles, video playback and audio in modern (Ogg/Vorbis) and classic Fallout formats; windowed, borderless-fullscreen and multi-client virtual-window modes with an ImGui developer overlay. - World and maps: hexagonal and square grid geometry modes with shared helpers for distance, direction and neighborhoods; path finding, line tracing, movement contexts and a blocking model designed for server authority. - Content pipeline and tools: a baking pipeline turns prototypes, maps, dialogs, localized texts, effects, images, models and scripts into versioned runtime resource packs; imports classic 2D asset formats (Fallout FRM, Arcanum ART and other legacy formats) alongside PNG/TGA; interactive tools built on the engine itself include a map editor with headless automation, content editor, asset explorer and particle editor. - Engineering quality: Catch2 unit tests with generated per-suite targets, sanitizer runs and coverage; Clang Thread Safety Analysis enforced as -Werror on every Clang toolchain; strict smart-pointer and nullability vocabularies; always-on stack traces, deterministic exception-safety rules and a terminate-on-OOM allocation model; Tracy profiler integration. Architecture: the engine is a reusable submodule; a game repository adds it as Engine/, points the staged CMake pipeline at its own configuration and gets project-named build targets. The game owns content, scripts, configuration, branding and release policy. Content such as prototypes, maps, dialogs, localization and GUI is authored as plain-text assets and baked into runtime packs. Supported targets are Windows, Linux, macOS, Android, iOS and Web (WebAssembly); the README notes that not every feature is equally mature on every platform. Repository layout: Source/ (Applications, Client, Server, Common, Frontend, Scripting, Tools, Essentials, Tests), BuildTools/ (staged CMake pipeline, code generation, toolchains, packaging), Resources/, ThirdParty/ (vendored SDL, AngelScript, Asio, ImGui, glslang, SPIRV-Cross, Tracy and more) and Docs/. Maintained documentation covers architecture, entity model, maps and movement, networking, persistence, client and server runtimes, rendering, scripting, nullability, build and baking pipelines, tools, testing, exception safety, smart pointers, thread safety analysis and platform debugging.