Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

20.04.2015, 14:59

Spiele Modding

Hallo Community,

Hab zwar schon mal im Chat gefragt hätte aber trotzdem noch gerne paar antworten.
Und zwar hätte ich eine Frage,
Wie moddet man spiele? Und damit mein ich jetzt keine Spiele die ein Modkit mit begrenzten Möglichkeiten anbieten, sondern wie man eigene Funktionen ins Spiel bringt.
Hat da zufällig jemand paar Stichwörter unter den ich suchen könnte?
Oder paar gute "Tutorials"?


Danke im voraus
Mit freundlichen Grüßen

Dennis

2

20.04.2015, 15:14

Simpelstes modding wäre das ändern von grafiken und sounds. Um neue funktionalitäten einzubringen, musst du gucken, wie bereits vorhandene eingefügt sind, zb. mit skriptsprachen oder direkt im programmcode. Für beides musst du reverse engineering betreiben, du musst also das programm auseinandernehmen und gucken, welcher teil was genau macht. Dabei kann dir ein Disassembler helfen. Das ganze ist mitunter sehr kompliziert, du musst dich gut auskennen.

Tobiking

1x Rätselkönig

  • Private Nachricht senden

3

20.04.2015, 15:20

Das lässt sich kaum allgemein beantworten. Wenn es keine offizielle Informationen darüber gibt wie das Spiel arbeitet geht alles in Richtung Reverse Engineering. Und da hilft einfach möglichst viele Details darüber zu wissen was Compiler für Code erzeugen, wie CPU und OS intern arbeiten, wie Datenformate aussehen etc.

4

20.04.2015, 15:59

Es gibt aber auch ziemlich viele spiele, wo bereits so gut wie alles herausgefunden wurde, wie bei SMW, SMB, cavestory und so gut wie alle beliebten länger existierendenden spiele. Dann heißt es bei deren community (bei SMW z.b. smwcentral.net) vorbei gucken. Auch tutorials sind dort sicher zu finden, welche aber solide kenntnisse voraussetzen.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

20.04.2015, 16:26

Jetzt weiß er genauso viel, wie ich ihm schon im Chat gesagt habe, wenn nicht sogar weniger ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Julién

Alter Hase

Beiträge: 717

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

6

20.04.2015, 20:13

Nachdem ich mir zweimal den Post durchgelesen hatte und immer noch nicht verstanden hatte, was zum Henker,denn die Problemstellung sein soll, und, da der Begriff "Modding" in seiner Implementation und Vorgehensweise nicht abbegrenzt ist,
schreibe ich einen etwas längeren Post. Gott (wahlweise Buddah) möge mir die folgenden Verbrechen an der deutschen Grammatik verzeihen.

Was ist ein Mod?
Laut Wikipedia ist ein Mod eine Modifikation eine Spiels, welcher von einem sog. Modder erstellt worden ist.
Jedoch gibt es verschieden Möglichkeiten mit denen man ein Spiel modden kann:

Ressourcen austauschen
Ich war nie professioneller Modder oder sonst etwas in die Richtung, deshalb kenne ich keine Fachbegriffe, jedoch weis ich aus eigenen Projekten was man machen kann.
Die einfachste Variante des 'moddings' wäre das Austauschen von Ressourcen. Ein Beispiel wären die Texturepacks aus Minecraft.
Dabei werden lediglich die Texturen mit den Originaltexturen des Spiels ausgetauscht.

Hier mal ein Beispiel, wie man durch das Austauschen der Texturen (und das Fälschen von einigen Hashcodes) das Auftreten eines Spiels verändern kann.

Natürlich ist diese Art des Moddings nicht nur auf Texturen beschränkt. Man kann JEDE Datei austauschen und es laufen bringen, wenn man einige Sonderfälle des Spiels beachtet, z.B. die Hashcodes der Ressourcenpaket aus Urban Terror.
Sounddateien, 3D-Modelle oder Scripte, Plugins und/oder DLLs können ausgetauscht werden. Dabei wären wir schon beim nächsten Punkt.

Code modding
Ich habe lange Urban Terror früher "gesuchtet" und tatsächlich auch nach Wegen gesucht, jenes Spiel zu modifizieren.
Es ist mir in soweit geklückt, dass ich Begriffen habe, dass das Spielverhalten über eine ".qvm" Datei (alternativ DLL) definiert wird.
Diese ".qvm"-Datei wird von einer virtuellen Maschine der Quake 3 Engine ausgeführt und besitzt auch ein eigenes "Instruction Set" (falls du nicht weis was das ist, google das mal und befasse dich mit etwas Assembler).
Um meinen heisgeliebten Zombiemod zu machen, musste ich die Instruktionen teilweise überschreiben und an anderen Stellen anpassen.
Anekdote: Als ich mich bei FrozenSand beworben habe um an den Projekt mitwirken zu können, bin ich auf dem TS von denen gegangen und habe mit den "Lead Programmers" in Kontakt getreten. Beide wohl einigermaßen bekannt, der eine "TTimo" von idTech und "Fenix". Sie sind ausgetickt, als sie herausfanden, dass ich die QVMs gemoddet habe. War anscheinend nicht legal wegen der EULA oder sonst was *grins*

Wie auch immer. Dieses Verfahren kannst du eigentlich auch auf jede Scriptdatei oder DLLs anwenden. Scripts, welche im Klartext verfügbar sind , sind natürlich einfacher zu bearbeiten als kompilierte DLLs. Bei den Script kannst du meist munter modden wie du willst. Bei DLLs musst du meist mit einem BlackBoxDebugger ran (OllyDbg oder Immunity Debugger :love: , letzteres mit Pythonscripting), und da wirst du dann auch die Instructionen ändern müssen, jedoch wirst du dazu Assembler verstehen müssen bzw. beherschen.

Man kann damit auch alles ändern. Beispielsweise gefällt es mir nicht, dass das Programm ständig nach einem Key frägt, denn ich zufälliger Weise nicht besitze. Da könnte ich dann einfach ein paar Instruktionen durch '\x90' also NOPs erstzen und es wird garnicht nach dem Key gefragt. Aber das wäre schon Cracking.

Hier mal ein Beispiel, ist zwar Cracking, natürlich habe ich das Video nur aus rein informativen Zwecken aufgesucht, aber es ist ähnlich.

Wie du merkst bin ich bis jetzt davon ausgegangen, dass du ein Spiel modden willst, das kein Modding SDK hat.

Für den Fall, dass es eine Modding SDK gibt
Gehe auf die Website des SDK, lade es runter, lese die Docu und komme wieder, wenn du ernsthafte Probleme hast.
Z.B.: Weil dein Haus wegen einer NullPointerException brennt oder bei anderen sonst wahrscheinlichen Fällen.

Aber ich will mein eigenes Spiel modden!
Das habe ich bisher aussenvor gelassen.
Falls du deine eigenen Spiele zu modden gedenkst, dann ist wohl der einzigwahre Schritt das Implementieren einer Moddingschnittstelle.
An dieser Stelle möchte ich ein Beispiel von einer kleinen Lua-Schnittstelle stellen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 #include <stdio.h>
    #include <string.h>
    #include <lua.h>
    #include <lauxlib.h>
    #include <lualib.h>
    
    int main (void) {
      char buff[256];
      int error;
      lua_State *L = lua_open();   /* opens Lua */
      luaL_openlibs(L); // Lua 5.1 B+tch! 
    
      while (fgets(buff, sizeof(buff), stdin) != NULL) {
        error = luaL_loadbuffer(L, buff, strlen(buff), "line") ||
                lua_pcall(L, 0, 0, 0);
        if (error) {
          fprintf(stderr, "%s", lua_tostring(L, -1));
          lua_pop(L, 1);  /* pop error message from the stack */
        }
      }
    
      lua_close(L);
      return 0;
    }


Dazu gibt es einige Kapitel in Bücher und viele Onlineressourcen, deshalb, sollte dies der Fall sein, dann melde dich bitte wieder wenn einer der oben genannten "wahrscheinlichen (Not-)Fälle" eintreten.


So ich gehe jetzt mal für die W&R Klausur büffeln.
Mit freundlichen Grüßen,
Julien
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

7

20.04.2015, 22:09

@Julién

Danke für die doch recht ausführliche Antwort :).

GlowDragon

Frischling

Beiträge: 66

Wohnort: Bayern

Beruf: Informatikstudent

  • Private Nachricht senden

8

24.04.2015, 14:29

Gibt es keinen Thanks-Button? Danke für deinen sehr interessanten Beitrag, Julién! Ich lerne momentan Assembler, aber kam noch nicht wirklich auf die Idee, dass es gängig ist, damit Spiele zu modifizieren, die keine Schnittstelle bieten und nicht dekompiliert werden können. Liegt wahrscheinlich daran, dass ich lange mit dem Game Maker und Java entwickelt habe. :rolleyes:

Werbeanzeige