|
|
|
 |

February 25th, 2004, 07:33 PM
|
 |
Brigadier General
|
|
Join Date: Aug 2003
Location: Mictlan
Posts: 1,767
Thanks: 12
Thanked 165 Times in 22 Posts
|
|
Re: 2.08 and Incompatible Battle Reports
Some good new for those who don't play Dominions on Windows exclusively. The problem with incompatible battle replays has been found. There was a disagrement on how to compile an expression between microsoft's and the others' compilers.
Magic resistance check:
if (penetration+2d6 < MR+2d6)
Other compiler solved it from left to right, but microsoft's solved it from right to left. This results in the same roll of dice appearing on different sides of the '<' for windows and linux.
Bloody annoying!
Alexti: Thanks for the STL info and I use MSVC6.
[ February 25, 2004, 17:35: Message edited by: Johan K ]
|

February 25th, 2004, 07:45 PM
|
 |
Major General
|
|
Join Date: Oct 2003
Location: Crystal Tokyo
Posts: 2,453
Thanks: 0
Thanked 0 Times in 0 Posts
|
|
Re: 2.08 and Incompatible Battle Reports
Yay! Not only was the problem solved, but also, Microsoft gets another black mark 
|

February 25th, 2004, 07:47 PM
|
 |
First Lieutenant
|
|
Join Date: Sep 2003
Location: Bordeaux, France
Posts: 794
Thanks: 0
Thanked 0 Times in 0 Posts
|
|
Re: 2.08 and Incompatible Battle Reports
Quote:
Originally posted by Johan K:
Some good new for those who don't play Dominions on Windows exclusively. The problem with incompatible battle replays has been found. There was a disagrement on how to compile an expression between microsoft's and the others' compilers.
Magic resistance check:
if (penetration+2d6 < MR+2d6)
Other compiler solved it from left to right, but microsoft's solved it from right to left. This results in the same roll of dice appearing on different sides of the '<' for windows and linux.
Bloody annoying!
Alexti: Thanks for the STL info and I use MSVC6.
|
Hmm... it's been some time since I had a look at books where the norm is described, but I'm not sure it says anything for this. I believe the result is "unspecified"...
Don't use two function calls in the same expression, is the lesson.
(And congrats on the Illwinter crew! When are we getting a patch so we can celebrate?) 
|

February 25th, 2004, 07:49 PM
|
 |
Sergeant
|
|
Join Date: Jan 2004
Location: Oregon, USA
Posts: 332
Thanks: 0
Thanked 0 Times in 0 Posts
|
|
Re: 2.08 and Incompatible Battle Reports
__________________
I agree with the realistic Irishman who said he preferred to prophesy *after* the event.
-- G.K. Chesterton
|

February 25th, 2004, 07:54 PM
|
 |
Major General
|
|
Join Date: Oct 2003
Location: Crystal Tokyo
Posts: 2,453
Thanks: 0
Thanked 0 Times in 0 Posts
|
|
Re: 2.08 and Incompatible Battle Reports
Quote:
Originally posted by PhilD:
Don't use two function calls in the same expression, is the lesson.
|
Compliers do strange things. A poorly-written compiler could rearrange consecutive lines if there is no obvious dependancy.
1: a=2d6+penetration
2: b=2d6+mrst
3: if(a>b){do c}
Lines 1 & 2 could be rearranged by a compiler if, for example, mrst is more local (already in a register) and penetration has to be fetched. That would have the same effect. I think C has some commands that let you force the complier to not rearrange things, though.
So the moral is actually not to trust Microsoft products, since they take away your control 
|

February 25th, 2004, 08:26 PM
|
 |
Major General
|
|
Join Date: Aug 2000
Location: Mountain View, CA
Posts: 2,162
Thanks: 2
Thanked 4 Times in 4 Posts
|
|
Re: 2.08 and Incompatible Battle Reports
There may be #pragmas or compiler options to change reordering behavior, but I'm not too familiar with MSVC.
Wrapping the randomizer in an object and making sure that the "get a random number" method (perhaps as a static method, even) might serve as a hint to the compiler; could be more work than it's worth.
[edit] Making sure that it's not flagged as constant, that is. IOW to encourage the compiler to consider side-effects of function invocation.
[ February 25, 2004, 18:51: Message edited by: Taqwus ]
__________________
Are we insane yet? Are we insane yet? Aiiieeeeee...
|

February 25th, 2004, 08:46 PM
|
Lieutenant Colonel
|
|
Join Date: Apr 2003
Location: Nuts-Land, counting them.
Posts: 1,329
Thanks: 1
Thanked 0 Times in 0 Posts
|
|
Re: 2.08 and Incompatible Battle Reports
I have often battle inconstancies message now, with solo play on windows platform.
__________________
Currently playing: Dominions III, Civilization IV, Ageod American Civil War.
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is On
|
|
|
|
|