API ReferenceGE Extensionscore
Audio Bank Manager
Manages FMOD sound bank loading, caching, hotloading, and level-specific audio. Handles string banks, preload banks, asset banks, meta banks, and ambient banks in the correct loading order.
Manages FMOD sound bank loading, caching, hotloading, and level-specific audio. Handles string banks, preload banks, asset banks, meta banks, and ambient banks in the correct loading order.
Public API
| Function | Signature | Returns | Description |
|---|---|---|---|
M.registerBaseBank | (path) | nil | Registers a base bank for loading (queued if not yet initialized) |
M.loadLevelBank | (bankFilePath) | nil | Loads a level-specific FMOD bank as a scene object |
M.loadVehicleBank | (bankPath) | nil | Loads a vehicle-specific bank (preloaded, blocking) |
M.triggerBankHotloading | () | nil | Full hot-reload of all audio banks |
Hooks
| Hook | Purpose |
|---|---|
M.onFirstUpdate | Populates bank tables and loads base banks on first frame |
M.onClientPreStartMission | Loads level-specific banks on mission start |
M.onClientEndMission | Clears level bank cache entries |
M.onPhysicsPaused | Sets g_GamePause FMOD parameter to 1 |
M.onPhysicsUnpaused | Sets g_GamePause FMOD parameter to 0 |
M.onReplayStateChanged | Syncs pause state with replay |
M.onSerialize | Preserves bank cache across Lua reloads |
M.onDeserialized | Restores bank cache after Lua reload |
M.onFilesChanged | Detects .bank file changes and triggers hotload |
Bank Loading Order
- String banks (contain FMOD event names)
- Preload banks (always resident in memory)
- Normal banks (loaded on demand)
Bank Categories
| Category | Location | Lifecycle |
|---|---|---|
| Asset banks | art/sound/fmod/[platform]/ | Base (always loaded) |
| Meta banks | Same, excludes assets/streams | Base (always loaded) |
| Ambient banks | Contains ambient_maps | Level-scoped |
| Vehicle banks | Per-vehicle paths | Preloaded per vehicle |
Module State
| Variable | Type | Default |
|---|---|---|
hotloadTriggered | nil | nil |
prevReplayState | varies | Tracks previous replay state |
Usage Examples
-- Register a custom bank
core_audio.registerBaseBank("/art/sound/fmod/desktop/myMod.bank")
-- Load a level-specific bank
core_audio.loadLevelBank("/levels/west_coast_usa/sounds/custom.bank")
-- Load a vehicle sound bank
core_audio.loadVehicleBank("/vehicles/etk800/sounds/etk800.bank")
-- Force reload all banks (development)
core_audio.triggerBankHotloading()Notes
- Banks are cached to prevent duplicate loads; cache is path-normalized (lowercase, leading
/) - Headphones mode loads from a
_headphonessubdirectory for meta banks SFXFMODProjectis the C++ binding; nil-checked to prevent crashes
Activity Manager
Simple activity launcher. Maps activity names to startup functions. Currently only supports `ContinueFreeroam`.
Audio Ribbon System
Dynamic spatial audio system for rivers, waterfalls, and ambient sound ribbons. Computes closest-point-on-ribbon geometry per frame, managing near/far lists and 5-axis SFX emitter positioning relative