Loading times - how to make them very short

Joined
Jun 7, 2008
Messages
6,123
Location
Just wonder...
One thing for sure everyone has experienced when playing multiplayer, especially when the game becomes advanced or on larger maps, is that when you connect the transfer of the savegame between players is painfully slow. From what I've learned, this is because that speed is limited to a few kb in the exe, so nothing we can really do there, probably. But searching the forum, I've found some info in the Pitboss Mod thread that can help solve this problem for people playing Direct IP (although pitboss still doesn't currently work for RAND).
Anyway, I've tried this trick and loading times of an advanced game (modern era), for a savegame of about 5MB, have gone down from 7-8 minutes to 1 minute more or less.
The relevant post that I've used as a guide is here. But to make things easier, I describe here the full procedure that must be used to avoid problems. All players MUST follow this exact procedure, but it's just for the first time. So, here we go:

  1. One player creates a OneDrive account on https://onedrive.live.com ; it's a Microsoft sharing service, I've used this one (free) because it's easier but probably any free service will work; to access your account, you will use a link like https:\\d.docs.live.net\[YOURID]\ where [YOURID] is usually a long code with numbers and letters
  2. You will share this account with other players, so make sure you trust your friends or better create an account only and specifically for this purpose.
  3. All players on their PC, if the mod is installed under My Games folder, copy the folder Rise of Mankind - A New Dawn under Beyond The Sword\mods folder.
  4. Rename My Games folder to My Games ORIGINAL, so that it doesn't get used by BTS anymore. You can keep this folder as a backup in case things go wrong.
  5. Choose a drive and a folder that everyone can use on their PCs; for example, I've created a folder C:\Games\RAND Multiplayer. Everybody must create the same folder on their PCs. This will be your ALTROOT folder.
  6. Everyone add http:\\d.docs.live.net\[YOURID]\ as a Network Drive on their PCs. You can do this by either right clicking on your Computer icon on your desktop or opening the file explorer, selecting your computer and "Map Network Drive" from the menu above. I used drive X: for example. [Should http not work, try https]
  7. Check both "Reconnect at logon" and "connect using different credentials" and insert username and password of your OneDrive account.
  8. Create a shortcut on the desktop, it should point to "C:\Games\Civ4\Beyond the Sword\Civ4BeyondSword.exe" /ALTROOT="C:\Games\RAND Multiplayer" mod= Rise of Mankind - A New Dawn as a target and to "C:\Games\CIV4\Beyond the Sword" as "Start in".Of course you should use your personal Civ4BeyondSword.exe location and your ALTROOT location. Exe location can be different for every player, ALTROOT location must be the same. Pay attention to spaces and ", they must be exactly the same as above.
  9. Start the game from this shortcut; if it works, Civ4 copies its files into the new folder C:\Games\RAND Multiplayer
  10. You will see a Saves subfolder: inside this folder DELETE "multi" subfolder
  11. Create "RAND Multiplayer\Saves\multi"subfolders on your OneDrive location: it's important that the path is the same of your folder on your pc.
  12. Start the DOS window ("cmd" from the Windows Start button) and type mklink /d "C:\Games\RAND Multiplayer\Saves\multi" "X:\RAND Multiplayer\Saves\multi" This will create a "multi" subfolder in C:\Games\RAND Multiplayer\Saves that will be linked to your OneDrive folder RAND Multiplayer\Saves\multi
  13. Now when you start a game with the shortcut, the game will save and load games from your OneDrive location. For this reason, since uploading is usually slower, I suggest you switch off Autosaves in your ini file. Also, when saving, I suggest you save locally in another folder and only upload your save one OneDrive when you need to re-connect with a disconnected or OOS player. For example I've created a "Local multi" folder under "Saves" and whenever I need to upload a save, without quitting RAND, I access that folder with my phone and upload the file using OneDrive app.
Anyway, the result is that when the host loads the game, he can load the save from this OneDrive location; and every other player, instead of loading the save via Civ4 slooooooow transfer feature, loads the save directly from the same OneDrive location so it's almost like loading a save locally or downloading a file, which makes it much faster than usual "transferring". By the way, when using this method you will not see the usual "Transferring" bar when you connect to a game. Instead, the game will load very fast and you will see the player lobby.
That's it, it's harder to explain that to do it. Next time you play multiplayer, the only thing you need to do is to click the shortcut.
If you want to revert all those changes, you only need to rename your My Games ORIGINAL folder back to My Games and, if you have copied RAND in your BTS\mods folder, delete it from there (or rename it) and use the copy under "My Games". If you have installed the mod in BTS\mods instead of "My Games" folder, you don't even need to copy the mod and you can use the one in BTS\mods straight away.

Credit for this method goes to @Ramkhamhaeng. He has developed another method here, but I have not tested it yet.

Edit: I forgot a detail; since the BUG component of the mod doesn't work automatically when starting the mod with the ALTROOT parameter, you have to edit CvAltroot.py that you can find in the main Rise of Mankind - A New Dawn folder. Open that file with a text editor and change the last line to reflect your ALTROOT folder (for example rootDir = "C:/Games/RAND Multiplayer" as in the example above). Read the text there to know how this file works, and make sure you use / instead of \ in the folder path. Once you have edited this file, copy it in the python folder. This will make the mod work perfectly with this method.
This method is developed for MP use, but it doesn't affect single player games.
 
Last edited:
Another hint: when you start a session, make sure you reconnect your network drive. You will need to insert username and password of your OneDrive account, you only need to access it once from every computer joining that game session. If you don't do it, the savegame can't be loaded on every pc. Or better, it will be loaded but even slower than it usually does, because the game should fall back to default transfer mode.
 
This method still works but some changes have been made in OneDrive which require a different solution. All players need a free OneDrive account. Steps 1-4 are the same.
The owner of the OneDrive account will share a savegame folder created there. I suggest creating a RANDSaves\Saves\multi subfolder structure on OneDrive. This is where all the savegames for mp will be stored. Then you share this RANDSaves folder (and all subfolders) with the other players. You can send them a link or an invitation that they will receive in their OneDrive account; every receiving player must add that folder to their File Explorer (you can do this from your web account in OneDrive). So each player will have a folder on their computer which looks like C:\Users\[USERNAME]\OneDrive\RANDSaves\Saves\multi. Make sure in your OneDrive app settings that this folder is always in sync with the cloud folder. Step 12 is very similar but you don't need anymore a network drive as this is what OneDrive is already doing, so step 12 command will look like mklink /d "C:\Games\RANDSaves\Saves\multi" "C:\Users\[USERNAME]\OneDrive\RANDSaves\Saves\multi". All player will need to do this step on their pc. This way all player will have the same savegame folder, which is the one shared on OneDrive. This makes transferring of savegames when you load a game useless and the game loads instantly for all players. As for the ALTROOT command in the previous post, it's the same. Just as a suggestion to avoid OOS, make sure each player has the same altroot folder, something like C:\Games\RANDSaves (which becomes rootDir =C:/Games/RANDSaves in CvAltroot.py which should be then put in your RAND mod python subfolder; as usual make sure you use / instead of \ in the folder name in CvAltroot.py).
 
Top Bottom