a_civilian
Warlord
- Joined
- Jun 7, 2007
- Messages
- 161
Edit: If you're playing multiplayer with a lot of AI's, please try the small modification Sephi posted below and let us know if you still encounter any OOS. It doesn't change any behavior; it just adds a small error handling check.
Original post:
I've logged 7 OOS (out of sync) instances from 4 different multiplayer games (each with 3 players and 9 AI, running 0.41m) and each error was essentially the same: a particular AI civilization decided to build one item in one player's game and a different item in the other player's game.
(One remark is that in some cases the "Soren rand value" also differed, which resulted in different unit actions, but there was always exactly one build mismatch. This indicates that the random number mismatch was almost certainly a result of the build mismatch.)
I posted this result a few weeks ago in another thread. However, just recently I decided to reanalyze my results. In particular, I looked up the offending civilization.
Here is my list.
- (Game A) Elohim: warrior versus library
- (Game A) Sidar: work boat versus longbowman (rand mismatch)
- (Game A) Sidar: temple of Kilmorph and hunting lodge versus granary (and gold)
- (Game B) Ljosalfar: warrior versus archery range
- (Game C) Elohim: pagan temple versus library
- (Game D) Ljosalfar: warrior versus archery range
- (Game D) Elohim: monument and training yard versus pagan temple (rand mismatch)
Very suspicious. Only three civilizations out of the nineteen possible, each multiple times, and most across multiple games.
Those civilizations were not particularly overrepresented over these four games either. Here is the distribution of AI civilizations across those four games: Khazad 4, Elohim 4, Luchuirp 3, Amurites 3, Ljosalfar 3, Doviello 3, Svartalfar 2, Kuriotates 2, Lanun 2, Sheaim 1, Clan 1, Illians 1, Grigori 1, Calabim 1, Bannor 1, Malakim 1, Hippus 1, Sidar 1, Balseraphs 0. This means the Elohim, Ljosalfar, and Sidar occurred only about 40% more often than the mean (8/36 compared to 3/19).
(For the record, it also happened that the leaders in each OOS instance were Einion Logos and Thessa, but this could have easily been coincidence as those leaders were vastly overrepresented in my sample.)
My conclusion is that it is very likely that some civilization-specific code, or at least code that is strongly favored by certain civilizations, is causing these errors. I spent some time looking through the code to see if I could find anything suspicious, but not having any prior knowledge of how the AI (or anything else in Civilization) is written, I didn't have much luck. Perhaps someone more familiar with the AI code might be more fortunate.
A larger sample size would be nice, but unfortunately my group hasn't had much opportunity to play. If anyone else wishes to contribute, the instructions for producing OOS logs are in this spoiler.
Original post:
I've logged 7 OOS (out of sync) instances from 4 different multiplayer games (each with 3 players and 9 AI, running 0.41m) and each error was essentially the same: a particular AI civilization decided to build one item in one player's game and a different item in the other player's game.
(One remark is that in some cases the "Soren rand value" also differed, which resulted in different unit actions, but there was always exactly one build mismatch. This indicates that the random number mismatch was almost certainly a result of the build mismatch.)
I posted this result a few weeks ago in another thread. However, just recently I decided to reanalyze my results. In particular, I looked up the offending civilization.
Here is my list.
- (Game A) Elohim: warrior versus library
- (Game A) Sidar: work boat versus longbowman (rand mismatch)
- (Game A) Sidar: temple of Kilmorph and hunting lodge versus granary (and gold)
- (Game B) Ljosalfar: warrior versus archery range
- (Game C) Elohim: pagan temple versus library
- (Game D) Ljosalfar: warrior versus archery range
- (Game D) Elohim: monument and training yard versus pagan temple (rand mismatch)
Very suspicious. Only three civilizations out of the nineteen possible, each multiple times, and most across multiple games.
Those civilizations were not particularly overrepresented over these four games either. Here is the distribution of AI civilizations across those four games: Khazad 4, Elohim 4, Luchuirp 3, Amurites 3, Ljosalfar 3, Doviello 3, Svartalfar 2, Kuriotates 2, Lanun 2, Sheaim 1, Clan 1, Illians 1, Grigori 1, Calabim 1, Bannor 1, Malakim 1, Hippus 1, Sidar 1, Balseraphs 0. This means the Elohim, Ljosalfar, and Sidar occurred only about 40% more often than the mean (8/36 compared to 3/19).
(For the record, it also happened that the leaders in each OOS instance were Einion Logos and Thessa, but this could have easily been coincidence as those leaders were vastly overrepresented in my sample.)
My conclusion is that it is very likely that some civilization-specific code, or at least code that is strongly favored by certain civilizations, is causing these errors. I spent some time looking through the code to see if I could find anything suspicious, but not having any prior knowledge of how the AI (or anything else in Civilization) is written, I didn't have much luck. Perhaps someone more familiar with the AI code might be more fortunate.
A larger sample size would be nice, but unfortunately my group hasn't had much opportunity to play. If anyone else wishes to contribute, the instructions for producing OOS logs are in this spoiler.
Spoiler :
The first time an OOS error occurs during an instance of the FFH program, it writes much of the game state in human-readable format to OOSLog.txt in the BTS folder. You can then compare different players' logs to figure out what went wrong.
Note that FFH must have permission to write to the BTS folder, so depending on your OS security settings you may have to run it as administrator. Also, the log is only created the first time you encounter an OOS until you close and restart FFH, so make sure to restart the game after each OOS. Finally, logs are not timestamped or numbered, so they will overwrite each other if you don't move or rename them.
Note that FFH must have permission to write to the BTS folder, so depending on your OS security settings you may have to run it as administrator. Also, the log is only created the first time you encounter an OOS until you close and restart FFH, so make sure to restart the game after each OOS. Finally, logs are not timestamped or numbered, so they will overwrite each other if you don't move or rename them.