The following is derived from the excellent work of
-SD-DELTON, and the contributed wisdom of
(Beer_me)lobo and
Keebler750. It is only replicated and consolidated here because I keep getting asked how to do it ... having just struggled through it all recently myself.
The following scenario is based on a server rented from GameServers.com, but process and the directory layout should be very similar for any game host.
1. Figure out the steam workshop file ID for the map(s) you want to run.
Use a web browser to visit the
Steam Workshop. As you find maps you like in the
America's Army: Proving Grounds workshop, make note of the browser URL. For example here's the URL for Steam Workshop page for CSAR2:
https://steamcommunity.com/sharedfiles/filedetails/?id=267728689
Take note of the ?id=267728689 in the URL. 267728689 is the steam workshop file ID that uniquely identifies the CSAR2 User-Made Map. You will need to find the file id for the map(s) you want to run on your server.
2. Add the file IDs to your server's AASteamUGCManager.ini
Edit the ../aapg/AAGame/Config/AASteamUGCManager.ini file on your server. Add a ServerSubscribedItems line referencing the steam workshop file ID under the [SteamUGCManager.SteamUGCManager] section in the AASteamUGCManager.ini for each map you want to run. For the CSAR2 map the ServerSubscribedItems line looks like this:
ServerSubscribedItems=(IdString=267728689)
Here is an example of an AASteamUGCManager.ini that is loading CSAR2 as the only UMM:
[SteamUGCManager.SteamUGCManager]
; CSAR2 <- this is a comment
ServerSubscribedItems=(IdString=267728689)
[AALauncher.ClientSettings]
Connection=true
[AALauncher.ServerSettings]
IPAddress=dhcp
SteamPort=80-200,42
GamePort=200-250,300-350,9
QueryPort=400-402,408-900,456456456
GameVersion=1.0.0.0
[AALauncher.LogSuppressionDefaults]
SuppressedLogEntry=SteamUGCManager
SuppressedLogEntry=TriggerSteamUGCMapsUpdate
[IniVersion]
0=1479741085.000000
Save the file when you are done editing it.
3. Restart your server and let it download the files from the Steam Workshop
Restart the server. When the server starts up it will read the AASteamUGCManager.ini and attempt to download the map for each ServerSubscribedItems entry in AASteamUGCManager.ini from the steam workshop (this could take a while). For each map the server can find on the steam workshop it will create a sub-directory named for the map's file ID, and in that sub-directory it will download the associated .umap file and the and .metadata file. For the CSAR2 map the server created the following:
../aapg/Binaries/Win32/steamapps/workshop/content/203290/267728689/
../aapg/Binaries/Win32/steamapps/workshop/content/203290/267728689/CSAR2.metadata
../aapg/Binaries/Win32/steamapps/workshop/content/203290/267728689/FLO_CSAR2$76561197971401004_ac.umap
You can play on the server while it is downloading the maps.
You can check the progress of the downloads by reviewing the server's log file. On GameServers.com the aapg server log is located here:
../aapg/AAGame/Logs/AAServer.log
4. When the server has finished downloading the file(s), restart it again.
Restart the server. When the server starts up this time it will read through all the directories under ../aapg/Binaries/Win32/steamapps/workshop/content/203290/ looking for .umap files and it will build the list of all the valid maps loaded on the server.
Players connecting to your server will be prompted to download any UMMs you have loaded on the server that they are not already subscribed to in their steam account. If they say yes when prompted to download, they will be automatically subscribed to all the UMMs on your server and steam will automatically manage downloading the maps to their machine.
5. Connect to your server with your game and login as an admin.
Connect your game to your server and login to the Admin Panel. You should now be able view and switch to any map loaded on your server from the Switch Map menu.
6. [optional] Edit your server's AAGame.ini to add the loaded UMMs to the MapRotationList
You can choose to add UMMs to your server's map rotation. The Map Rotation is the list of maps the server will cycle through if the next map is not explicitly changed by a map vote or by an admin. The server's map rotation is controlled by MapRotationList lines a section named [AAGame.AADataStore_OnlineGameSearch] in the server's AAGame.ini file. The MapRotationList line is set equal to the name (without the ".umap" extension) of the map file; for CSAR2 the map file name is FLO_CSAR2$76561197971401004_ac.
Here is a [AAGame.AADataStore_OnlineGameSearch] configured to include the CSAR2 UMM in the map rotation for the server:
[AAGame.AADataStore_OnlineGameSearch]
MapRotationList="FLO_CSAR2$76561197971401004_ac"
MapRotationList=FLO_Bridge_EX
MapRotationList=FLO_BridgeNight_EX
MapRotationList=FLO_CabinFever_TH
Save the file and restart the server for the changes to take effect.
7. [optional] Edit your server's AAGame.ini to add the loaded UMMs to the MapVoteList.
You can choose to add UMMs to your server's player vote list. The Map Vote List is the list of maps players on the server can call a vote for. The server's map vote list is controlled by MapVoteList lines a section named [AAGame.AADataStore_OnlineGameSearch] in the server's AAGame.ini file; the MapVoteList lines appear after the MapRotationList lines, and by convention they are listed in alphabetical order. The MapVoteList line is set equal to the name (without the ".umap" extension) of the map file; for CSAR2 the map file name is FLO_CSAR2$76561197971401004_ac.
Here is a [AAGame.AADataStore_OnlineGameSearch] configured to include the CSAR2 UMM in the vote list for the server:
[AAGame.AADataStore_OnlineGameSearch]
MapRotationList="FLO_CSAR2$76561197971401004_ac"
MapRotationList=FLO_Bridge_EX
MapRotationList=FLO_BridgeNight_EX
MapRotationList=FLO_CabinFever_TH
MapVoteList=FLO_Bridge_EX
MapVoteList=FLO_BridgeNight_EX
MapVoteList=FLO_CabinFever_TH
MapVoteList="FLO_CSAR2$76561197971401004_ac"
Save the file and restart the server for the changes to take effect.
[NOTE: Not all UMMs can be selected for a player vote ... I do not know what makes a map votable or not.]