Panel/docs/modules/steam_workshop.md
2026-06-12 10:14:53 -05:00

93 lines
3.8 KiB
Markdown

# Steam Workshop
Workspace reference: [`GSP-WORKSPACE.md`](../../../GSP-WORKSPACE.md)
## Purpose
Dedicated Steam Workshop support for game servers.
## Current Status
- Active in this repository checkout
- User-facing Workshop module
## Dependencies
- Steam Workshop DB helpers
- legacy helper functions
## Database Tables
- `steam_workshop_game_profiles`
- `steam_workshop_server_mods`
- `steam_workshop_server_settings`
## Agent Interaction
- workshop download/update helpers
## User Workflow
- open the Steam Workshop monitor button from Game Monitor
- search by Workshop ID, Workshop URL, or keyword from the dedicated module
- search results are scoped to the current game's configured Workshop App ID
- select one or more search results with checkboxes and install them through the existing workflow
- manual Workshop ID entry remains available as a fallback
- install/update/uninstall Workshop items through the dedicated module
## Admin Workflow
- configure Workshop game XML files under `Panel/modules/steam_workshop/game_configs/`
- use `workshop_admin.php` for module administration
- `File Path` and the regex/mod-string fields are optional
- a blank `File Path` means post-install and uninstall scripts run without any automatic config-file editing
- the admin page can copy configuration settings from one existing XML config into the currently selected game/OS config
- copied settings include Workshop App ID, download method, anonymous login, paths, regex/config-edit fields, post-install script, and uninstall script
- copied settings do not include installed mods, cached mod lists, game server files, or any files from a game home directory
## Search Backend
- discovery is server-side in `Panel/modules/steam_workshop/main.php`
- the panel searches Steam Community Workshop browse results for the current game App ID
- result metadata is hydrated with `ISteamRemoteStorage/GetPublishedFileDetails`
- no Steam API key is currently required for the user-facing search flow
- selected result IDs and manual IDs are deduplicated before the existing install RPC runs
## UI Notes
- the main Workshop page `Back` link is rendered as a real panel button
- uninstall remains in the dedicated `steam_workshop` module
- the uninstall page is also the installed-mods view and shows tracked title, Workshop ID, installed folder/path, status, install time, and a copyable mod line
## Legacy RPC Behavior
- the dedicated module still calls the legacy agent `steam_workshop` XML-RPC method
- when `config/filepath` is blank, the Panel now passes an empty `config_file_path`
- both agents skip the generated `cat` / regex / config-write block when `config_file_path` is blank
- both agents still run custom post-install scripts and still write `WorkshopModsInfo`
- uninstall falls back to `WorkshopModsInfo` when no config file is managed
- new agents write per-home installed mod records under `WorkshopModsInfo/home_<home_id>/`
- each installed record includes mod string, Workshop item ID, title, installed folder/path, Workshop App ID, status, and timestamps
- agents also write `<game_home>/WorkshopInstallStatus.json` with `running`, `completed`, or `failed` Workshop install state
- Workshop install logs end with `GSP_WORKSHOP_INSTALL_COMPLETE` or `GSP_WORKSHOP_INSTALL_FAILED`; the Panel uses these markers to avoid stale `Update in progress` displays when the generic update screen remains visible
## Security Concerns
- should not be duplicated under `addonsmanager`
## Known Issues
- some repository docs still describe this module as deprecated
## Missing Functionality
- documentation cleanup so all references match the current module ownership
## Suggested Future Improvements
- keep Workshop links and workflows isolated to this module
- remove old addonsmanager Workshop assumptions
## Recommendation
- Keep as the dedicated Workshop module