Game Engineering, wie ???

Tag'chen,
- Ich habe Ahnung von C++
- Ich habe ein wenig Ahnung von Asm
- Ich habe ein ganz kleines bisschen Ahnung von Software Engineering
- Ich habe weiß wie man Memory Editoren bedient

Allerdings habe ich nicht wirklich eine Ahnung davon, wie man das auf ein Spiel anwendet. Hm...
Ich würde mir gern ein Tool basteln, welches ein Spiel dahin gehend erweitert, dass man über einer Spielerfigur, die momentane Gesundheit sieht und wenn vorhanden die Mana. Als Opfer wollte ich Warcraft 3 verwenden, hier gibt es allerding schon eine Option die die Healthbars über den Figuren anzeigen lässt, aber die Manabar nicht. Ich denke mal ich werd das eh nicht wirklich hinbekommen wie ich mir das so vorgestellt habe. Es würde micht trotzdem malö interessieren, wie man ein Spiel soweit erweitern kann das man z.B. in die Scene extra Featurs reinbaun kann, z.B. extra Manabar über Figuren, Distanzmeter, einen Circle um die Figur zeichnen der Sicht, Schussweite ect anzeigt ....
Wie könnte man das anstellen?


Gruß Tobi.
 
Puh, da muss man wirklich eine Menge haarklein reversen. Sonderfälle sind Spiele mit SDK. Die dort enthaltenen Strukturen und Klassen kann man dann selbst in seiner DLL (die man in den Spiel-Prozess injeziert) verwenden. Ist kein SDK vorhanden, schreibt man die Strukturen selber. Ein sehr hilfreiches Tool dafür ist ReClass [1].

Nun muss man die entsprechenden Objektvarialben und Adressen der Strukturen innerhalb der Binary finden. (gerne Offsets genannt).

Dazu schaut man sich einige Aspekte des Spiels an, irgendwelche Werte (Geld, Leben), sucht die im Speicher, setzt Memory Breakpoints und erschliesst sich den Code-Verlauf, und setzt dort an um noch mehr herauszufinden. Helfen tun auch bestimmte Sprites, Texturen, die zu bestimmten Situationen eingeblendet werden oder Sounds.

Wenn jemand zum Beispiel stirbt, wird ein bestimmter Sound ausgegeben. Wie dieser Sound vom Spieleordner geladen/abgespielt wird, kann man über APIs gut nachvollziehen. Nun findet man die Funktion, die verantwortlich dafür ist, den Sound abzuspielen, wenn jemand stirbt. Nun schaut man von welcher Funktion die aufgerufen wurde und findet vlt. eine Funktion die das Sterben eines Spielers insgesamt behandelt und noch weiter davor vlt. eine Bedingung, die prüft wieviel Leben der Spieler noch hat....und und und.
So hangelt man sich immer weiter und dokumentiert am besten alles sorgfältig.

Irgendwann hat man einen guten Überblick über die Engine. Spieler-Objekte, Welt-Objekte, Items usw.

Dann sucht man sich entweder primitive Zeichenfunktionen der Spieleengine oder benutzt selbst auch direkt die Grafik-API, die das Spiel benutzt. In den meisten Fällen (Direct3D oder OpenGL) um eigene Dinge auf dem Bildschirm auszugeben.

[1] http://forum.gamedeception.net/showthread.php?t=12041&highlight=ReClass&page=3
 
Genau so hab ich mir das alles schon gedacht, aber wie mache ich die Zeichenfunktionen ausfindig, welche das Game verwendet? Diese werden ja nicht wie die Strandart funktionen im EP also dieser ImportTabel aufgelistet so das man einfach nen BP setzen kann, wie kann man so z.B. die Chat-Funktion die den Text ausgibt finden? Und noch was, wie kann man nach bestimmten Texturen und Sprites suchen?


Gruß Tobi.
 
SORRY für Off-Topic, aber mal eine Frage:
(Will deshalb keinen neuen Thread öffnen)

Braucht man dafür Asm oder muss man sich gut mit dem Debuggen und sowas aukennen?

Sowas interessiert mit nähmlich auch sehhhhr!
 
Also, wenn du Game Reserving betreiben willst, kommst du ums debuggen nicht drum her rum und der Debuger zeigt dir numal alles nur in ASM, d.h. man sollte schon was von Asm verstehen.

Gruß Tobi.
 
Zurück
Oben