Frage zu MMORPG und Zufallszahlen
-
hi
nur so als theorie
ein zufallszahlengenerator generiert seine zahlen ja meist mit hilfe der windows-systemzeit, wenn man nun irgendwie die zeit an einem punkt anhält würde man dadurch doch immer die selbe das erhalten.
-> im fall eines MMORPGs, es droppt immer das selbe itemmfg oggs
-
du hast wohl nur wenig ahnung von zufallszahlen, das kann so nicht passieren.
Die Zeit wird nur einmal als seed verwendet. dieser seed wird dann in random() nur auf irgendeine weise transformiert. das ergebnis wird der neue seed(und der rückgabewert von random).
das bedeuted, wenn für mehrere items random aufgerufen wird, erhält jedes seine eigene zufallszahl, weil random 3x aufgerufen wird.
Beispiel für nen ganz einfachen "zufallszahlen" generator ist:
int seed; void srand(int s) { seed=s; } //wirft mathematisch sicher keine tollen zufallszahlen aus, die irgendwelche eigenschaften erfüllen, aber soll ja nur das prinzip verdeutlichen. int rand() { seed*=2; seed+=1; seed&=0xABCDEF; return seed; }
-
Normalerweise erzeugt der Server die Zufallszahlen für die Items und nicht der Client. Von daher hast du dieses Problem nicht und wenn der Admin des Servers meint das zu tun, dann ist das sein gutes recht (er ist ja schließlich der Admin).
Du solltest einen guten Zufallsgenerator nehmen, z.B. den Mersenne-Twister, und für jedes Modul das Zufallszahlen benötigt einen eigenen Generator benutzen, so dass das zufällige Abspielen von Sounds keine Auswirkungen auf die Verteilung der Zahlen für die Items hat (sollte bei einem MMORPG aber nicht der Fall sein, da die Sounds ja Clientseitig ablaufen und die Items aufm Server ausgewürfelt werden).
-
meines wissens nach werden die items nicht zufällig gezogen sondern über einen vorgang... z.b. trefferfolge wie bei lotto
dein besagtes item hat eine reihe von zahlen (jedesmal neue) und du "ziehst" immer wieder eine reihe an zahlen.
du kannst die zahl weder notieren noch bestimmen (vom client bzw. das aufschreiben bringt nichts)
-
die items etc. werden üblicherweise nicht erzeugt, sobald sie für einen spieler verfügbar gemacht werden müssen, sondern schon bevor ein mob spawnt. und um problemen mit zahlengeneratoren aus dem weg zu gehen, würd ich wahrscheinlich vorberechnete sequences o.ä. verwenden. d.h. selbst wenn alle zufallszahlengeneratoren plötzlich müll produzieren, stehen in meiner sequence noch mindestens ne halbe mio drin.