redo of steam workshop
This commit is contained in:
parent
e662415f36
commit
e6541370b9
19 changed files with 610 additions and 38 deletions
|
|
@ -19,7 +19,15 @@ Important files:
|
|||
- `Panel/modules/steam_workshop/module.php`
|
||||
- `Panel/modules/steam_workshop/agent_update_workshop.php`
|
||||
|
||||
## Phase 1 Implemented Behavior
|
||||
## Current Implemented Behavior
|
||||
|
||||
Workshop is Panel-side orchestration. The active workflow lives in Server Content Manager and uses existing agent primitives only:
|
||||
|
||||
- Panel writes manifests with validated numeric Workshop IDs.
|
||||
- Panel deploys an OS-appropriate bundled handler script into the server home.
|
||||
- Panel invokes the handler through the existing authenticated agent `exec` RPC.
|
||||
- Agents do not need new Workshop-specific business logic.
|
||||
- Legacy agent RPCs from the old `steam_workshop` module remain compatibility-only and are not the primary path.
|
||||
|
||||
The active user workflow is now `addonsmanager` -> `workshop_content`.
|
||||
|
||||
|
|
@ -39,7 +47,7 @@ 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 agent executes the synced script with the manifest path by using the existing generic command execution path. Customers do not need to place scripts manually on the agent.
|
||||
|
||||
Script selection rules:
|
||||
|
||||
|
|
@ -108,6 +116,8 @@ The Panel helper parser reads `workshop_support` first. Older direct tags are to
|
|||
- `install_strategy`
|
||||
- `enabled`
|
||||
- `load_order`
|
||||
- `update_policy`
|
||||
- `pending_action`
|
||||
- `install_state`
|
||||
- `last_installed_at`
|
||||
- `last_updated_at`
|
||||
|
|
@ -118,9 +128,26 @@ Current install states used by Phase 1:
|
|||
- `queued`
|
||||
- `installing`
|
||||
- `installed`
|
||||
- `downloaded`
|
||||
- `failed`
|
||||
- `removed`
|
||||
|
||||
`server_content_workshop_catalog` tracks known/common Workshop items seen through Server Content Manager:
|
||||
|
||||
- `workshop_id`
|
||||
- `app_id`
|
||||
- `title`
|
||||
- `install_count`
|
||||
- `first_seen`
|
||||
- `last_installed`
|
||||
- `last_updated`
|
||||
- `published_date`
|
||||
- `tags`
|
||||
- `game_key`
|
||||
- `local_cache_path`
|
||||
|
||||
The catalog is Panel-side and does not require Steam Web API metadata. Metadata can be added later.
|
||||
|
||||
## What Exists Today
|
||||
|
||||
The current direction already supports:
|
||||
|
|
@ -136,12 +163,39 @@ The current direction already supports:
|
|||
## 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.
|
||||
- Load order is tracked but not yet a full drag-and-drop or startup-param UX concept.
|
||||
- Enable/disable is exposed and 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.
|
||||
|
||||
## Scheduler Integration
|
||||
|
||||
Workshop updates use the existing `cron` / Scheduler system. No second Workshop scheduler should be created.
|
||||
|
||||
Supported scheduler action keys:
|
||||
|
||||
- `workshop_update`
|
||||
- `workshop_update_and_restart`
|
||||
- `workshop_download_only`
|
||||
- `workshop_install_pending_on_restart`
|
||||
|
||||
Compatibility Server Content keys remain available:
|
||||
|
||||
- `server_content_check_workshop_updates`
|
||||
- `server_content_update_workshop`
|
||||
- `server_content_install_updates_next_restart`
|
||||
- `server_content_install_updates_and_restart`
|
||||
|
||||
Per-item update policy values stored on `server_content_workshop.update_policy`:
|
||||
|
||||
- `manual`
|
||||
- `scheduled`
|
||||
- `update_now`
|
||||
- `update_and_restart`
|
||||
- `download_only`
|
||||
- `install_on_restart`
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
| Symptom | Meaning | Fix |
|
||||
|
|
@ -192,3 +246,12 @@ Important manifest fields:
|
|||
- `extra.keys_target_path`
|
||||
|
||||
Both bundled handlers validate numeric item IDs, keep writes under the server home, use SteamCMD, 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 into `gsp_server_content/workshop/removed/`; this does not require SteamCMD.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue