Okay... First of all everything I will say is ONLY based on what I read in the forums. And the things I am based on in this post are:
1. Demigod is written in Lua (programming language).
2. Random Demigod option always randoms the same Demigod for everyone (Regulus I guess).
Please take your time to read everything.
So I know what might have been the problem and I will describe it here:
Here's how random works in most programming languages (and Lua):
There is a thing called Random Seed which is a number on which the Random function is based on. If this number is always the same then the random will follow a certain predictable path. An example of what I mean:
You start your program. You random 10 numbers and they are 1-5-6-7-4.... You close the program and start it again and random 10 numbers. And they will actually be the same! 1-5-6-7-4...
To fix this problem in programming languages the Random Seed number must be constantly changed to some number that changes very often. For example - the current time in seconds.
In programming languages like pascal you don't have to know what time is it or how to find it. There is a function Randomize that changes the Random Seed for you (constantly) which makes the random trully random.
However in Lua you have to do it more "manualy". You have to use the function:
math.randomseed(os.clock())
os.clock() - is the number on which the random will be based. It's not really seconds, but it's something related to time and something that constantly changes.
So to always get trully random you will have to use a function like this:
Every second do: math.randomseed(os.clock())
So it seems like we will get a trully random random. Just what we wanted, right? Wel... This is only partially correct.
You see... In Lua the first number that you random after using the math.randomseed(os.clock()) function will always be the same.
What do I mean? Here's an example:
Every second do:
math.randomseed(os.clock())
x = math.random(8)
So it seems that X will always be a random number between 1 and 8. But, no. X will ALWAYS! EVERY SECOND be the same number. For example 1 or maybe 4. Like on the first second it's 4, on the 2nd second it's 4, on the third it's 4 and so on.
How to fix this problem? Simply random 1 number after using the math.randomseed() function. Like this:
Every second do:
math.randomseed(os.clock())
math.random(8)
The second number you random with math.random will be REALLY random. You will never guess what it is. Just what we need.
So now... Why have I been explaining all of this to you? Because this is what may have happened:
GPG forgot to random 1 number after using the math.randomseed function.
So in a p2p system everyone is the host, right? So everyone randoms 1 number for themselves which, since it's the first number randomed after math.randomseed, turns out to be the same number for everyone! Which then turns into everyone having the same demigod (Regulus?)!
So you'll ask: How could they have missed this? They have tested it before releasing for sure!
Well, since it's hard to test it online (you have to release a special patch just for a closed group of people which is kind of problematic) they tested it in singleplayer with bots.
These are the results they might have got:
In a 5v5 match against 9 AI's you are the only host. So you random the same demigod every match, as beeing the first player to get the random, while the other players (AI's) will get different demiods every match since their random will be a true random.
So they are testing this like:
Game 1:
They got Regulus. All other demigods (the AI's) got some random demigods.
Game 2:
They got Regulus. All other demigods (the AI's) got some other random demigods, different from game 1.
What GPG are thinking at this point:
"Well... Technically it IS possible that we can get the same hero twise in arow. It is random, isn't it? The other demigods were random, weren't they? That means that the random is working!"
Game 3:
They got Regulus. All other demigods (AI's) got some other random demigods, different from games 1 and 2.
What GPG are thinking at this point:
"Lol. Regulus again. That's random luck. Getting the same demigod 3 times in a row is VERY RARE but POSSIBLE! Other demigods are random so it's working. Ok guys, take 5. Let's put this patch up for DL."
But what they didn't know was that they didn't get Regulus randomly. And if games 4-10 were tested they would always get Regulus.
So how fast can this be fixed? Well I don't know. How fast does it take you to press ENTER and type math.random(8)? Took me about 3 seconds. But then you have to prepare the new patch for download which can take a lot more time.
If I could decompile the game and look into the code like Bman did, I would've checked if THIS is the problem causing "not random" random. But I can't.
Hope they fix it soon and I even more I hope that I helped.
Discuss if you want to ^^ This may pretty much have been the problem.
If you didn't understand the whole randomseed stuff then take your time to read it again, more careful.