 |
|  |
 |
|  |
 |
|
Arnelos
|
 |
of the Free World
Sep 2002 time: 00:34
|
|
If we're going to post all of his PMs in PUBLIC on the U.N. forum, we're going to need his clearance for that... since he already agreed that I could pass them to any of you guys however I wanted, that shouldn't be hard. I'll ask him about that in the next PM.
I will say this, however... 2 things:
1. He was rather insistent that we include each of his PMs in their entirety rather than selectively picking out pieces. That's going to make for a monster thread if I have to post each of them IN WHOLE (which I'd like to respect... gives him less to complain about).
2. I think we're actually best off and we maintain the air of trying to honestly discern what he did (which is really what I have/am doing) rather than trying to lynch him in public (which I don't quite agree with) if we simply post the evidence and let people come to their own conclusions. We post all of the pertinent PMs by Lucky and we post statements by wervdon and others who have critiqued them. I'm reasonably sure that others may come to similar conclusions as many here have done.
When and if they post such conclusions, Lucky will feel a need to defend himself and will likely continue talking about the issue. He may at that point provide a great deal EVEN MORE things that can be poured over to determine the validity of his claims.
The next point, however is critically important.
Part of this exercise IS, afterall, giving Lucky a chance to defend himself from these charges. If his defense is clearly inadequate (as seems to be the case), then we handle things from there. Lucky, despite whatever you may think of him, does at least deserve that opportunity and deserves that we should look at the evidence with as much of a skeptical and also reasonable eye as we can.
If we do indeed handle this responsibly and make it very clear that we are not out to LYNCH Lucky, but rather to FAIRLY point out what we believe he may or may not have done AND LEAVE LUCKY TO EXPLAIN HIS WAY OUT OF IT (rather than us just trying to drown him out), far more people will believe the weight of what we have exposed. I refuse to take part in lynching-style justice, even if the culprit is deserving. Afterall, anyone who has such a serious charge leveled against them deserves the chance of a fair hearing to defend themselves from the charge.
Besides... Lucky's attempt to defend himself, assuming he is actually guilty, may be far more damning than ANYTHING we could ever say. Remember that.
|
|
|  |
 |
|
asleepathewheel
|
|
listening too long to one song
Mar 2002 time: 00:34
|
|
IMHO, this needs to reach a resolution before the C3C ISDG begins. Luckily for us its taking forever to start. But his true nature needs to be revealed and either he or his team be banned from participating.
|
|
|  |
 |
|  |
 |
|
Arnelos
|
 |
of the Free World
Sep 2002 time: 00:34
|
|
From Lucky, section 1. Please note for the upcoming posts that in some places I slightly altered wervdon's posts for the sake of Lucky's disposition. 
quote: Originally posted by Lucky
quote: Originally posted by wervdon
Personal opinion as someone with a BS in Comp Sci and a programmer myself whose put some (read considerable) amount of time with his own game related projects:
This is a mixture of BS and truth. Its probable that he is telling the truth about using a program that monitors memory changes to observe the change in values at each call of the random # generator that he describes, and it in fact would work very much like he describes.
The fact is someone with a basic knowledge of C programming and a little luck guessing at the actual method used by Firaxis to transform a random 1 to RAND_MAX value to a 1 to whatever value (hint: its very often a modulos operation) could very easily take that initial value and the published working of the combat system and make a quick program in C that predicts the result of the next battle with it only necessary to type in the value read from memory, the attack value of the attacker, the defense value of the defender, and any fortification/terrain mods.
Do I think Lucky did this? I don't know, but I am sure that given what he has already described doing that it would be *possible* to do it.
In any case the rest of what he says is total BS in my opinion. Feel for the random results? give me a break. Its better to attack with horses than swords against mercs on plains? He expects people to either believe: Firaxis took the time to code weird quirks that go against the known values in the combat system involving specific units and streaks......or that he's both supersistous and ......well lucky.
|
Well, I said it before, but I´ll do it again.
1. To my knowledge there is not a single RNG at work for combat calculation. I´m almost entirely sure that things like retreat and upgrading (gaining a level) need to be additionally triggered by another RNG function. The same may hold true for the actual battle as well.
2. The following RN is independent on the last RN. So no, you cannot predict the next random number by knowing the current one. So such a program as described below won´t work.
Possibly if you know ALL RNG function, however as said before, I don´t.
3. Concerning the Num Merc example. Well, you can test it yourself. Create a scenario with 1 horseman and 1 swordmen on one side and 1 Numidian Mercenary on plains on the other side. Preserve Random seed needs to be on naturally.
Load it, attack with the swordsman, note the exact results (e.g. won with 1 HP left and gained a level), reload the scenario, attack with a horsemen and witness the very same outcome. I have such a scenario if you want.
This is only true for a single battle of course, meaning whenever you have the choice to attack with a horseman or a swordmen against a Merc on plains, the outcome will be the same, except that the horsemen might retreat.
4. Well, about the experience, not sure but if you ask the people that did one of those 1000 attacks scenarios, I´m pretty sure they will tell that they often have the correct inclination about what will happen next after seeing a few battle results in a turn.
If you think that´s bullshit, not my problem. Maybe it´s just my imagination, but I´m perfectly sure that I can better predict and "read" civ battles after I did the majority of those tests.
|
|
|
|  |
 |
|
Arnelos
|
 |
of the Free World
Sep 2002 time: 00:34
|
|
From Lucky, Section #2.
quote: Originally posted by Lucky
quote: Originally posted by wervdon
Take it one step further:
Assume that the value he is seeing changes from 1 to 20 mil + is the random seed (ie the last random value generated by the rand() function), and I'm almost sure it is. Then assume he (or someone on their team or that he knows) is at least as familiar with C as I am.
All he'd need to do is this (literally):
#include
#include
int main(void)
{
long value;
int cnt;
printf("Enter seed value: ");
scanf("%d", &value);
srand(value);
printf("Next 100 results: \n");
for (cnt = 0; cnt < 100; cnt++)
{
printf("%ld\n", rand());
}
return 0;
}
Piece of cake, and I'm almost sure it'd work if what he is seeing is the last random value generated.
Edit: Just to be clear, its that easy to get the next set of results from the rand() function. It's a bit trickier to figure out how those 1 to RAND_MAX values are going to be used to generate a winner in a unit battle. But if you're motivated and determined, it shouldn't be too hard to play around with various algorithms until you can reliably predict results with a fairly simple program.
|
No, as said above this is not possible. The RNG is a little more complicated than just using the number generated by a rand fuction.
According to what I saw, the current number has no influence on the next number to come, meaning that e.g. after 100000 it will generate another random number each time.
I would have to take a look at that again though to make a definite statement.
But as already said as well, even when knowing the RN, you cannot predict the outcome of a battle. Meaning you note the RN one time, look at the results and then input it again before an exactly similar battle, it won´t generate the same results.
|
|
|
|  |
 |
|
Arnelos
|
 |
of the Free World
Sep 2002 time: 00:34
|
|
From Lucky, Section #3.
quote: Originally posted by Lucky
quote: Originally posted by wervdon
Few points:
1) He (Lucky) said in one of the PM's that he has not looked that Random Seed in the ISDG but that we'd have to take his word for it.
2) He (Lucky) said he's not hacking the save to get the seed, instead he's using a program that monitors the memory space allocated to a running program and that looks for changing values. In effect he's hacking the running exe to get his data.
3) The thought that you can't get any future results out of the starting seed value (beyond the next combat round) is BS. Anyone who knows enough to extract a random seed in the manner he's describing should know that. I've already pointed out pretty well above how easy it would be to go from 1 random result to as many as you want just by writing a 10-15 line C program.
Also anyone who thinks that the seed stored by rand() and srand() wouldn't be in civ3's allocated memory (it is a call to a library function), should keep in mind that preserve random seed likely stores a copy of the value in a global variable somewhere in the program itself for the purpose of saving it somewhere in the save file. Which also means if you know the last value generated, it would be pretty trivial to find it in the save and then hex edit it to a value that got you good results (say great leaders) in the past. Of course, Mongoose couldn't then reproduce your results, unless of course he used a hex-edited save that you sent him yourself. So this can probably be ruled out, at least.
|
#1. Yes, unless you have a way to proove it! 
However, would I really be telling you all this if that would "greaten the mess" or whatever for me? I think not.
And again, knowing the actual RN gives you no further knowledge about anything.
#2. Yes, that´s what I did when conducting my tests. Last time during the C3C BETA, however I might be forced to do it again to verify some results now. 
#3. And I pointed out that your statement is BS (using your words). To my knowledge this is simply not possible by just knowning the current RN.
And no I haven´t bothered writing any program as you described, but thanks for the idea.
#4. And I have also not bothered looking for the values in the save. I think I read somewhere (CFC IIRC) that in the uncompressed save several of those that picked it apart noted a value or multiple values they consider the RN. Haven´t followed that though.
|
|
|
|  |
 |
|
Arnelos
|
 |
of the Free World
Sep 2002 time: 00:34
|
|
From Lucky, Section #4.
quote: Originally posted by Lucky
quote: Originally posted by wervdon
The only way I could be sure of how Firaxis coded the game is to reverse engineer the executable or ask them. I've done neither, nor am I interested in doing the former.
What I can say is that I would be surprised if they (firaxis) went through the trouble of implimenting their own random # generator when one is available as part of the ansi standard.
Also you couldn't just look at the # and say this value means a horse wins! What you would need to be able to do is figure out how firaxis took the results of a rand() call and transformed it into a dice roll. Generally speaking this is done via a modolus (sp?) operator, but there's other methods as well. If one was determined though, I don't think that much extra effort would really be required.
Besides, if you're actually modifying the seed and not using it to predict, then you don't even need to do more than just record "good" seeds from trial runs that result in 20 victories in a row or great leaders (you'd gain this knowledge over time) and then before you start hex edit the save to start on that seed. If you did that though, Mongoose would have trouble reproducing your results if he had a "clean" save from before you got a hold of it.
|
It´s definitely not a single rand function they implemented.
Hmm, just what I was saying, you are contradicting yourself. I´ve stated again and again the the current RN means nothing.
Since I cannot disassemble the game code I cannot find out how Firaxis is using the RN to generate battle results.
Also I was always satisfied by finding certain similarities and general assessments that showed how certain aspects of battling worked and thus improved my experience about that.
As I said myself, any form of manipulating or editing anything would immediatly conflict with any results mongoose would get.
|
|
|
|  |
 |
|
Dominae
|
|
Put another way, if Horseman versus Pikeman on Plains always gives the same result as Swordsman versus Pikeman independently of the current random number, then what accounts for the statistical significance in BigFree's test?
I must be missing something here...
Perhaps the trials are not independent?
Dominae
|
|
|  |
 |
|
wervdon
|
|
Well, I honestly didn't realize you'd quote me word for word, but I guess I'm ok with it.
In any case, I don't have time to read all of his responses, and I've pretty much given all the technical information I can on the subject, so anything further I state would have to be mostly opinion.
So I hope no one takes it as bad form if I don't try to respond to his responses to the quotes you showed him.
|
|
|  |
 |
|  |
All times are GMT. The time now is 05:34. Apolyton Time is 00:34. |
top of page
|
|
|
Forum 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
vB code is ON
Smilies are ON
[IMG] code is ON
|
|
|
|
|
|