Balancing eines Spieles auslesen

    • Neu

      Nicht wirklich merkwürdig. Dürfte daran liegen, das ich 'n bisschen was von Webprogrammierung verstehe, wirkliche Programmiersprachen aber, damit habe ich mich noch nie befasst.
      Auf welche Hürden ich treffe, und wie ich diese dann angehe, konnte ich vorher nur abschätzen. Das Vorkommen einer Random-Funktion war für mich durchaus eine Möglichkeit; und würde ich Schach nachbauen, so läge mir die Funktion und Ihr Aufbau auch deutlich mehr am Herzen, hätten mich womöglich gar abgehalten aufgrund mangelnder Akkuratesse des Nachbaus.
      Aber wie gesagt: Ich möchte für mich (nicht für dotierte Sammlungen) dieses Spiel mit meinen Mitteln möglichst gut nachgebaut bekommen und nicht die Programmierung des Betriebssystems erlernen auf dem das Spiel läuft; wäre das mein Ziel, so hätte mir das definitiv schon was sagen sollen bevor ich am jetzigen Punkt wäre. In meiner Situation aber denke ich, das es durchaus ok ist, das ich mich jetzt erst damit befasse wie ich RND nachgestellt bekomme.
    • Neu

      Ehrm... Du hast ne Funktion, die Dir pseudo-zufällige Werte im Intervall [0,1[ liefert. Also: Wert kann null sein, aber nie eins. Sowas sollte sich auch in Deiner Programmierumgebung finden lassen.

      Solange das Argument von RND positiv ist, null oder -TI ändert sich daran nix; ist es eine konstante negative Zahl, kommt allerdings immer dasselbe Ergebnis bei raus (und auch die nächsten Aufrufe liefern immer dieselbe Folge von Werten). Da TI der Systemzeit-Zähler ist (in 60stel-Sekunden) liefert RND(-TI) ebenfalls eine pseudo-zufällige Folge von Werten, sehr ähnlich RND(0).

      Ob es jetzt 'zufäliger' ist, nur einmal am Programmstart einen negativen Wert ioder Null zu verwenden und danach die gegebene Folge abzuklappern, oder ob das oft verwendete RND(-TI) 'zufälligere' Zufalszahlen liefert- das wist Du in den meisten Fällen nicht unterscheiden können.

      Wirklich wichtig würde die genaue Arbeitsweise der Funktion eh erst dann, wenn sie als Crypto-Werkzeug mißbraucht wird. Oder wenn die 'Pseodo'-Komponente sichtbar wird, weil z.B. 'zufällige' Grafiken auffällige Muster bekommen.
    • Neu

      So denke ich ebenfalls mc71. Darum bin ich auch nicht schreiend auf die Knie gefallen, als ich die Werte von ZeroZero gesehen habe, sondern hatte mir halt vorgenommen sie mit PHP zu ersetzen.
      "Hauptsache, es kommt eine Zahl mit 9 Nachkommastellen und einer 0 vor dem Komma dabei heraus."
    • Neu

      mc71 schrieb:

      Ob es jetzt 'zufäliger' ist, nur einmal am Programmstart einen negativen Wert ioder Null zu verwenden und danach die gegebene Folge abzuklappern, oder ob das oft verwendete RND(-TI) 'zufälligere' Zufalszahlen liefert- das wist Du in den meisten Fällen nicht unterscheiden können.
      Also wenn das stimmt dann taugt der PRNG überhaupt nichts. Negative Werte werden als seed verwendet, korrekt wäre also, einmal RND(-TI) aufzurufen (oder auch gar nicht, falls das C64 BASIC hier automatisch "seedet", hab mich nie genauer damit beschäftigt) und dann nur noch RND(0). Wenn man immer RND(-TI) aufruft wird nur dieselbe Funktion auf eine monoton steigende Folge angewandt -- ein PRNG, der keine besseren Zufallszahlen als das liefern kann, ist unbrauchbar.

      Zum Thema: Eine Funktion, die die Ausgabe eines brauchbaren PRNG in das Intervall [0,-1[ skaliert, "emuliert" die Zufallszahlen des C64 BASIC sinnvoll, also einfach so machen. Vorher natürlich seeden.
    • Neu

      schwubbe schrieb:

      Die Schriftart hat mich ein wenig gewurmt, immerhin will ich da ja schon am Original bleiben.
      Ich habe mich letzlich dafür entschieden im Spiel Worte und Zahlen durch Bildchen selbiger zu ersetzen.
      Wieso so kompliziert? Nimm doch z.B. style64.org/c64-truetype , die "Mono"-Varianten als .woff sollten tun. Edit: Ah, das Spiel benutzt gar nicht den Original-Zeichensatz. Hm. Vielleicht findet sich ja ein Konverter von C64-Char-Bitmap nach .woff im Netz, kann ja nicht so schwer sein(tm).
    • Neu

      Du hast allerdings dahingehend Recht, dass Du ein hinreichend ÄHNLICHES Spiel hinbekommen wirst, auch wenn Du sämtliche anderen Randparameter Deines RNG ignorierst, solange er nur Zahlen zw. 0 und < 1 generiert und Dir z. B. Periode und Tiefe egal sind. Er wird dann ähnlich aussehende Zufallszahlen liefern und damit ein ähnlich funktionierendes Spiel ermöglichen, und mehr wolltest Du ja scheinbar auch gar nicht.
      Life's good! :thumbup:
    • Neu

      zrs1 schrieb:

      Also wenn das stimmt dann taugt der PRNG überhaupt nichts.
      Die RND()-Funktion von CBM BASIC taugt nicht nur nichts, die ist völlig kaputt.

      Außer daß sie Zahlen zwischen 0 und echt kleiner 1 liefert, geseedet werden kann und augenscheinlich eine Gleichverteilung liefert, fällt sie durch so ziemlich jeden anderen PRNG-Test.

      Die meisten Seeds enden nach etwa 100000 Aufrufen in einem Zyklus mit nur noch etwa 58000 verschiedenen Zahlen. Es gibt aber auch Seed-Werte, für welche die Funktion nach dem "Aufwärmen" in einen kurzen Zyklus einläuft, der nur noch 723 verschiedene Zahlen liefert!

      Grundsätzlich ist der verwendete Generator vom linear-kongruenten Typ. Der Programmierer der die damals zwischenhatte, wollte aber wohl noch was "Würze" hineinbringen - nach der Multiplikation und Addition tauscht die Routine die vordere mit der hinteren Hälfte der Mantisse.

      Jeder, der sich mit dem Thema auch nur ein ganz kleines bischen beschäftigt hat, weiß, daß die hinteren Stellen eines derartigen Generators auch nicht annähernd zufällig sind, diese dann auch noch nach vorne zu bringen bricht den Generator.
    • Neu

      1570 schrieb:

      schwubbe schrieb:

      Die Schriftart hat mich ein wenig gewurmt, immerhin will ich da ja schon am Original bleiben.
      Ich habe mich letzlich dafür entschieden im Spiel Worte und Zahlen durch Bildchen selbiger zu ersetzen.
      Wieso so kompliziert? Nimm doch z.B. style64.org/c64-truetype , die "Mono"-Varianten als .woff sollten tun. Edit: Ah, das Spiel benutzt gar nicht den Original-Zeichensatz. Hm. Vielleicht findet sich ja ein Konverter von C64-Char-Bitmap nach .woff im Netz, kann ja nicht so schwer sein(tm).
      Ja, ähnlich dachte ich auch bevor ich mit dem Suchen nach der Schriftart begann, nur nicht ganz so optimistisch.
      Für einen Konverter müsste ich aber auch erstmal die Schriftart aus dem Spiel heraus holen. Ich bin ja schon froh, das M.J. mir den Basic-Code gegben hat.
      Von daher war es denke ich schon das einfachste anstelle von Schriftzeihen einfach Grafiken auszugeben. Und immerhin, der Unterschied ist - bislang - nur an 1-2 Stellen zu sehen wenn man danach sucht.
    • Neu

      schwubbe schrieb:

      Für einen Konverter müsste ich aber auch erstmal die Schriftart aus dem Spiel heraus holen.
      Najaaa, einfach das Originalspiel im Emulator starten, in den Monitor gehen, $DD00 und $D018 ansehen, dann den Zeichensatz aus dem entsprechenden Speicherbereich aus dem Monitor heraus abspeichern. Ist nicht wirklich schwer, aber dann noch Konvertieren etc. ist vielleicht eher eine Aufgabe für später. ;)
    • Neu

      1570 schrieb:

      schwubbe schrieb:

      Für einen Konverter müsste ich aber auch erstmal die Schriftart aus dem Spiel heraus holen.
      Najaaa, einfach das Originalspiel im Emulator starten, in den Monitor gehen, $DD00 und $D018 ansehen, dann den Zeichensatz aus dem entsprechenden Speicherbereich aus dem Monitor heraus abspeichern. Ist nicht wirklich schwer, aber dann noch Konvertieren etc. ist vielleicht eher eine Aufgabe für später. ;)
      Das mag sehr übersichtlich klingen. Das mag auch für Leute, die sich tiefer mit dem C64 beschäftigt haben recht übersichtlich sein, aber ... XD


      Für Interessierte habe ich hier mal den aktuellen Stand hochgeladen.
      Der hat hier und da noch Fehlerchen, die KI ist noch nicht einprogrammiert und vor allem will ich den Part mit den Userdaten noch überarbeiten, aber per se läuft es schon und ist auch schon spielbar.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von schwubbe ()

    • Neu

      1570 schrieb:

      Najaaa, einfach das Originalspiel im Emulator starten, in den Monitor gehen, $DD00 und $D018 ansehen, dann den Zeichensatz aus dem entsprechenden Speicherbereich aus dem Monitor heraus abspeichern.
      Ich weiß nicht, ob das was hilft, aber ich hab mal im Emulator den vollständigen Zeichensatz (256 Zeichen von 8x8 Pixel Größe) auf dem Bildschirm anzeigen lassen und davon einen Screenshot erstellt. Von den angezeigten Zeichen dürften nur die ersten zwei Zeilen relevant sein. Bei den unteren Zeilen handelt es sich nicht um Zeichen im eigentliche Sinne, sondern um eine Graphik, die anstelle von Zeichen auf dem Bildschirm eingeblendet wird.
    • Neu

      Das st lieb MJ, aber die relevanten Zeichen habe ich bereits als Grafik. Habe sie einfach aus Screenshots vom Spiel ausgeschnitten und mir dann daraus meine verschieden farbigen Sprites gebastelt die ich als Hintergrund in 16x16 Pixel großen Divs verwende um dann so die einzelnen Buchstaben zu simulieren. Und ja, originalgetreu wären sie mit 8x8 Pixeln, aber im Zeitalter der Full-HD-Bildschirme habe ich dann die Screenshots des Emulators nicht auf 1/2 runterskaliert.

      Nettes feature aber für mich ist das Wissen, das die Grafik vom Startbildschirm eigentlich keine Grafik ist. Da hatte ich nicht mit gerechnet.


      1570 schrieb:

      Sieht gut aus! Bin beeindruckt! :)
      Danke sehr. War erstaunlich wenig Arbeit bislang, trotz dessen ich bewusst Fehler des Spieles ebenfalls mit eingebaut habe.
      Auch die KI zu implementieren dürfte sehr einfach werden.

      Lediglich die Seite, wo die User Namen, Städtenamen und Geschlecht angeben müssen, die nervt mich momentan gewaltig in der Umsetzung.
      Ebenso bin iich noch nicht sicher, wie ich einen bestimmten Anzeigefehler kopiere.
      Wenn durch Ankäufe von Gebäuden so viel Geld ausgibt, das die Dollar-Menge eine Stelle weniger hat, so wird im Spiel die letzte Zahl der alten Summe hinter die neue Summe angehängt (bzw. vmtl. eher nicht durch ein Leerzeichen ersetzt).
      Da bin ich mir noch nicht sicher, wie ich das einbaue, aber da wird mir auch noch was einfallen, wenn ich das Userformular erst einmal hinbekommen habe ^^

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von schwubbe () aus folgendem Grund: Erweiterung um Zitat und Reaktion darauf

    • Benutzer online 1

      1 Besucher