math.random() bleibt gleich
Willkommen in der Transport Fever Community
Wir begrüßen euch in der Fan-Community zu den Spielen Transport Fever und Train Fever, den Wirtschaftssimulatoren von Urban Games. Die Community steht euch kostenlos zur Verfügung damit ihr euch über das Spiel austauschen und informieren könnt. Wir pflegen hier einen freundlichen und sachlichen Umgang untereinander und unser Team steht euch in allen Fragen gerne beiseite.
Die Registrierung und Nutzung ist selbstverständlich kostenlos.
Wir wünschen euch viel Spaß und hoffen auf rege Beteiligung.
Das Team der Transport-Fever Community
-
-
Try putting
math.randomseed(os.time())
at the top of mod.lua
-
It hasn't something to do with the seed. Even with the same seed, the following samples should be different.
-
Sieht fast so aus, als ob du noch etwas im Spiel hast was ständig den Seed mit dem selben Wert initialisiert, aber mindestens jedesmal zwischen deinen Abfragen.
-
math.randomseed() mit dem gleichen Wert ergibt auch immer die gleichen Zufallszahlensequenz. Das gleiche Problem kann dir auch passieren, wenn du os.time() verwendest.
wenn du also
aufrufst, kriegst 10 mal die gleiche Zahl.
Da das für 1 Sekunde lang immer die gleiche Sequenz startet. Wird das also vor jedem Aufruf von math.random() gesetzt ... ergibt das auch jedes mal die gleiche Zufallszahl.
Ich verwende statt os.time() inzwischen immer die Zeit des Spiels aus der API, das gibt diese in Millisekunden zurück und hat entsprechend bei jedem Aufruf der Mod-Funktionen nen anderen Wert.
Oder man ruft das nur ein einziges mal auf:
Ergibt 10 unterschiedliche Zahlen.
MFG PMV
-
Da math.random in Konstruktionen zu sehr problematischen Ereignissen führen kann,
kann es sein das UG das Problem durch einen „statischen“ Wert ersetzt hat
Beispiel:
1. Konstruktionsbauplan mit math.random wird getriggert für die Vorschau.
2. Konstruktionsbauplan mit math.random wird getriggert für den Bau.
3. Ergebnis passt nicht mehr zusammen => Spieler unglücklich
Noch zur InfoThis function is an interface to the simple
pseudo-random generator functionrandprovided by Standard C.
(No guarantees can be given for its statistical properties.)-edit-
Man nutzt einen seed einmal, und holt sich dann mehrere Pseudo-Zufallszahlen aus dem Algorithmus.
-edit2-
Nur so ein Hinweis, da CommonAPI2 seine eigene LUA Runtime nutzt, kann es sein das die Nutzung meiner Konsole etwas andere Ergebnisse produzieren kann...
-
Nur so ein Hinweis, da CommonAPI2 seine eigene LUA Runtime nutzt, kann es sein das die Nutzung meiner Konsole etwas andere Ergebnisse produzieren kann...
Das Ergebnis war in allen Threads gleich
-
Debugger an srandom aus libc6 gehängt via breakpoint, es wird ständig aufgerufen mit 0 als seed Parameter.
Irgendwas in UGs Script und GUI Thread ruft math.randomseed aus lua ständig mit 0 auf:
Das Problem hierbei, es gibt keinen Stacktrace.
Versucht das mal via CommonAPI2 Console im CommonAPI2 Thread. Wenn ihr dort dann math.randomseed(123) aufruft, bekommt ihr main chunk ( also C code ruft einen string auf) als Ergebnis.
In UGs Console ausgeführt und dann:
>> math.randomseed(123)
stack traceback:
[string "require "serialize" print(toString(math.rando..."]:1: in main chunk
Wenn ihr dieses num UGs GUI Thread oder Script Thread macht, läuft eure stdout.txt über ohne stacktrace...
-> Ergebnis:
Irgendwas stellt den seed der libc via math.randomseed immer auf 0. Da beide Threads nicht im Hauptmenü laufen bzw. noch nicht erstellt sind, gibt es mit math.random dort auch noch keine Probleme...
-edit 2-
PS: Dafür wäre eigentlich ein Entwickler zuständig das zu klären und nicht ich als "Endnutzer" guertlms
-
Da lag ich mit meiner Vermutung gar nicht so daneben, außer das es das Spiel selber ist und kein Mod.
