Balancing eines Spieles auslesen

    • Balancing eines Spieles auslesen

      Moin

      Kurz gefragt: Ich möchte gerne aus dem Spiel "Bürgermeister" die Balancingdaten auslesen. Kann mir da jemand helfen?

      Länger gefragt:
      Ich hatte früher anfang der 90er mal'n C128D mit ein paar Spielen dabei.
      Lange lange ist's her und vieles hat sich bei mir getan.
      Seit ein paar Jahren befasse ich mich aly Hobby mit Webprogrammierung, und seit Monaten schon hänge ich durch, weil ich kein Projekt habe für mein Hobby.
      Jetzt kam ich auf die gloreiche Idee das Spiel "Bürgermeister" mit HTML, CSS, AJAX, PHP und MySQL nachzubauen; einfach um mal wieder was zu coden.
      Einen Emulator und die Spieldatei von Bürgermeister hatte ich auch schnell gefunden und zum laufen gebracht.
      Mir fiel aber schnell auf, das dort mehr berechnet wird, als mir in Erinnerung war.
      Um das nun aber möglichst getreu nachprogrammieren zu können, muss ich nun irgendwie Die Balancing- und Schwellenwerte in Erfahrung bringen.

      Da ich vom Coden auf dem C64 bisher noch nicht die geringste Ahnung hatte versuchte ich es erstmal mit dem D64 Edditor.

      Aber was da rauskam, war ja nun alles andere als ein lesbares Balancing-Set :-þ

      Nach weiterem googlen fand ich dann euch und sah, das noch deutlich mehr aktive gibt als ich zu träumen gewagt hätte.

      Deshalb mal die Frage an euch:
      Müsste es die Möglichkeit geben, an die von mir benötigten Daten in Klarschrift heranzukommen?
      Wenn ja, wie würdet ihr vorgehen, bzw. was würdet ihr mir empfehlen?


      Liebe Grüße
      schwubbe


      Falls benötigt noch ein paar Daten zu meiner Ausrüstung:
      GamingLaptop mit Win10
      C64-Emulator: CCS64 Version 3.9.2.
      Versuchter D64-Editor: D64 Editor d64editor.com/
      Konkret geht es um das Spiel: Bürgermeister (deutsche Version)
      "Spieldatei": BUERGM-D.D64
    • OK, scheinbar ist mein Wunsch aussichtsloser als ich dachte.Oder ist den Usern etwas an meinem Verhalten übel aufgestoßen, das sie sich zurückhalten?
      Falls ja, ruhig raus damit! Kritik kann ich vertragen und beim nächsten Mal vlt. besser machen :)
    • schwubbe schrieb:

      OK, scheinbar ist mein Wunsch aussichtsloser als ich dachte.
      Das liegt daran, wieviel Zeit und Mühe Du bereit bist zu investieren.

      Bei dem Programm handelt es sich um ein gepacktes Basic-Programm. Um da an den Code zu kommen, müßtest Du
      1.) im Emulator (WinVice) am Ende des Entpackprozesses das Programm mittels Breakpoint anhalten, bevor das Basic-Programm gestartet wird,
      2.) das Basic-Programm mit dem Monitor von WinVice auf dem PC in eine PRG-Datei schreiben,
      3.) zur weiteren Bearbeitung am besten das C64-Studio von Endurion installieren,
      4.) das gespeicherte Basic-Programm in das C64-Studio laden und dort den Code ansehen.
    • Okay, hier grob das Programm einmal als ungefähre PRG-Datei zum Einlesen in das C64-Studio, einmal als BAS-Datei (mit der Endung TXT zum Hochladen im Forum) zum Betrachten im Texteditor.
      Achtung: Das Basicprogramm enthält C64-typische Steuerzeichen zur Positionierung des Cursors auf dem Bildschirm. Es kann also sein, daß der von Dir verwendete Texteditor daher eine Warnung ausgibt. Was in den Dateien enthalten ist, die zu Beginn des Programms geladen werden, weiß ich nicht, vermute aber, daß es sich um Graphiken handelt.

      Viel Erfolg bei der Suche nach den Daten!
      Dateien
    • Es gibt keine "Balancing-Daten", vorausgesetzt, Du stellst Dir da irgendwie eine Art standardisierte Tabelle vor oder sowas. Theoretisch kann sowas zwar in Form einer Tabelle implementiert sein, aber selbst wenn das der Fall sein sollte, gibt es da keinen Standard-Weg um diese auszulesen und zu verstehen. Es wird Dir nichts anderes übrig bleiben, als Dir den gesamten Code aufmerksam anzuschauen und zu verstehen.
      SHOTGUN - 4-Player Death Match - Website / CSDb / X-Mas
      FROGS - 4-Player Frog Pond - Website / CSDb
    • oobdoo schrieb:

      Ihr habe aber schon mitbekommen, der der User längst wieder gelöscht ist?
      Letzte Meldung ist vom "6. Januar 2018, 16:10". Wenn er jetzt wirklich nicht mehr hier auf eine Antwort checken sollte, wäre das sein Problem. Aber ausgerechnet zwischen den Feiertagen auf eine Antwort zu hoffen, wenn die meisten hier in Urlaub sind oder was anderes zu tun haben, ist auch schon mutig. ^^
    • oobdoo schrieb:

      Ihr habe aber schon mitbekommen, der der User längst wieder gelöscht ist?
      Da wir hier glücklicherweise noch keinen Forenzensor haben, der unerwünschte Themen oder seiner Meinung nach nicht ernsthaft gestellte Fragen als 'Terra Incognita' kennzeichnet, könnten ja theoretisch einige Forenschreiber ihre Antworten dennoch geben wollen, falls es mal jemand anderen interessieren sollte- oder auch der gesperrte User trotzdem noch mitliest.
    • oobdoo schrieb:

      Ihr habe aber schon mitbekommen, der der User längst wieder gelöscht ist? ;)

      Der ist nicht gelöscht, der war schließlich nie registriert ;)
      (Wollte euch meinen Account nicht als Leiche aufbürden, da ich außer Fragen zu stellen leider nicht viel zum Forum beitragen kann.

      M. J. schrieb:

      [...]Aber ausgerechnet zwischen den Feiertagen auf eine Antwort zu hoffen, wenn die meisten hier in Urlaub sind oder was anderes zu tun haben, ist auch schon mutig. ^^

      Da ich selbst an Feiertagen arbeite und sie nicht feiere hatte ich das gar nicht bedacht XD

      M. J. schrieb:

      Viel Erfolg bei der Suche nach den Daten!

      Vielen Lieben Dank, ich werde mir die Dateien mal anschehen und schauen, ob es mir etwas hilft :)

      ZeHa schrieb:

      Es gibt keine "Balancing-Daten", vorausgesetzt, Du stellst Dir da irgendwie eine Art standardisierte Tabelle vor oder sowas. Theoretisch kann sowas zwar in Form einer Tabelle implementiert sein, aber selbst wenn das der Fall sein sollte, gibt es da keinen Standard-Weg um diese auszulesen und zu verstehen. Es wird Dir nichts anderes übrig bleiben, als Dir den gesamten Code aufmerksam anzuschauen und zu verstehen.

      Damit hatte ich auch nicht gerechnet. Mir war schon klar, das ich wahrscheinlich alles danach durchforsten muss.
    • schwubbe schrieb:

      oobdoo schrieb:

      Ihr habe aber schon mitbekommen, der der User längst wieder gelöscht ist? ;)
      Der ist nicht gelöscht, der war schließlich nie registriert ;)
      (Wollte euch meinen Account nicht als Leiche aufbürden, da ich außer Fragen zu stellen leider nicht viel zum Forum beitragen kann.
      Wie geht denn sowas? 8|

      Auch Fragen mit Antworten der anderen User können wichtig sein. ;)
      Mitwäre das nicht passiert! :prof:
      :syshack: Meine 3D-Drucker Teile auf thingiverse.com/oobdoo/designs :strom:
      Sammlung | 102 Bücher bzw. 28.009 Buchseiten mit Z80/8080/8085 Power
    • oobdoo schrieb:

      Auch Fragen mit Antworten der anderen User können wichtig sein. ;)
      Natürlich, aber fragen kann ich auch als Gast :)
      PS: Bin jetzt auch registriert damit ich die Dateien runterladen konnte.

      ZeroZero schrieb:

      schwubbe schrieb:

      Wollte euch meinen Account nicht als Leiche aufbürden, da ich außer Fragen zu stellen leider nicht viel zum Forum beitragen kann.
      He, wenn Du etwas rauskriegst, kannste diese wertvollen Infos doch schon mal hier teilen, oder vielleicht lieferst Du ja sogar nen Trainer ;)
      Uhh ... Ich hätte zwar keinerlei Probleme damit derartigen Ruhm und Dankbarkeit zu ernten, aber ich bezweifle doch sehr stark, das ich über dieses Vorhaben derart an Wissen gewinnen werde, das ich anderen Lehren könnte ^^
    • Neu

      Kleiner Zwischenstand für interessierte:

      Dank der Datei von M.J. ist das Thema Balancing kein großes Problem mehr.
      Ich muss mir da lediglich noch ein wenig mehr Überblick über die Random-Funktion des Basic verschaffen (besonders über min und max, vmtl 0-1), damit ich es möglichst getreu in PHP oder Javascript nachgebaut bekomme.

      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. Das ist mittels str_replace in PHP und sprites in CSS recht simpel, und ich muss mich nicht damit befassen, eine alte Schriftart neu aufzulegen, um dann am Ende trotzdem Probleme bei der Einbindung oder fehlenden Zeichen zu bekommen.

      Mit der Steuerung bin ich noch nicht ganz zufrieden, wenn auch ziemlich.
      Da das Auslesen der Pfeiltasten und Strg nicht so zuverlässig zu sein scheint (ich hatte Probleme), habe ich mich dazu entschlossen die klassische WASD-Belegung und die Leertaste als Feuerknopf zu programmieren (kann ich aber auch jederzeit ändern).

      Aktuell hänge ich gerade etwas an dem Punkt, so man den/die Namen und Stadtnamen eingeben muss.
      Die Übermittlung der Daten an das Skript will grad nicht so, geschweige denn, das ich die Eingabebereiche optisch dem Original ... während der User dann Zeichen für Zeichen eingibt ....
      Ne, das werde ich auch vorerst mit "normalen" Formularfeldern belassen, und im Zweifel später noch ändern.

      Nach den ganzen Vorbereitungensollte das Programmieren des eigentlichen Spiels (was der Schritt nach den Usereingaben bei mir ist) ziemlich easy von statten gehen. Ich werde euch dann auch mal was zum anschauen verlinken.
      Vorerst werde ich mich am Original halten, mit allem drum und dran. Später werde ich mich vlt auch noch an einer Art remake versuchen, wo ich dann Rechenfehler ausbügle, der bisher sinnfreien Universität einen Sinn gebe etc. pp. Mal schauen :)
    • Neu

      Vielleicht hilft Dir das hier ein bisschen:

      Quellcode

      1. *** Konstanten für RND
      2. .:E08D 98 35 44 7A 00 11879546
      3. .:E092 68 28 B1 46 00 3.92767774E-4
      4. *** BASIC-Funktion RND
      5. .,E097 20 2B BC JSR $BC2B Vorzeichen holen
      6. .,E09A 30 37 BMI $E0D3 negativ ?, dann zu $E0D3
      7. .,E09C D0 20 BNE $E0BE nicht Null?, dann zu $E0BE
      8. .,E09E 20 F3 FF JSR $FFF3 Basis-Adresse CIA holen
      9. .,E0A1 86 22 STX $22 als Zeiger
      10. .,E0A3 84 23 STY $23 speichern
      11. .,E0A5 A0 04 LDY #$04 Zähler setzen
      12. .,E0A7 B1 22 LDA ($22),Y LOW-Byte Timer A laden
      13. .,E0A9 85 62 STA $62 und speichern
      14. .,E0AB C8 INY Zähler erhöhen
      15. .,E0AC B1 22 LDA ($22),Y HIGH-Byte Timer A laden
      16. .,E0AE 85 64 STA $64 und speichern
      17. .,E0B0 A0 08 LDY #$08 Zähler neu setzen
      18. .,E0B2 B1 22 LDA ($22),Y TOD 1/10 sec laden
      19. .,E0B4 85 63 STA $63 und speichern
      20. .,E0B6 C8 INY Zähler erhöhen
      21. .,E0B7 B1 22 LDA ($22),Y TOD sec laden
      22. .,E0B9 85 65 STA $65 und speichern
      23. .,E0BB 4C E3 E0 JMP $E0E3 weiter bei $E0E3
      24. .,E0BE A9 8B LDA #$8B Zeiger auf
      25. .,E0C0 A0 00 LDY #$00 letzten RND-Wert
      26. .,E0C2 20 A2 BB JSR $BBA2 nach FAC holen
      27. .,E0C5 A9 8D LDA #$8D Zeiger auf
      28. .,E0C7 A0 E0 LDY #$E0 Konstante
      29. .,E0C9 20 28 BA JSR $BA28 FAC = FAC * Konstante
      30. .,E0CC A9 92 LDA #$92 Zeiger auf
      31. .,E0CE A0 E0 LDY #$E0 Konstante
      32. .,E0D0 20 67 B8 JSR $B867 FAC = FAC + Konstante
      33. .,E0D3 A6 65 LDX $65 alle
      34. .,E0D5 A5 62 LDA $62 Stel-
      35. .,E0D7 85 65 STA $65 len
      36. .,E0D9 86 62 STX $62 im
      37. .,E0DB A6 63 LDX $63 FAC
      38. .,E0DD A5 64 LDA $64 ver-
      39. .,E0DF 85 63 STA $63 tau-
      40. .,E0E1 86 64 STX $64 schen
      41. .,E0E3 A9 00 LDA #$00 Vorzeichen
      42. .,E0E5 85 66 STA $66 positiv
      43. .,E0E7 A5 61 LDA $61 Exponent in
      44. .,E0E9 85 70 STA $70 Rundungsstelle
      45. .,E0EB A9 80 LDA #$80 Zufallszahl
      46. .,E0ED 85 61 STA $61 speichern
      47. .,E0EF 20 D7 B8 JSR $B8D7 FAC linksbündig machen
      48. .,E0F2 A2 8B LDX #$8B Zeiger auf
      49. .,E0F4 A0 00 LDY #$00 letzten RND-Wert
      50. .,E0F6 4C D4 BB JMP $BBD4 FAC runden und speichern
      Alles anzeigen
      Life's good! :thumbup:
    • Neu

      schwubbe schrieb:

      Da das Auslesen der Pfeiltasten und Strg nicht so zuverlässig zu sein scheint (ich hatte Probleme), habe ich mich dazu entschlossen die klassische WASD-Belegung und die Leertaste als Feuerknopf zu programmieren (kann ich aber auch jederzeit ändern)

      Hmmm, wenn das Original Joystick war würde ich statt wasd eher ijkl empfehlen, das kann man dann mit der rechten hand bedienen, wie einst den joystick. wasd ist ja eher populär als linke-hand-ergänzung zur maus in der rechten ;)

      Noch ein wenig "Designmotz" :D nicht in den falschen hals kriegen bitte .... ein Browserspiel baut man ja eigentlich in javascript. Also, NUR in javascript. Serverseitiger Code ist nur nötig/sinnvoll, wenn man Spieler vernetzen will, oder zumindest sowas wie highscores zentral verwalten. Zu dem Zweck wären heute REST services am ehesten das zeitgemäße Mittel. Die kannst natürlich auch in PHP implementieren ... ;) nur so als Denkanstoß :)
    • Neu

      ZeroZero schrieb:

      Vielleicht hilft Dir das hier ein bisschen
      Ne, leider so überhaupt gar nicht :|
      Wie gesagt, bisher weiß ich, das die Zufallszahl scheinbar zwischen 0 und 1 liegt und 9 Nachkommastellen hat.
      Im Zweifel muss ich damit arbeiten und sie auf eigene Weise erzeugen.

      zrs1 schrieb:


      Hmmm, wenn das Original Joystick war würde ich statt wasd eher ijkl empfehlen, das kann man dann mit der rechten hand bedienen, wie einst den joystick. wasd ist ja eher populär als linke-hand-ergänzung zur maus in der rechten ;)

      Noch ein wenig "Designmotz" :D nicht in den falschen hals kriegen bitte .... ein Browserspiel baut man ja eigentlich in javascript. Also, NUR in javascript. Serverseitiger Code ist nur nötig/sinnvoll, wenn man Spieler vernetzen will, oder zumindest sowas wie highscores zentral verwalten. Zu dem Zweck wären heute REST services am ehesten das zeitgemäße Mittel. Die kannst natürlich auch in PHP implementieren ... ;) nur so als Denkanstoß :)

      ijkl ließe sich einrichten, auch, das beide Kombinationen parallel möglich sind; sogar so, das man die Wahl hat.
      Mal schauen. Ist halt grad nicht meine Prio #1.
      Ja, das PHP kann man ganz sicher ersetzen, keine Frage, was es schon unnötig macht.
      Ist aber schon bewusst aufgeteilt. JS liegt mir einfach nicht soo sehr und ich mag es nicht sonderlich. Ich hab ja schon Stunden gebraucht um die Userdaten via AJAX zum Server zu kriegen -.-'
      Zudem will ich mich mit dem Projekt ja in meinem Wissensstand trainieren, und ich arbeite gewöhnlich mit PHP.
      Nicht zuletzt aber habe ich die highscore in der Tat in einer MySQL-DB gespeichert und werde wohl auch die rundenbasierten Userdaten dort ablegen.

      Für die Zukunft des Projektes aber kann die Aufteilung auch noch recht sinnvoll werden. Wenn ich wirklich ein Remake, eine Version 2.0 dovan mache, dann habe ich a) den Grundbaustein schon fertig und würde u.a. wegen möglichem vernetzten Multiplayer und Userverwaltung auf PHP setzen müssen.
      Aber wie geschrieben: Unrecht hast du eigentlich nicht.
    • Benutzer online 1

      1 Besucher