- Refactored the `load` function in `config.rs` to use a new `locate_config_path` function for improved clarity and maintainability. - Updated SurrealDB setup instructions in `SURREALDB_SETUP.md` and `surrealdb-setup.md` to reflect changes in the installation process and removed outdated script references. - Added new dependencies for Tauri in `package.json` and `package-lock.json`, including `@tauri-apps/cli` and `@tauri-apps/plugin-dialog`. - Updated the package-lock to include the latest versions of Tauri dependencies.
Forge
Forge is a framework for Arma 3 persistent game servers. It combines SQF
addons, a Rust arma-rs extension, shared service crates, and web-based client
interfaces for player data, organizations, banking, garages, lockers, phones,
CAD, stores, and task workflows.
Storage
Durable persistence is backed by SurrealDB. The server extension loads schema modules at startup and routes domain repositories through the SurrealDB client.
[surreal]
endpoint = "127.0.0.1:8000"
namespace = "forge"
database = "main"
username = "root"
password = "root"
connect_timeout_ms = 5000
Workspace
arma/
mod/ Shared client/server config addon built as @forge_mod
client/ Client-side addons and browser UIs
server/ Server-side addons and extension crate
bin/
host/ Tauri host control panel for SurrealDB, ICOM, and Arma server
icom/ Interprocess communication helper
lib/
models/ Shared domain models
repositories/ Repository traits and in-memory test stores
services/ Domain business logic
shared/ Cross-crate helpers
tools/ Web UI build tooling
Common Commands
cargo test
npm run build:webui
npm run host:dev
.\build-arma.ps1
.\build-arma.ps1 builds arma/mod, arma/client, and arma/server. Load
the resulting @forge_mod on both clients and servers, @forge_client on
clients, and @forge_server on the server only.
Documentation
Extension Status
"forge_server" callExtension ["status", []];
"forge_server" callExtension ["surreal:status", []];
Both commands report the persistence connection state.
Host Control Panel
bin/host contains a Tauri control app for local Forge server hosting. It can
start and stop SurrealDB, forge-icom.exe, and an Arma 3 dedicated server,
edit their launch commands, and show basic TCP health plus captured logs.
# Build ICOM first if the host config points at target/release/forge-icom.exe
cargo build --release -p forge-icom
# Run the host UI during development
npm run host:dev
# Build the packaged desktop app
npm run host:build
The app reads the shared config.toml from the repo root during development, or
from the current/executable directory in packaged use. If no shared config exists,
it falls back to bin/host/host.example.toml; saving from the Settings view writes
the active shared config.toml. The shared file includes the host process sections
plus the [server] section used by ICOM and the [surreal] section used by the
Arma extension.