3.9 KiB
Workshop System
Workspace reference: GSP-WORKSPACE.md
Current State
The current Workshop/content work is split across two module lines:
Panel/modules/steam_workshop- active user-facing Workshop modulePanel/modules/addonsmanager- Server Content module, no longer a Workshop entry point
Important files:
Panel/modules/steam_workshop/module.phpPanel/modules/steam_workshop/main.phpPanel/modules/steam_workshop/monitor_buttons.phpPanel/modules/steam_workshop/workshop_admin.php
Current Implemented Behavior
Steam Workshop is handled by the dedicated steam_workshop module.
Server Content must not show a Steam Workshop Mods category or route users into addonsmanager/workshop_content.php.
Database State
The dedicated module still uses its own Workshop tables and per-game XML files under Panel/modules/steam_workshop/game_configs/.
What Exists Today
The dedicated module still provides:
- user-facing Workshop pages
- monitor-button access from Game Monitor
- per-game Workshop configuration files
- uninstall and admin support pages
- admin copy support for copying Workshop configuration settings between XML configs without copying installed mods or server files
- optional regex/config-file editing for games that need automatic mod-list updates
- post-install-only workflows for games that only need a move/copy script
Legacy RPC Install Semantics
The dedicated steam_workshop module still uses the legacy steam_workshop agent RPC for installs.
Current rule:
- if
config/filepathis blank, the Panel passes a blankconfig_file_path - agents must skip the generated config-file editing block entirely
- post-install scripts still run
WorkshopModsInfostill records installed items- uninstall can rely on
WorkshopModsInfowhen no config file is managed - installed-mod tracking is per home when the agent supports
get_workshop_mods_info(home_id) - Workshop installs write
<game_home>/WorkshopInstallStatus.jsonand terminal log markers so the Panel can clear stale Workshop update messages without hiding unrelated running updates
This keeps advanced regex editing available without forcing it for simple Arma/DayZ-style @mod installs.
Main Limitations
- Some repository docs still describe the abandoned addonsmanager Workshop direction and should be treated as historical until updated.
Scheduler Integration
Scheduler behavior for Workshop should be evaluated against the dedicated module, not inferred from addonsmanager.
Troubleshooting
| Symptom | Meaning | Fix |
|---|---|---|
Steam Workshop Mods appears under Server Content |
Old addonsmanager Workshop category logic is still present. | Remove the workshop_item category from Server Content UI and use the dedicated steam_workshop module. |
Recommended Mental Model
Use steam_workshop for Workshop. Use addonsmanager for normal Server Content items only.
References Reviewed
Panel/modules/steam_workshopremains the active module in this repository checkout.game_pathserver_pathworkshop_app_idsteam_app_iditemsitem_detailsinstall_strategytarget_pathextra.copy_keysextra.keys_target_path
Generated Workshop jobs validate numeric item IDs, keep writes under the server home, use SteamCMD through a temporary runscript, copy files into the resolved target path, and copy .bikey files for DayZ/Arma strategies when enabled.
Bundled handler actions:
install- download with SteamCMD, copy/install into target path.update- validate/download with SteamCMD, copy/install into target path.check_updates- validate/download only; does not alter live mod folders.download_only- download/cache only and leave install pending.validate_files- SteamCMD validate/download only.remove- move the installed target folder intogsp_server_content/workshop/removed/; this does not require SteamCMD.