226 lines
13 KiB
Markdown
226 lines
13 KiB
Markdown
---
|
|
title: "Module Reference"
|
|
description: "This reference lists the main Forge modules and where each layer lives."
|
|
---
|
|
|
|
## Directory Map
|
|
|
|
```text
|
|
arma/mod/addons/ Shared config addon built as @forge_mod
|
|
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
|
|
|
|
| Domain | Purpose | Client addon | Server addon | Service/model layer | Extension group |
|
|
| --- | --- | --- | --- | --- | --- |
|
|
| Actor | Player identity, loadout, position, status, contact identifiers, and persistent character data. | `arma/client/addons/actor` | `arma/server/addons/actor` | `lib/models/src/actor.rs`, `lib/services/src/actor.rs` | `actor:*` |
|
|
| Bank | Player accounts, cash/bank balances, PIN validation and changes, transfers, checkout charging, and transaction context. | `arma/client/addons/bank` | `arma/server/addons/bank` | `lib/models/src/bank.rs`, `lib/services/src/bank.rs` | `bank:*`, `bank:hot:*` |
|
|
| CAD | Dispatch requests, assignments, orders, activity stream, profiles, groups, and hydrated dispatcher views. | `arma/client/addons/cad` | `arma/server/addons/cad` | `lib/models/src/cad.rs`, `lib/services/src/cad.rs` | `cad:*` |
|
|
| Garage | Player vehicle storage with plate IDs, fuel, damage, and hit point state. | `arma/client/addons/garage` | `arma/server/addons/garage` | `lib/models/src/garage.rs`, `lib/services/src/garage.rs` | `garage:*`, `garage:hot:*` |
|
|
| Locker | Player item storage keyed by classname with category and amount. | `arma/client/addons/locker` | `arma/server/addons/locker` | `lib/models/src/locker.rs`, `lib/services/src/locker.rs` | `locker:*`, `locker:hot:*` |
|
|
| Organization | Player organizations, membership, treasury, credit lines, shared assets, and fleet data. | `arma/client/addons/org` | `arma/server/addons/org` | `lib/models/src/org.rs`, `lib/services/src/org.rs` | `org:*`, `org:hot:*` |
|
|
| Phone | Contacts, messages, and email state. | `arma/client/addons/phone` | `arma/server/addons/phone` | `lib/models/src/phone.rs`, `lib/services/src/phone.rs` | `phone:*` |
|
|
| Store | Storefront entity setup, catalog hydration, checkout workflows, and checkout charging integration. | `arma/client/addons/store` | `arma/server/addons/store` | `lib/models/src/store.rs`, `lib/services/src/store.rs` | `store:checkout` |
|
|
| Task | Server-owned mission/task flows, catalog, ownership, status, participant tracking, rewards, and defuse counters. Mission-facing Eden module classes live in `@forge_mod`; runtime execution remains server-owned. | shared module config in `arma/mod/addons/task` | `arma/server/addons/task` | `lib/models/src/task.rs`, `lib/services/src/task.rs` | `task:*` |
|
|
| Owned Garage | Organization or owner-scoped vehicle unlock storage. | via garage/org UI | server extension only | `lib/models/src/v_garage.rs`, `lib/services/src/v_garage.rs` | `owned:garage:*` |
|
|
| Owned Locker | Organization or owner-scoped arsenal unlock storage. | via locker/org UI | server extension only | `lib/models/src/v_locker.rs`, `lib/services/src/v_locker.rs` | `owned:locker:*` |
|
|
|
|
Server and extension guides:
|
|
[Actor](/server-modules/actor),
|
|
[Bank](/server-modules/bank),
|
|
[CAD](/server-modules/cad),
|
|
[Economy](/server-modules/economy),
|
|
[Garage](/server-modules/garage),
|
|
[Locker](/server-modules/locker),
|
|
[Organization](/server-modules/organization),
|
|
[Owned Storage](/server-modules/owned-storage),
|
|
[Phone](/server-modules/phone),
|
|
[Store](/server-modules/store),
|
|
[Task](/server-modules/task).
|
|
|
|
Client guides:
|
|
[Client Overview](/client-addons),
|
|
[Main](/client-addons/main),
|
|
[Common](/client-addons/common),
|
|
[Actor](/client-addons/actor),
|
|
[Bank](/client-addons/bank),
|
|
[CAD](/client-addons/cad),
|
|
[Garage](/client-addons/garage),
|
|
[Locker](/client-addons/locker),
|
|
[Notifications](/client-addons/notifications),
|
|
[Organization](/client-addons/organization),
|
|
[Phone](/client-addons/phone),
|
|
[Store](/client-addons/store).
|
|
|
|
## Infrastructure Modules
|
|
|
|
| Module | Purpose | Location |
|
|
| --- | --- | --- |
|
|
| `forge_mod_common` | Shared config classes required by both clients and servers, including the Forge body bag vehicle. | `arma/mod/addons/common` |
|
|
| `forge_mod_task` | Shared Forge task Eden module classes used by missions. Functions still resolve to server-side task handlers at runtime. | `arma/mod/addons/task` |
|
|
| `common` | Shared SQF helpers, base stores, utility functions, and shared UI bridge pieces. | `arma/client/addons/common`, `arma/server/addons/common` |
|
|
| `extension` | Server SQF bridge around `forge_server` extension calls and chunked transport. | `arma/server/addons/extension` |
|
|
| `main` | Mod-level configuration, pre-init wiring, and server/client startup glue. | `arma/client/addons/main`, `arma/server/addons/main` |
|
|
| `economy` | 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. | `arma/server/addons/economy` |
|
|
| `notifications` | Client notification UI, sounds, and UI event handling. | `arma/client/addons/notifications` |
|
|
| `icom` | Rust helper for interprocess communication and event broadcasting. | `bin/icom`, `arma/server/extension/src/icom.rs` |
|
|
| `terrain` | Extension-side terrain export helper. | `arma/server/extension/src/terrain.rs` |
|
|
| `transport` | Chunked request/response handling for large extension payloads. | `arma/server/extension/src/transport.rs` |
|
|
| `surreal` | SurrealDB connection lifecycle and status reporting. | `arma/server/extension/src/surreal.rs` |
|
|
|
|
## Extension Command Groups
|
|
|
|
Commands are invoked with:
|
|
|
|
```sqf
|
|
"forge_server" callExtension ["group:command", [_arg1, _arg2]];
|
|
```
|
|
|
|
Nested groups use additional `:` separators, for example
|
|
`bank:hot:deposit`.
|
|
|
|
### Core
|
|
|
|
| Command | Purpose |
|
|
| --- | --- |
|
|
| `version` | Return the extension version string. |
|
|
| `status` | Return SurrealDB connection state. |
|
|
| `surreal:status` | Return SurrealDB connection state directly from the Surreal module. |
|
|
|
|
### Actor
|
|
|
|
| Command | Purpose |
|
|
| --- | --- |
|
|
| `actor:get` | Fetch actor data for a resolved player UID. |
|
|
| `actor:create` | Create actor data from JSON. |
|
|
| `actor:update` | Apply actor JSON updates. |
|
|
| `actor:exists` | Return `true` or `false`. |
|
|
| `actor:delete` | Delete actor data. |
|
|
| `actor:hot:init`, `actor:hot:get`, `actor:hot:keys`, `actor:hot:override`, `actor:hot:save`, `actor:hot:remove` | Manage actor hot state. |
|
|
|
|
See [Actor Usage Guide](/server-modules/actor) for examples.
|
|
|
|
### Bank
|
|
|
|
| Command | Purpose |
|
|
| --- | --- |
|
|
| `bank:get`, `bank:create`, `bank:update`, `bank:exists`, `bank:delete` | Durable bank CRUD. |
|
|
| `bank:hot:init`, `bank:hot:get`, `bank:hot:override`, `bank:hot:patch`, `bank:hot:save`, `bank:hot:remove` | Manage bank hot state. |
|
|
| `bank:hot:deposit`, `bank:hot:withdraw`, `bank:hot:deposit_earnings`, `bank:hot:transfer` | Mutate hot bank balances with operation context. |
|
|
| `bank:hot:charge_checkout` | Charge a checkout against hot bank state. |
|
|
| `bank:hot:validate_pin`, `bank:hot:change_pin` | Validate and update PINs for bank operations. |
|
|
|
|
See [Bank Usage Guide](/server-modules/bank) for examples.
|
|
|
|
### Garage
|
|
|
|
| Command | Purpose |
|
|
| --- | --- |
|
|
| `garage:create`, `garage:get`, `garage:add`, `garage:update`, `garage:patch`, `garage:remove`, `garage:delete`, `garage:exists` | Durable player garage operations. |
|
|
| `garage:hot:init`, `garage:hot:get`, `garage:hot:override`, `garage:hot:add`, `garage:hot:remove_vehicle`, `garage:hot:save`, `garage:hot:remove` | Manage player garage hot state. |
|
|
|
|
See [Garage Usage Guide](/server-modules/garage) for examples.
|
|
|
|
### Locker
|
|
|
|
| Command | Purpose |
|
|
| --- | --- |
|
|
| `locker:create`, `locker:get`, `locker:add`, `locker:update`, `locker:patch`, `locker:remove`, `locker:delete`, `locker:exists` | Durable player locker operations. |
|
|
| `locker:hot:init`, `locker:hot:get`, `locker:hot:override`, `locker:hot:save`, `locker:hot:remove` | Manage player locker hot state. |
|
|
|
|
See [Locker Usage Guide](/server-modules/locker) for examples.
|
|
|
|
### Organization
|
|
|
|
| Command | Purpose |
|
|
| --- | --- |
|
|
| `org:get`, `org:create`, `org:update`, `org:exists`, `org:delete` | Durable organization CRUD. |
|
|
| `org:assets:get`, `org:assets:update` | Manage organization assets. |
|
|
| `org:fleet:get`, `org:fleet:update` | Manage organization fleet entries. |
|
|
| `org:members:get`, `org:members:add`, `org:members:remove` | Manage organization membership. |
|
|
| `org:hot:*` | Runtime organization workflows including registration, invites, credit lines, checkout charging, assets, fleet, leave, disband, save, and remove. |
|
|
|
|
See [Org Usage Guide](/server-modules/organization) for examples.
|
|
|
|
### Phone
|
|
|
|
| Command | Purpose |
|
|
| --- | --- |
|
|
| `phone:init` | Initialize phone state for a UID. |
|
|
| `phone:contacts:list`, `phone:contacts:add`, `phone:contacts:remove` | Manage contacts. |
|
|
| `phone:messages:list`, `phone:messages:thread`, `phone:messages:send`, `phone:messages:mark_read`, `phone:messages:delete` | Manage messages. |
|
|
| `phone:emails:list`, `phone:emails:send`, `phone:emails:mark_read`, `phone:emails:delete` | Manage emails. |
|
|
| `phone:remove` | Remove phone state for a UID. |
|
|
|
|
See [Phone Usage Guide](/server-modules/phone) for examples.
|
|
|
|
### CAD
|
|
|
|
| Command Group | Purpose |
|
|
| --- | --- |
|
|
| `cad:activity:append`, `cad:activity:recent` | Append and read recent activity. |
|
|
| `cad:assignments:list`, `cad:assignments:assign`, `cad:assignments:acknowledge`, `cad:assignments:decline`, `cad:assignments:upsert`, `cad:assignments:delete` | Manage dispatch assignments. |
|
|
| `cad:orders:list`, `cad:orders:create`, `cad:orders:create_from_context`, `cad:orders:close`, `cad:orders:upsert`, `cad:orders:delete` | Manage orders. |
|
|
| `cad:requests:list`, `cad:requests:submit`, `cad:requests:submit_from_context`, `cad:requests:close`, `cad:requests:upsert`, `cad:requests:delete` | Manage requests. |
|
|
| `cad:profiles:list`, `cad:profiles:update_from_context`, `cad:profiles:upsert`, `cad:profiles:delete` | Manage profiles. |
|
|
| `cad:groups:build` | Build grouped CAD state. |
|
|
| `cad:view:hydrate` | Build the dispatcher view model. |
|
|
|
|
See [CAD Usage Guide](/server-modules/cad) for examples.
|
|
|
|
### Task
|
|
|
|
| Command Group | Purpose |
|
|
| --- | --- |
|
|
| `task:reset` | Reset task state. |
|
|
| `task:catalog:active`, `task:catalog:get`, `task:catalog:upsert`, `task:catalog:delete` | Manage task catalog entries. |
|
|
| `task:ownership:bind`, `task:ownership:release`, `task:ownership:accept`, `task:ownership:reward_context` | Manage task ownership and rewards. |
|
|
| `task:status:set`, `task:status:get`, `task:status:clear` | Manage task status. |
|
|
| `task:defuse:increment`, `task:defuse:get` | Manage defuse counters. |
|
|
| `task:clear` | Clear task state. |
|
|
|
|
See [Task Usage Guide](/server-modules/task) for examples.
|
|
|
|
### Owned Storage
|
|
|
|
| Command Group | Purpose |
|
|
| --- | --- |
|
|
| `owned:garage:create`, `owned:garage:fetch`, `owned:garage:get`, `owned:garage:add`, `owned:garage:remove`, `owned:garage:delete`, `owned:garage:exists` | Owner-scoped vehicle storage. |
|
|
| `owned:garage:hot:*` | Owner-scoped vehicle hot state. |
|
|
| `owned:locker:create`, `owned:locker:fetch`, `owned:locker:get`, `owned:locker:add`, `owned:locker:remove`, `owned:locker:delete`, `owned:locker:exists` | Owner-scoped item storage. |
|
|
| `owned:locker:hot:*` | Owner-scoped item hot state. |
|
|
|
|
See [Owned Storage Usage Guide](/server-modules/owned-storage) for examples.
|
|
|
|
### Other Extension Groups
|
|
|
|
| Command Group | Purpose |
|
|
| --- | --- |
|
|
| `store:checkout` | Run store checkout behavior. |
|
|
| `icom:connect`, `icom:broadcast`, `icom:send_event` | ICOM connection and event forwarding. See [ICOM Usage Guide](/server-extension/icom). |
|
|
| `terrain:exportSVG` | Export terrain data as SVG. |
|
|
| `transport:invoke`, `transport:invoke_stored` | Invoke commands through transport. |
|
|
| `transport:request:append`, `transport:request:clear` | Manage stored request chunks. |
|
|
| `transport:response:get`, `transport:response:clear` | Manage stored response chunks. |
|
|
|
|
## Rust Crates
|
|
|
|
| Crate | Role |
|
|
| --- | --- |
|
|
| `forge-models` | Domain models and validation. Keep these serializable and free of persistence details. |
|
|
| `forge-repositories` | Repository traits and in-memory implementations. Keep these storage-agnostic. |
|
|
| `forge-services` | Business rules and workflows. Depend on repository traits, not concrete databases. |
|
|
| `forge-shared` | Cross-crate helpers. Keep dependencies light. |
|
|
| `forge-server` | Arma extension crate. Owns command registration, SurrealDB runtime wiring, and concrete storage adapters. |
|
|
| `forge-icom` | ICom helper binary and client library. |
|