Skip to content

cvet/fonline

Repository files navigation

FOnline Engine

License GitHub Codecov Commit Ask DeepWiki

FOnline is a reusable C++20 engine for isometric Fallout / Arcanum-style multiplayer RPGs. It provides the runtime, rendering, networking, resource pipeline, scripting integration, tools, and cross-platform build system; an embedding game project provides the actual world, rules, scripts, assets, configuration, native extensions, and release policy.

Start here

What the engine provides

  • Isometric renderer for Fallout 1/2/Tactics and Arcanum-like games.
  • Hexagonal and square map tiling.
  • Sprite-based environments with support for 3D character models.
  • Native C++20 engine core.
  • AngelScript-based game scripting integration.
  • Client/server runtime, tools, mapper support, updater support, tests, and build tooling.
  • Cross-platform build targets: Windows, Linux, macOS, Android, WebAssembly, and related package layouts.
  • Asset pipelines for classic Fallout-family formats, Arcanum-style data, FBX-based models, and common image formats such as PNG/TGA.

Not every historical or experimental feature is complete on every platform. Prefer the maintained docs and the embedding project's real presets over assumptions from older README sections.

Repository layout

  • Source/ — engine source code: applications, runtime, scripting, resources, tools, essentials, and tests.
  • BuildTools/ — CMake modules, code generation, package preparation, workspace generation, and platform helpers.
  • Resources/ — engine-owned runtime and build resources.
  • ThirdParty/ — vendored third-party dependencies.
  • Docs/ — maintained user and maintainer documentation.
  • PUBLIC_API.md — public native API notes.
  • TUTORIAL.md — tutorial material.

How FOnline is normally used

A game repository embeds this repository as an Engine/ submodule and keeps game-specific material outside the engine:

  1. Add the engine repository as Engine/.
  2. Add project-level CMakeLists.txt, CMakePresets.json, and a .fomain configuration.
  3. Add game content folders such as Critters/, Items/, Maps/, Dialogs/, Texts/, and GUI/resources.
  4. Add game logic scripts, usually under Scripts/.
  5. Add optional project-native extensions under a project-owned source folder.
  6. Build project targets through CMake presets and engine BuildTools.

See Docs/EmbeddingProject.md for the expected project shape and responsibilities.

Documentation index

Development and validation

Use a real embedding project to validate engine changes. The engine is designed to be composed with game content and project presets, so the most meaningful checks are usually project targets that exercise the engine in context.

A typical change should be validated with the smallest relevant scope:

When behavior changes in a noticeable way, update the owning document in the same change.

Project and community