Speicher-Tool für ein Spiel schreiben

Drachenbauer

Aktives Mitglied
Hallo

Ich habe mir dieses Spiel besorgt:

Dann habe ich gemerkt, dass es keinen Spielstand speichert.
Wenn die Gesundheits-Leiste von Froad leer ist ober man das Spiel schließt und wieder startet, geht es wieder mit "Tag 1" (Die Levels werden de "Tage" genannt) los.

Jetzt würde ich gerne ein kleines Tool schreiben, mit dem ich das Szenario (Wald oder Teich) und den aktuellen "Tag" aus der laufenden Instanz des Spieles auslesen und in einer Datei speichern kann.
Durch Laden einer solchen Datei in das Tool sol sich dann eine Instanz des Spieles öffnen, die nicht mit dem Titel-Menü sondern direkt an dem gespeicherten "Tag" im gespeicherten Szenario beginnt.

Wie kann ich das realisieren?
 
Gar nicht, wenn dieses closed-source Spiel von sich aus überhaupt keine Möglichkeit für Spielstände bietet...
Doch doch, man könnte (z B) CheatEngine verwenden oder das Spiel reengineeren (decompilieren, assembly ändern, compilieren) oder sich "ins Spiel einklinken", aber alle drei Möglichkeiten sind wahrscheinlich viel zu aufwändig im Vergleich zur Funktionalität.

(Yes, you could (for example) use CheatEngine or reengineer the game (decompile, change assembly, compile) or "hook into the game", but all three possibilities are probably much too complex compared to the functionality.)
 

Robert Zenz

Top Contributor
Wollt ihr nicht mal gegen diese Totenbeschwörer-Invasion vorgehen?
Ich habe dieses beschweren ueber das herausholen alter Themen noch nie verstanden. OP ist wahrscheinlich nicht mehr da, aber das heiszt ja nicht dass man nicht noch etwas brauchbares beitragen kann. Immerhin ist hier jedes Thema ueber eine Suchmaschine auffindbar, die alten Themen gehen ja nicht weg.

Ich meine, es zwingt dich niemand dazu dieses Thema zu lesen, du kannst es einfach links liegen lassen, du hast dich dazu entschieden dich darueber aufzuregen. Und ich mich dummerweise dazu entschieden dir zu antworten, dabei wollte ich das doch lassen. Naja, beim naechsten mal.

Schade, dabei war das Thema durchaus interessant, keine Ahnung warum mir das entgangen ist. :(
Tatsaechlich ist das gesamt Thema interessant, zum Beispiel koennte man den Speicher so aendern dass der alte "Stand" gespeichert und geladen werden kann. Oder man koennte auch versuchen den gesamten Speicher vom Prozess zu persistieren und dann wieder zu laden. Von letzerem habe ich auf UNIX schon viel gehoert, aber leider noch nie eine schoene Anleitung dafuer gesehen.
 

KonradN

Super-Moderator
Mitarbeiter
Wenn einem das Thema wirklich interessiert, dann kann man es ja gerne angehen.

Hier ist aber nur ein Spam Beitrag dazu gekommen...


Wenn man in einem Thread antwortet, dann sollte man eigentlich den Thread auch lesen. Und dann sollte der genannte Umstand sofort auffallen.


Wenn Ihr das Thema interessant findet: Warum startet ihr dann keinen neuen Thread mit konkretem Inhalt. Nehmt euch irgend ein Spiel und hackt es. Baut irgendwelche hooks oder sonst was. Zeigt auf, was für Techniken ihr nutzen wollt.

Und wenn ihr diesen Thread verwenden wollt: Sei es drum. Das verbietet euch niemand. Nur eben werden dann Leute, die den Thread öffnen, den Anfang sehen und dann vermutlich den Thread nicht weiter verfolgen. Aber das sind Konsequenzen, die ihr tragen müsst.

Also ja: Ich verstehe auch nicht, das es Menschen gibt, die anderen vorgeben, wie sie zu leben haben oder was sie machen oder nicht machen sollen. Und wenn ich euch sage: Nein, kauft euch kein Kurzschwert und stürzt euch da rein, dann bin ich gerne böse. Und nein: Ich will euch das nicht verbieten! Aber es ist aus meiner Sicht keine gute Idee, sowas zu machen.
 

White_Fox

Top Contributor
Tatsaechlich ist das gesamt Thema interessant, zum Beispiel koennte man den Speicher so aendern dass der alte "Stand" gespeichert und geladen werden kann. Oder man koennte auch versuchen den gesamten Speicher vom Prozess zu persistieren und dann wieder zu laden. Von letzerem habe ich auf UNIX schon viel gehoert, aber leider noch nie eine schoene Anleitung dafuer gesehen.


Klingt einfacher als es wahrscheinlich ist. Den Speicher erstmal brauchbar auszulesen dürfte die erste Schwierigkeit sein.

Ich kenne mich mit Betriebssystemen nicht allzugut aus, aber die Speicherverwaltung sollte es eigentlich nicht zulassen, daß man so ohne weiteres den Speicher anderer Programme auslesen kann. Und dann müßte man den Speicher irgendwie wieder ins Programm "einhängen".
Ich habe für mein Projekt ja mal eine Serialisierung geschrieben und bin dabei u.a. auf das Problem gestoßen, daß z.B. Enums zu verschiedenen Laufzeiten verschiedene Hashs haben. Ich wollte eine HashMap mit einem Enum als Key serialisieren und habe mich hart gewundert warum das Serialisieren im Unittest absolut kein Problem war, im laufenden Betrieb aber überhaupt nicht funktionierte.

Mein erster Schuß wäre gewesen, bestimmte Spieldurchläufe geplant zu durchlaufen und die Speicherdumps zu vergleichen. Oder den Speicher eines Spieldurchlaufs mehrmals auszulesen und nach bestimmten Ereignissen (Leben verloren) zu vergleichen.
 

Robert Zenz

Top Contributor
Ich kenne mich mit Betriebssystemen nicht allzugut aus, aber die Speicherverwaltung sollte es eigentlich nicht zulassen, daß man so ohne weiteres den Speicher anderer Programme auslesen kann. Und dann müßte man den Speicher irgendwie wieder ins Programm "einhängen".
Das muesste unter UNIX-aehnlichen eigentlich gehen. root kann alles lesen, und fork macht auch nichts anderes als den Prozess, so wie er ist, zu kopieren und dann ein zweites mal zu starten. Ich bilde mir ein ich haette mal von einer Moeglichkeit gelesen dass man Prozesse mit SIGSTOP anhalten kann, dann den Speicher irgendwo hinschreiben und dieses Abbild dann verwenden kann um einen neuen Prozess an diesem Punkt weiterlaufen zu lassen. Der Kernel weisz ja welcher Speicher alles dazu gehoert. Damit habe ich mich aber nie beschaeftigt, weil wann braucht man schon sowas?

Ich bilde mir ein ich haette das im Kontext von SSH gesehen, also dass man Prozesse auf der einen Maschine starten kann, und dann auf eine andere transferieren kann. Weisz ich aber nicht mehr genau.

Ich habe für mein Projekt ja mal eine Serialisierung geschrieben und bin dabei u.a. auf das Problem gestoßen, daß z.B. Enums zu verschiedenen Laufzeiten verschiedene Hashs haben. Ich wollte eine HashMap mit einem Enum als Key serialisieren und habe mich hart gewundert warum das Serialisieren im Unittest absolut kein Problem war, im laufenden Betrieb aber überhaupt nicht funktionierte.
Ja Updates sind komplett aussen vor wenn man sowas macht, gibt keine Updates mehr.

Mein erster Schuß wäre gewesen, bestimmte Spieldurchläufe geplant zu durchlaufen und die Speicherdumps zu vergleichen. Oder den Speicher eines Spieldurchlaufs mehrmals auszulesen und nach bestimmten Ereignissen (Leben verloren) zu vergleichen.
Ja, das waere die einfachste Moeglichkeit herauszufinden wo was im Speicher liegt.
 

KonradN

Super-Moderator
Mitarbeiter
Also sobald es eine Anwendung mit einer UI ist, dann ist es generell üblich, dass die Anwendung Events von dem System entgegen nimmt. Und da kann man dann ganz ohne Probleme beliebige Events hin senden. Speicherbereiche einer Anwendung sind zwar geschützt, d.h. eine Anwendung kann nicht ohne weiteres auf den Speicher einer anderen Anwendung zugreifen, aber es sind dann Dinge möglich wie z.B. Speicher reservieren, auf den auch die andere App zugreifen kann um dann ein Event zu senden, das dann im Rahmen der anderen App Werte kopiert.

Sowas habe ich schon in der Vergangenheit gemacht, um UI Controls auszulesen und zu steuern. Das findet sich unter Read ListViewItem content from another process | Konrads Software Development Blog (wordpress.com)

Die Links zu PDF und so dürften aber nicht mehr gehen. Auch die Seite für den Source hat Microsoft schon vor Jahren dicht gemacht.

Ein Problem ist, dass man damit aber erst einmal nur die vorhandenen Schnittstellen ansprechen kann. Controls empfangen ja die Events und das macht es natürlich einfach.

Wenn man aber die ganze Machbarkeit betrachtet, dann sollte uns Entwicklern klar sein, dass da alles möglich ist. Sich mit einem Debugger an einen laufenden Prozess zu hängen sollte doch eine Technik sein, die wir kennen. Oder ist das alles jetzt schon so GUI verwöhnt, dass es als Top Leistung gilt, wenn man in der IDE den Debug Knopf findet? (Die ganzen Debugger wir ddd und co sollte man doch auch etwas kennen. Und Tracing-Tools wie strace / truss, ...)

Und speziell bei Windows gilt: Es gibt extrem viele Möglichkeiten, sich mit Hooks einzuklinken. Egal was passiert: Man kann sich da prinzipiell dazwischen hacken. Das sind dann nur eben alles keine 08/15 Dinge mehr sondern benötigen ein tiefes Verständnis von Windows (was heute doch kaum noch eine hat!). Das ermöglicht dann viele lustigen Dinge. Software, die sich so bei Zugriffen auf Konfigurationen einhackt und alle Konfigurationen kommen dann z.B, aus einer Datenbank statt aus Registry / Configfile / sonstwas. Oder eine Anwendung wird begrenzt, weil bei Zugriffen auf Speicher dann freier Speicher eben doch nicht gewährt wird oder der CPU Verbrauch künstlich gedrosselt wird ...
(Das sind so Dinge, die ich in der Praxis erlebt habe auf Terminal Servern).
 

White_Fox

Top Contributor
Das muesste unter UNIX-aehnlichen eigentlich gehen. root kann alles lesen, und fork macht auch nichts anderes als den Prozess, so wie er ist, zu kopieren und dann ein zweites mal zu starten.
Stimmt, bei UNIXoiden ist man ja selber Herr über sein Gerät.

Bei Windows – und der Thread fing ja mit einem Microsoftspiel an – ist man selber nicht der Herr, da sind es Microsoft und allerlei amerikanische Drei-Zeichen-Organisationen. Ich glaube nicht, daß man unter Windows so ohne weiteres so weitgehende Rechte bekommt...oder doch?
 

KonradN

Super-Moderator
Mitarbeiter
Bei Windows – und der Thread fing ja mit einem Microsoftspiel an – ist man selber nicht der Herr, da sind es Microsoft und allerlei amerikanische Drei-Zeichen-Organisationen. Ich glaube nicht, daß man unter Windows so ohne weiteres so weitgehende Rechte bekommt...oder doch?
Also irgendwie frage ich mich, ob ich überhaupt gelesen werde ...

a) Selbstverständlich hat auch Windows ein entsprechendes Rechtesystem. Ggf. muss man nur aufpassen, was man als Administrator machen kann und ggf. braucht für diverse Dinge auch System Rechte. Aber hier der Zugriff auf Prozesse: Da reichen Administrator Rechte um z.B. einen Debugger zu verbinden (und damit vollen Zugriff auf den Prozess zu bekommen)!

b) Wozu Admin-Rechte? Wenn Du den Prozess selbst gestartet hast, dann hast Du doch auch die Rechte über den Prozess. Also wird man für sehr viele Dinge keine Adminrechte benötigen.
 

White_Fox

Top Contributor
Warum so :mad: ? Weil ich MS schon wieder Unredlichkeiten nahegelegt habe? :)

Einen Prozess zu starten und dann z.B. jederzeit wieder beenden zu können, ist m.E. nicht dasselbe wie sich den Speicherdump von diesem Prozess zu ziehen. Die Microsoftdienste starte ich ja auch – beim Einschalten des Rechners – aber kann die nicht einfach so im Taskmanager rauskicken. Die meisten ja, aber nicht alle.

Und letztendlich sorgst du ja selber für Klarheit:
Speicherbereiche einer Anwendung sind zwar geschützt, d.h. eine Anwendung kann nicht ohne weiteres auf den Speicher einer anderen Anwendung zugreifen, aber es sind dann Dinge möglich wie z.B. Speicher reservieren, auf den auch die andere App zugreifen kann um dann ein Event zu senden, das dann im Rahmen der anderen App Werte kopiert.
Verstehe ich zumindest so, daß mein Vorhaben oben (Dumps vergleichen) nicht so ohne weiteres geht, da das Resultat zu bruchstückhaft werden würde.
 

KonradN

Super-Moderator
Mitarbeiter
Warum so :mad: ? Weil ich MS schon wieder Unredlichkeiten nahegelegt habe? :)
Nein, weil ich etwas schreibe und das dann ignoriert wird. WWozu habe ich #9 geschrieben, wenn dann in #10 das Alles offensichtlich ignoriert wurde?


Verstehe ich zumindest so, daß mein Vorhaben oben (Dumps vergleichen) nicht so ohne weiteres geht, da das Resultat zu bruchstückhaft werden würde.
Nein, das hast Du missverstanden. Alleine schon die Tatsache, dass ich ja berichtet habe, dass ich so Zugriffe gemacht habe, sollte doch zeigen, dass es geht.

Und ich habe auch Debugger erwähnt. Glaubst Du ernsthaft, dass die Basis für Fehlersuche und Debugging in Windows fehlen könnte? Das ist das Computer-Betriebssystem mit der größten Verbreitung und sehr viele Entwickler entwickeln da professionell unter Windows / für Windows.
 

White_Fox

Top Contributor
Nein, weil ich etwas schreibe und das dann ignoriert wird.
Nicht ignoriert....sondern tatsächlich nicht gelesen. Ich wollte eigentich nur Robert antworten, und hatte einfach nicht die Zeit deinen Post in voller Schönheit zu verdauen. Mea culpa.
Aber selbst wenn ich ihn gelesen hätte, hätte ich ihn so verstanden...also, nicht beleidigt sein. Wenn du meinst daß das so gehen würde...dann geht es bestimmt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G [LibGDX/Java] ArrayList Object Speicher Spiele- und Multimedia-Programmierung 3
Q BufferedImage vs. Heap Space ‒ Warum wird der Speicher nicht freigegeben? Spiele- und Multimedia-Programmierung 6
T PNG im Speicher Spiele- und Multimedia-Programmierung 8
U Foto Uploading Tool Spiele- und Multimedia-Programmierung 7
A Billiges oder kostenloses Tool für Obj Spiele- und Multimedia-Programmierung 4
B Server für Spiel aufsetzen, was Shutdown ist Spiele- und Multimedia-Programmierung 3
N Minecraft Frage für einen Minecraft Server Spiele- und Multimedia-Programmierung 2
B Deepmind Poker Bot für PokerStars konfigurieren? Spiele- und Multimedia-Programmierung 2
G Minecraft PlayerBot (Listener Thread für jeden Spieler?) Spiele- und Multimedia-Programmierung 3
K Wie bekomme ich eine Transition für alle Objekte zum stoppen? Spiele- und Multimedia-Programmierung 1
E Organisation für Game Spiele- und Multimedia-Programmierung 1
Excess Ballerfisch für Android Spiele- und Multimedia-Programmierung 3
coolian ich brauche irgendeine gui lib für lwjgl2 Spiele- und Multimedia-Programmierung 51
krgewb Anderer Algorithmus für Bounding Box Spiele- und Multimedia-Programmierung 9
MiMa MP3 Dateien für Metadaten abgleichen Spiele- und Multimedia-Programmierung 0
Freshy Bot für Discord Spiele- und Multimedia-Programmierung 61
R Ideen für die Backend-Entwicklung eines Games gesucht Spiele- und Multimedia-Programmierung 8
G Mikrophon-/Audiosteuerung für einen Character Spiele- und Multimedia-Programmierung 1
P Tennis- Spielstand- Zähler für Schule programmieren Spiele- und Multimedia-Programmierung 6
M Logik für ein Quiz Spiele- und Multimedia-Programmierung 7
P Hilfe für Seminar Arbeit Spiele- und Multimedia-Programmierung 9
MiMa Metadaten für Multimedia Daten ermitteln Spiele- und Multimedia-Programmierung 4
G Übungsprogramm für Matheaufgaben Spiele- und Multimedia-Programmierung 1
F Algorithmus für bessere Kollisionsabfragen Spiele- und Multimedia-Programmierung 10
S Bilder Für Schachfiguren Spiele- und Multimedia-Programmierung 14
Timo_neu_in_java Suche etwas einfaches für Anfänger Spiele- und Multimedia-Programmierung 6
I Minecraft Suche Plugin Developer für Minecraft Netzwerk! Spiele- und Multimedia-Programmierung 2
S GUI erstellen für Text Adventure Spiele- und Multimedia-Programmierung 4
S Eigene Klasse vec_t - 3 oder 4 Einheiten für x, y, z und w Spiele- und Multimedia-Programmierung 11
R Vererbbarer GameLoop für Engine Spiele- und Multimedia-Programmierung 14
J Vektor für Gravitation erzeugen Spiele- und Multimedia-Programmierung 34
I Minecraft: Craftingrecipe für Braustand ändern Spiele- und Multimedia-Programmierung 9
Z Minimax-Algorithmus für TicTacToe Spiele- und Multimedia-Programmierung 5
H KI für Spiele Spiele- und Multimedia-Programmierung 1
S Pssende Datenstruktur für ein Netz Spiele- und Multimedia-Programmierung 5
S MouseEvents für Sprites Spiele- und Multimedia-Programmierung 3
I Spectator Modus für Spiel ähnlich zu Terraria Spiele- und Multimedia-Programmierung 8
K Bestes Bildformat für Spielegrafiken und deren Einbindung in Java Spiele- und Multimedia-Programmierung 2
J mehrere Listener für einen Button / Label Spiele- und Multimedia-Programmierung 1
C Port umleiten: lesen und schreiben für MCServer-Client über Skype Spiele- und Multimedia-Programmierung 0
J Musik Bibliothek für GUI Spiele- und Multimedia-Programmierung 7
B Hauptmenü für Spiel Spiele- und Multimedia-Programmierung 1
R Ratschlag für 2D-3D Engine für die Spieleentwicklung gesucht Spiele- und Multimedia-Programmierung 4
Androbin KI für Verfolgung im Raster Spiele- und Multimedia-Programmierung 2
A Bot für Browsergame Spiele- und Multimedia-Programmierung 2
H Tutorials für Fortgeschrittene 3D-Anwedungen Spiele- und Multimedia-Programmierung 2
lord239123 suche Graphiker für ein Pokemon-Spiel Spiele- und Multimedia-Programmierung 6
Furtano Vektoren für Bewegung für eine 2D-Simulation Spiele- und Multimedia-Programmierung 3
T Sinusgenerator für eine Hp Spiele- und Multimedia-Programmierung 8
J Menü für Snakespiel in einzelnem JFrame Spiele- und Multimedia-Programmierung 5
M Minecraft weitere Java Entwickler für minecraft projekt gesucht Spiele- und Multimedia-Programmierung 0
Guybrush Threepwood Ketzerische Frage: Opus-Codec für Java Spiele- und Multimedia-Programmierung 14
L Hilfe bei Klassendesign für Spiel Spiele- und Multimedia-Programmierung 2
N Animationen für ein 2D game Spiele- und Multimedia-Programmierung 6
S Aufbau für 2D Spiele Spiele- und Multimedia-Programmierung 7
L Client für ein Browsergame Spiele- und Multimedia-Programmierung 21
Devil0s Swing Elemente für Inventar? Spiele- und Multimedia-Programmierung 9
Kenan89 Ansatzfrage: Kartenspiel für 2 Spieler Online Spiele- und Multimedia-Programmierung 3
F Ideen für spiel Spiele- und Multimedia-Programmierung 4
P Spielfeld für RPG Spiele- und Multimedia-Programmierung 15
Hoppelmann Alphamap (Bild) für 3D-Terrain generieren Spiele- und Multimedia-Programmierung 2
S Algorithmus zur Ressourcesuche für die KI Spiele- und Multimedia-Programmierung 5
M Farbwerte für Flächen aus einem Bild erkennen Spiele- und Multimedia-Programmierung 3
K Einfache Engine für einfaches 3D gesucht Spiele- und Multimedia-Programmierung 10
C KI für Skatspiel - Wie können die Computerspieler eigenständig handeln? Spiele- und Multimedia-Programmierung 10
S Aufbau von Klassen für Spiel Spiele- und Multimedia-Programmierung 13
Kenan89 Kleines Projekt für Java Spiele- und Multimedia-Programmierung 5
M Empfehlungen für ein 2D-Jump'n'run Spiele- und Multimedia-Programmierung 4
A Grundlagensuche für Spiel Spiele- und Multimedia-Programmierung 8
C Wo ist der MP3 Plugin für JMF? Spiele- und Multimedia-Programmierung 3
qwerqer Design Pattern gesucht für Spielregeln Spiele- und Multimedia-Programmierung 2
M Java als Programmiersprache für kommerzielle Spieleentwicklung? Spiele- und Multimedia-Programmierung 3
K Game Engine für selbstprogrammiertes Spiel Spiele- und Multimedia-Programmierung 27
Y Warum Thread für Spieleprogrammierung? Spiele- und Multimedia-Programmierung 27
A Music für Android game Spiele- und Multimedia-Programmierung 3
Gossi Probleme beim Laden der Images aus dem "Tutorial für Java-Spiele" Spiele- und Multimedia-Programmierung 4
M Minecraft Suche Java Programmierer (für Minecraft) Spiele- und Multimedia-Programmierung 2
Luk10 Tipps für bessere Animationen / Grafik Engine Spiele- und Multimedia-Programmierung 2
T 2D Menü für 3D Spiel Spiele- und Multimedia-Programmierung 5
T Grundlagenwissen für den 3D Raum Spiele- und Multimedia-Programmierung 6
I getSubImage sorgt für starken Performanceeinbruch Spiele- und Multimedia-Programmierung 6
M technologie für video, webcam & co Spiele- und Multimedia-Programmierung 25
C Java für große Spiele geeignet ? Spiele- und Multimedia-Programmierung 101
D Libraryempfehlung für Effekte Spiele- und Multimedia-Programmierung 3
B Spiele programmieren für ein Fenster? Spiele- und Multimedia-Programmierung 14
D Tabelle für Spiel Spiele- und Multimedia-Programmierung 3
N Grundlagen für ein Jump&Run Spiele- und Multimedia-Programmierung 3
S Datenbank gesucht für Bilder(gif-dateien) Spiele- und Multimedia-Programmierung 5
J Suche 3D Programm für jMonkeyEngine Spiele- und Multimedia-Programmierung 5
W 3D-APIs für Java - Eine Übersicht Spiele- und Multimedia-Programmierung 8
D Problem beim Öffnen einer PHP für eine Highscore Spiele- und Multimedia-Programmierung 5
S Game Client für kleine Competition Spiele- und Multimedia-Programmierung 3
F Programm für Bildbearbeitung gesucht: Skalieren und Speichern Spiele- und Multimedia-Programmierung 6
K Lösungsansätze für ein Spiel Spiele- und Multimedia-Programmierung 2
Plastagen Frameworls für Animationen und co Spiele- und Multimedia-Programmierung 3
aze Wie Transform3D für PosPathInterpolator bestimmen Spiele- und Multimedia-Programmierung 8
M Musik für Spiel wo downloaden? Spiele- und Multimedia-Programmierung 7
R Netzwerkstruktur für ein kleines Spiel Spiele- und Multimedia-Programmierung 8
O KI (künstliche Intelligenz) für Schachlogik Spiele- und Multimedia-Programmierung 4
J Brauche denkanstoß für kleines grafikframework Spiele- und Multimedia-Programmierung 3

Ähnliche Java Themen

Neue Themen


Oben