Task: TODOS.phase-72.72.14.2.1
The V2 mod distribution layer exposes Steam Workshop through
FV2ModSteamWorkshopPolicy, FV2ModSteamWorkshopRequest, and
FV2ModSteamWorkshopOperation. The runtime surface is deliberately split into a
deterministic planner and a native V2SteamWorkshopBridge: game code can
validate every upload, download, subscription, update, and rating request before
handing the operation to Steamworks.
Runtime Contract#
BuildDefaultSteamWorkshopPolicy declares the ISteamUGC calls required for
the integration:
- Upload:
CreateItem,StartItemUpdate, metadata setters, content and preview setters, andSubmitItemUpdate. - Download:
DownloadItem,GetItemInstallInfo, andGetItemState. - Subscribe:
SubscribeItem,DownloadItem,GetSubscribedItems, and install info refresh. - Update:
StartItemUpdate, content or preview setters, tags, andSubmitItemUpdate. - Rate:
SetUserItemVotefollowed byGetUserItemVote.
The default policy keeps the Steam AppId and native bridge availability explicit
so editor automation and CI can validate the contract without silently faking a
live Steam client. Production configuration must provide a positive
SteamAppId, load the V2SteamWorkshopBridge, and accept the Workshop legal
agreement before upload or update operations are allowed.
Operation Builders#
Use the Blueprint helpers to create typed requests:
BuildSteamWorkshopUploadRequestBuildSteamWorkshopDownloadRequestBuildSteamWorkshopSubscribeRequestBuildSteamWorkshopUpdateRequestBuildSteamWorkshopRateRequest
EvaluateSteamWorkshopRequest returns a FV2ModSteamWorkshopResult containing
the exact ISteamUGC call list, blocking validation issues, install/staging
paths, and whether the request is ready for the native Steam API bridge.
Local State Projection#
ApplySteamWorkshopOperationToState updates FV2ModSteamWorkshopItemState
after a bridge callback succeeds. Subscription and download operations mark the
item installed and clear pending download or update flags. Rating operations
preserve the chosen vote direction so the mod browser and author dashboard can
stay consistent with GetUserItemVote.
Verification#
Run:
python3 V2/ue/Tools/check-v2-steam-workshop-integration.py
python3 -m json.tool V2/ue/Content/V2/Modding/SteamWorkshopIntegration_V2_Contract.json
The focused checker verifies the contract, runtime declarations, implementation
snippets, automation assertions, CI/Horde wiring, and TODO evidence for
72.14.2.1.