28 KiB
28 KiB
Module Reference
This reference lists the main Forge modules and where each layer lives.
Directory Map
arma/client/addons/ Client-side Arma addons and browser UIs
arma/server/addons/ Server-side Arma addons and extension bridge
arma/server/extension/ Rust arma-rs extension and SurrealDB adapters
bin/icom/ Interprocess communication helper
lib/models/ Shared domain data models
lib/repositories/ Repository traits and in-memory stores
lib/services/ Domain services and workflow logic
lib/shared/ Cross-crate helpers
tools/ Web UI build tooling
docs/ Framework-level documentation
Gameplay Domains
<th>
Purpose
</th>
<th>
Client addon
</th>
<th>
Server addon
</th>
<th>
Service/model layer
</th>
<th>
Extension group
</th>
<td>
Player identity, loadout, position, status, contact identifiers, and persistent character data.
</td>
<td>
<code>
arma/client/addons/actor
</code>
</td>
<td>
<code>
arma/server/addons/actor
</code>
</td>
<td>
<code>
lib/models/src/actor.rs
</code>
, <code>
lib/services/src/actor.rs
</code>
</td>
<td>
<code>
actor:*
</code>
</td>
<td>
Player accounts, cash/bank balances, PIN validation, transfers, checkout charging, and transaction context.
</td>
<td>
<code>
arma/client/addons/bank
</code>
</td>
<td>
<code>
arma/server/addons/bank
</code>
</td>
<td>
<code>
lib/models/src/bank.rs
</code>
, <code>
lib/services/src/bank.rs
</code>
</td>
<td>
<code>
bank:*
</code>
, <code>
bank:hot:*
</code>
</td>
<td>
Dispatch requests, assignments, orders, activity stream, profiles, groups, and hydrated dispatcher views.
</td>
<td>
<code>
arma/client/addons/cad
</code>
</td>
<td>
<code>
arma/server/addons/cad
</code>
</td>
<td>
<code>
lib/models/src/cad.rs
</code>
, <code>
lib/services/src/cad.rs
</code>
</td>
<td>
<code>
cad:*
</code>
</td>
<td>
Player vehicle storage with plate IDs, fuel, damage, and hit point state.
</td>
<td>
<code>
arma/client/addons/garage
</code>
</td>
<td>
<code>
arma/server/addons/garage
</code>
</td>
<td>
<code>
lib/models/src/garage.rs
</code>
, <code>
lib/services/src/garage.rs
</code>
</td>
<td>
<code>
garage:*
</code>
, <code>
garage:hot:*
</code>
</td>
<td>
Player item storage keyed by classname with category and amount.
</td>
<td>
<code>
arma/client/addons/locker
</code>
</td>
<td>
<code>
arma/server/addons/locker
</code>
</td>
<td>
<code>
lib/models/src/locker.rs
</code>
, <code>
lib/services/src/locker.rs
</code>
</td>
<td>
<code>
locker:*
</code>
, <code>
locker:hot:*
</code>
</td>
<td>
Player organizations, membership, treasury, credit lines, shared assets, and fleet data.
</td>
<td>
<code>
arma/client/addons/org
</code>
</td>
<td>
<code>
arma/server/addons/org
</code>
</td>
<td>
<code>
lib/models/src/org.rs
</code>
, <code>
lib/services/src/org.rs
</code>
</td>
<td>
<code>
org:*
</code>
, <code>
org:hot:*
</code>
</td>
<td>
Contacts, messages, and email state.
</td>
<td>
<code>
arma/client/addons/phone
</code>
</td>
<td>
<code>
arma/server/addons/phone
</code>
</td>
<td>
<code>
lib/models/src/phone.rs
</code>
, <code>
lib/services/src/phone.rs
</code>
</td>
<td>
<code>
phone:*
</code>
</td>
<td>
Storefront entity setup, catalog hydration, checkout workflows, and checkout charging integration.
</td>
<td>
<code>
arma/client/addons/store
</code>
</td>
<td>
<code>
arma/server/addons/store
</code>
</td>
<td>
<code>
lib/models/src/store.rs
</code>
, <code>
lib/services/src/store.rs
</code>
</td>
<td>
<code>
store:checkout
</code>
</td>
<td>
Server-owned mission/task flows, catalog, ownership, status, participant tracking, rewards, and defuse counters.
</td>
<td>
none
</td>
<td>
<code>
arma/server/addons/task
</code>
</td>
<td>
<code>
lib/models/src/task.rs
</code>
, <code>
lib/services/src/task.rs
</code>
</td>
<td>
<code>
task:*
</code>
</td>
<td>
Organization or owner-scoped vehicle unlock storage.
</td>
<td>
via garage/org UI
</td>
<td>
server extension only
</td>
<td>
<code>
lib/models/src/v_garage.rs
</code>
, <code>
lib/services/src/v_garage.rs
</code>
</td>
<td>
<code>
owned:garage:*
</code>
</td>
<td>
Organization or owner-scoped arsenal unlock storage.
</td>
<td>
via locker/org UI
</td>
<td>
server extension only
</td>
<td>
<code>
lib/models/src/v_locker.rs
</code>
, <code>
lib/services/src/v_locker.rs
</code>
</td>
<td>
<code>
owned:locker:*
</code>
</td>
| Domain |
|---|
| Actor |
| Bank |
| CAD |
| Garage |
| Locker |
| Organization |
| Phone |
| Store |
| Task |
| Owned Garage |
| Owned Locker |
Server and extension guides: Actor, Bank, CAD, Economy, Garage, Locker, Organization, Owned Storage, Phone, Store, Task.
Client guides: Client Overview, Main, Common, Actor, Bank, CAD, Garage, Locker, Notifications, Organization, Phone, Store.
Infrastructure Modules
<th>
Purpose
</th>
<th>
Location
</th>
<td>
Shared SQF helpers, base stores, utility functions, and shared UI bridge pieces.
</td>
<td>
<code>
arma/client/addons/common
</code>
, <code>
arma/server/addons/common
</code>
</td>
<td>
Server SQF bridge around <code>
forge_server
</code>
extension calls and chunked transport.
</td>
<td>
<code>
arma/server/addons/extension
</code>
</td>
<td>
Mod-level configuration, pre-init wiring, and server/client startup glue.
</td>
<td>
<code>
arma/client/addons/main
</code>
, <code>
arma/server/addons/main
</code>
</td>
<td>
Server-side fuel, medical, and service economy helpers. Fuel and repair charge organization hot state; medical charges player bank/cash first, then organization funds with repayable member debt when personal funds cannot cover the bill.
</td>
<td>
<code>
arma/server/addons/economy
</code>
</td>
<td>
Client notification UI, sounds, and UI event handling.
</td>
<td>
<code>
arma/client/addons/notifications
</code>
</td>
<td>
Rust helper for interprocess communication and event broadcasting.
</td>
<td>
<code>
bin/icom
</code>
, <code>
arma/server/extension/src/icom.rs
</code>
</td>
<td>
Extension-side terrain export helper.
</td>
<td>
<code>
arma/server/extension/src/terrain.rs
</code>
</td>
<td>
Chunked request/response handling for large extension payloads.
</td>
<td>
<code>
arma/server/extension/src/transport.rs
</code>
</td>
<td>
SurrealDB connection lifecycle and status reporting.
</td>
<td>
<code>
arma/server/extension/src/surreal.rs
</code>
</td>
| Module |
|---|
common
|
extension
|
main
|
economy
|
notifications
|
icom
|
terrain
|
transport
|
surreal
|
Extension Command Groups
Commands are invoked with:
"forge_server" callExtension ["group:command", [_arg1, _arg2]];
Nested groups use additional : separators, for example
bank:hot:deposit.
Core
<th>
Purpose
</th>
<td>
Return the extension version string.
</td>
<td>
Return SurrealDB connection state.
</td>
<td>
Return SurrealDB connection state directly from the Surreal module.
</td>
| Command |
|---|
version
|
status
|
surreal:status
|
Actor
<th>
Purpose
</th>
<td>
Fetch actor data for a resolved player UID.
</td>
<td>
Create actor data from JSON.
</td>
<td>
Apply actor JSON updates.
</td>
<td>
Return <code>
true
</code>
or <code>
false
</code>
.
</td>
<td>
Delete actor data.
</td>
| Command |
|---|
actor:get
|
actor:create
|
actor:update
|
actor:exists
|
actor:delete
|
actor:hot:init
|
See Actor Usage Guide for examples.
Bank
<th>
Purpose
</th>
<td>
Charge a checkout against hot bank state.
</td>
<td>
Validate a PIN for bank operations.
</td>
| Command |
|---|
bank:get
|
bank:hot:init
|
bank:hot:deposit
|
bank:hot:charge_checkout
|
bank:hot:validate_pin
|
See Bank Usage Guide for examples.
Garage
<th>
Purpose
</th>
| Command |
|---|
garage:create
|
garage:hot:init
|
See Garage Usage Guide for examples.
Locker
<th>
Purpose
</th>
| Command |
|---|
locker:create
|
locker:hot:init
|
See Locker Usage Guide for examples.
Organization
<th>
Purpose
</th>
<td>
Runtime organization workflows including registration, invites, credit lines, checkout charging, assets, fleet, leave, disband, save, and remove.
</td>
| Command |
|---|
org:get
|
org:assets:get
|
org:fleet:get
|
org:members:get
|
org:hot:*
|
See Org Usage Guide for examples.
Phone
<th>
Purpose
</th>
<td>
Initialize phone state for a UID.
</td>
<td>
Remove phone state for a UID.
</td>
| Command |
|---|
phone:init
|
phone:contacts:list
|
phone:messages:list
|
phone:emails:list
|
phone:remove
|
See Phone Usage Guide for examples.
CAD
<th>
Purpose
</th>
<td>
Build grouped CAD state.
</td>
<td>
Build the dispatcher view model.
</td>
| Command Group |
|---|
cad:activity:append
|
cad:assignments:list
|
cad:orders:list
|
cad:requests:list
|
cad:profiles:list
|
cad:groups:build
|
cad:view:hydrate
|
See CAD Usage Guide for examples.
Task
<th>
Purpose
</th>
<td>
Reset task state.
</td>
<td>
Clear task state.
</td>
| Command Group |
|---|
task:reset
|
task:catalog:active
|
task:ownership:bind
|
task:status:set
|
task:defuse:increment
|
task:clear
|
See Task Usage Guide for examples.
Owned Storage
<th>
Purpose
</th>
<td>
Owner-scoped vehicle hot state.
</td>
<td>
Owner-scoped item hot state.
</td>
| Command Group |
|---|
owned:garage:create
|
owned:garage:hot:*
|
owned:locker:create
|
owned:locker:hot:*
|
See Owned Storage Usage Guide for examples.
Other Extension Groups
<th>
Purpose
</th>
<td>
Run store checkout behavior.
</td>
<td>
Export terrain data as SVG.
</td>
| Command Group |
|---|
store:checkout
|
icom:connect
|
terrain:exportSVG
|
transport:invoke
|
transport:request:append
|
transport:response:get
|
Rust Crates
<th>
Role
</th>
<td>
Domain models and validation. Keep these serializable and free of persistence details.
</td>
<td>
Repository traits and in-memory implementations. Keep these storage-agnostic.
</td>
<td>
Business rules and workflows. Depend on repository traits, not concrete databases.
</td>
<td>
Cross-crate helpers. Keep dependencies light.
</td>
<td>
Arma extension crate. Owns command registration, SurrealDB runtime wiring, and concrete storage adapters.
</td>
<td>
ICom helper binary and client library.
</td>
| Crate |
|---|
forge-models
|
forge-repositories
|
forge-services
|
forge-shared
|
forge-server
|
forge-icom
|