Multiplayer: Hacking A Fix Around OOS Errors

I wonder if it makes any difference playing with Random Seed on Reload. I think it shouldn't because of "on reload" part, assuming that description is correct. I remember months ago having less OOS using New Random Seed on Reload, but it might have been only my impression.
 
45°38'N-13°47'E;13750207 said:
I wonder if it makes any difference playing with Random Seed on Reload. I think it shouldn't because of "on reload" part, assuming that description is correct. I remember months ago having less OOS using New Random Seed on Reload, but it might have been only my impression.

That game option is always disabled on MP, regardless of the setting.
 
as i dont know i ask :
how detailed log can be?
can it be set somehow to different levels?

to troubleshoot MP game i see good way to max debug "action to action" everything.
so each client (including pitboss\host) make log of each action in excatly that order as they happen and then we can compare them , in that way we will se if there some differences and what differences are.

how much of this possible?
 
The logging is highly dependant about the way it is implemented in the code. If we add a logging function in every function called in the code, we can log everything. However, too much log = slower game.
 
it can be "debug" version so OOS can be caught
 
Hello everyone!

Hoping this is the right thread, I want to add my small experience with OOS. Being a The Guild II veteran, I am actually quite resilient, but I am running against a pretty sturdy wall here. Think Game of Thrones northern wall sturdy.

I have been attempting to play 2 matches with a friend of mine, the mod version was 942 and today 947.

We abandoned the 942 match because every time a barbarian attacked one of my cities, the game went OOS. After an update to 947, we started a new match, without barbarians, without revolutions, random events, dynamic XP, battlefield promotions, and a third battle option the name of which I can't remember right now, after reading about it in this forum.

Gamespeed was Epic, we got to turn ~300 before the first battle. We have tried using different units, attacking earlier/later, different locations, etc, but every single time one of us gets attacked or attacks, instant OOS, even before the combat animation ends.

I would greatly appreciate any tips on why this game is set on aggravating my patience :D
 
Hello everyone!

Hoping this is the right thread, I want to add my small experience with OOS. Being a The Guild II veteran, I am actually quite resilient, but I am running against a pretty sturdy wall here. Think Game of Thrones northern wall sturdy.

I have been attempting to play 2 matches with a friend of mine, the mod version was 942 and today 947.

We abandoned the 942 match because every time a barbarian attacked one of my cities, the game went OOS. After an update to 947, we started a new match, without barbarians, without revolutions, random events, dynamic XP, battlefield promotions, and a third battle option the name of which I can't remember right now, after reading about it in this forum.

Gamespeed was Epic, we got to turn ~300 before the first battle. We have tried using different units, attacking earlier/later, different locations, etc, but every single time one of us gets attacked or attacks, instant OOS, even before the combat animation ends.

I would greatly appreciate any tips on why this game is set on aggravating my patience :D
MP is currently being worked on but needs improvements. There are some options which are better to turn off to avoid OOS. Some months ago I've played up to modern era, there's a thread with suggested options.

@masaykh, I think that's what Afforess was suggesting more or less, but it needs quite some coding (-> time).
 
as i dont know i ask :
how detailed log can be?
can it be set somehow to different levels?

to troubleshoot MP game i see good way to max debug "action to action" everything.
so each client (including pitboss\host) make log of each action in excatly that order as they happen and then we can compare them , in that way we will se if there some differences and what differences are.

how much of this possible?

If it was as easy as "turning up the logging", we would have done it. The fact is, BTS comes with almost no logging for MP at all. Anything we need, we have to write the code ourselves.
 
If i know correctly there is no pdb for civ exe's so they can't be run through debugger with step-by-step function breakpoints?? Only disassembler (like ollydbg) can give us insight in what exe doing?
 
@masaykh: We don't have the source code of the executable. The only code is the one from the DLL which call some hardcoded functions of the executable. Through a debugger, it is only possible to set breakpoints to the DLL code (which is already quite complete).
That said, I don't know about the infos that a dissassembler can bring us.
 
If i know correctly there is no pdb for civ exe's so they can't be run through debugger with step-by-step function breakpoints?? Only disassembler (like ollydbg) can give us insight in what exe doing?

You are correct.
 
are there any updates to this? Still waiting to start this game in multiplayer :)
 
are there any updates to this? Still waiting to start this game in multiplayer :)
No progress right now, as we're working on single player issues which have higher priority.
 
@Afforess: I'm thinking about trying to get on this problem for some times but haven't dedicaced time yet. Recently, I read your posts again carefully and it seems more clear than the first time I read them. Three ideas came to me:
  • Would it be possible to extend the OOSLogger to write EVERY internal variables (the cached ones) when it occurs? Even if it takes like 10sec to generate this, it would be extremely useful to diagnose problems. I guess this is long to code but would avoid the need to use debug dll.
  • About Pitboss, I don't think we can make it to start headless or automatically. However, I've setup 2 virtual machines and tried to connect these to generate OOS. It is "succesfully" working ;) For this exact purpose, we should enable AIAutoplay in multiplayer (or at least make it possible to enable it in defines) so my VM can play together automatically until it desync :D On a side note, it would be nice to make Autoplay to automatically answer about Revolutions popups when they occurs.
  • About RNG, can you explain me how it is generated? I understand that if a internal number is generated and shared through connected machines, they would use it to reproduce the same exact result to functions (like getting the same number on GetSorenRandomNumber() -I can't remember the exact name-) and when a desync occurs, the number is different. What happens when a player decide to move a unit for example? Does the engine send a "code" on every players or does it occurs at a defined frequency?
 
RNGs are normally generated algorithmically on computers (called pseudo random). They start with a "seed value." This seed - if everyone uses the same algorithm - will generate the same sequence of output values. e.g., if our RNG were for a six-sided dice, and the seed was 16181832919239 (purely imaginary), then we might get the sequence: 1, 6, 3, 3, 2, 3, 5... and every computer - if they use the same starting seed, would also generate that same sequence. So as long as every computer involved "uses" the same number of "dice rolls" then everyone can compute the results of each action even if they depend on "random" numbers.

Does that help you?

Here's a lot more info: https://en.wikipedia.org/wiki/Random_number_generation
 
are there any news on this?
Unfortunately no, there's no news. And since Afforess is the the only one who can work on this idea, I fear the project is dead.
 
Top Bottom