The whole GNU cheats thing.....
Afternoon everyone.
My first post, so be gentle. 😀
A little about my background so you can understand where I am coming from......well, back in the 1980s I owned a ZX Sinclair Spectrum (I'm in the UK so our American cousins may not know what I mean) and bought a backgammon program made by an outfit named Psion. £14.95 for a cassette, a princely sum in those days........around 4 hours work at average pay, so not cheap.
Having played it a few times, it was fairly clear the program was cheating so I very quickly disassembled the code and ascertained this to be the case.
It was very crude, simply roll the computer double after double if the gamestate flag was less than zero.
Fast forward to the 1990s.......I bought a backgammon program from a one-man company in Scotland (can't remember their name).
I demonstrated that was cheating too by replicating the seeding but the owner insisted that the different behaviour displayed by his bot on identical dice rolls was due to statistically similar positions requiring the advancement of the random number generator by one so throwing the whole thing out of synch.
Er, yeah right Hamish, you keep supping at the Scotch my wee friend.
So here we are in 2012.
GNU, no less.
I've whooped the a$$ off of about just about every backgammon computer program out there and yet GNU tans my hide repeatedly.
The cheating seems to be a little more sophisticated......roll the user a lot of 2, 1's rather than making it obvious by rolling the bot double after double.
(A little like Spades card programs, keep dealing the user the Ace of Spades and he/she can't bid nil which is the most powerful bid)
Hey ho, programmers get craftier, c'est la vie.
To cut a long story short (too late!)........I create a file called dice.csv in Excel using a simple +INT(RAND()*6)+1 formula that populates 999,999 cells.
I tell GNU I want to read the dice from a file, point GNU at that file and away we go and in an 11 point game I get beaten 11-3.
Hmmm, I've told GNU in advance what every roll will be, surely it isn't reading the whole file and playing according to what it knows is going to be rolled next?
Tell you what, let's change settings to manual dice and play the exact same rolls.
I won 11-5, GNU played differently even though I made sure I played identically as before.
A genuine question......what's going on?
Did I do something wrong?
1 Reply
Ok, here's your challenge.
Take the "freely available" source code.
That bit's easy, yes? Doesn't it look innocuous when you wade through the dice rolling bit?
Now try to recompile it back to the .exe file size. And hashsum.
That's the challenge.
Hint: you will *not* be able to.
No trolling, just calling it as it is.
Just following upon this because no-one has taken me up on it.
Anyone going to call me out?
Please do, I have a very big bag of popcorn here and lots of free time on my hands 😀