3.3 KiB
Workshop System
Current State
The current Workshop/content work is split across two module lines:
Panel/modules/steam_workshop- deprecated compatibility layerPanel/modules/addonsmanager- the active Server Content Manager path
Important files:
Panel/modules/addonsmanager/module.phpPanel/modules/addonsmanager/user_addons.phpPanel/modules/addonsmanager/addons_manager.phpPanel/modules/addonsmanager/workshop_content.phpPanel/modules/addonsmanager/workshop_action.phpPanel/modules/addonsmanager/scripts/workshop/generic_steam_workshop_linux.shPanel/modules/addonsmanager/scripts/workshop/generic_steam_workshop_windows_cygwin.shPanel/modules/steam_workshop/module.phpPanel/modules/steam_workshop/agent_update_workshop.php
Phase 1 Implemented Behavior
The active user workflow is now addonsmanager -> workshop_content.
Users can enter either:
- a numeric Workshop item ID
- a full Steam Workshop URL containing
id=<number>
The Panel extracts and stores only numeric Workshop IDs. Invalid text is rejected before any manifest or shell command is built.
The Panel writes a manifest under the server home:
{SERVER_HOME}/gsp_server_content/workshop_manifest.json
The Panel syncs the bundled install script to:
{SERVER_HOME}/gsp_server_content/scripts/workshop/generic_steam_workshop_linux.sh{SERVER_HOME}/gsp_server_content/scripts/workshop/generic_steam_workshop_windows_cygwin.sh
The agent executes the synced script with the manifest path. Customers do not need to place scripts manually on the agent.
The manifest includes:
home_id- server/game path
workshop_app_id- Workshop item IDs
- per-item target paths
- install strategy
- key-copy settings
- content template metadata
DayZ/Arma-style installs default to dayz_mod_folder or arma_mod_folder based on the game key/name/config file. Those strategies install to @<workshop_id> by default and copy .bikey files into the server keys folder when found. Missing key files are logged but do not fail the install.
Database State
server_content_workshop tracks:
content_idhome_idworkshop_app_idworkshop_item_idtitleinstall_pathinstall_strategyenabledload_orderinstall_statelast_installed_atlast_updated_atlast_error
Current install states used by Phase 1:
queuedinstallinginstalledfailedremoved
What Exists Today
The current direction already supports:
- content records in the Panel database
- Workshop item IDs
- installation metadata
- install history tables
- game compatibility fields
- launch parameter additions
- post-install behavior fields
Main Limitations
- Workshop metadata is still incomplete.
- load order is tracked but not yet a full drag-and-drop or startup-param UX concept.
- enable/disable is stored but does not yet regenerate startup parameters.
- update/remove are synchronous and should become background jobs.
- caching and cleanup policy need product-level design, not just ad hoc scripts.
-mod=/-serverMod=generation still needs a safe structured implementation.
Recommended Mental Model
Use addonsmanager as the main future home for:
- mods
- add-ons
- Workshop items
- scripts
- config packs
- server content manifests
- install history
Treat steam_workshop as a legacy bridge for migration only.