✓ Englisch | Koreanisch (한국어)
Pikachu Volleyball (対戦ぴかちゅ~ ビーチバレー編) ist ein altes Windows-Spiel, das 1997 von „(C) SACHI SOFT / SAWAYAKAN Programmers“ und „(C) Satoshi Takenouchi“ entwickelt wurde. Der Quellcode in diesem Repository wird durch Umkehrung gewonnen Engineering des Kernteils des Maschinencodes – einschließlich der Physik-Engine und der KI – des Originalspiels und deren Implementierung in JavaScript.
Sie können dieses Spiel auf der Website spielen: https://gorisanson.github.io/pikachu-volleyball/en/

git clone https://github.com/gorisanson/pikachu-volleyball.git
cd pikachu-volleyballnode v16 und npm v8 versuchen.) npm installnpm run buildnpx http-server disthttp://localhost:8080 . Die genaue URL finden Sie in den gedruckten Nachrichten auf Ihrem Terminal.) Physik-Engine: Die Physik-Engine, die die Position des Balls und der Spieler (Pikachus) berechnet, ist in der Datei src/resources/js/physics.js enthalten. (Diese Datei enthält auch die KI, die die Tastatureingabe des Computers bestimmt, wenn Sie gegen Ihren Computer spielen.) Diese Quellcodedatei wird durch Reverse Engineering der Funktion an der Adresse 00403dd0 des Maschinencodes des Originalspiels gewonnen.
Rendering: Die PixiJS-Bibliothek wird zum Rendern des Spiels verwendet.
Weitere Details finden Sie in den Kommentaren zu src/resources/js/main.js .
Die wichtigsten für das Reverse Engineering verwendeten Tools sind die folgenden.
Ghidra wird zum Dekompilieren des Maschinencodes in C-Code verwendet. Der dekompilierte C-Code sah auf den ersten Blick unverständlich aus. Einer der Gründe war, dass die Variablennamen ( iVar1 , iVar2 , ...) und Funktionsnamen ( FUN_00402dc0 , FUN_00403070 , ...) im dekompilierten C-Code bedeutungslos waren. Mithilfe der Cheat Engine konnte ich jedoch die Position einiger wichtiger Variablen ermitteln – X- und Y-Koordinaten des Balls und der Spieler. Und anhand der Position der Variablen war der dekompilierte C-Code verständlich! OllyDbg wurde zum Ändern eines bestimmten Teils des Maschinencodes verwendet. Um beispielsweise eine langsamere Version des Spiels zu erstellen, damit es einfacher ist, die Anzahl der Frames von „Bereit?“ zu zählen. Nachricht zum Beginn einer neuen Runde im Spiel. Resource Hacker wurde verwendet, um die Assets (Sprites und Sounds) des Spiels zu extrahieren.
Wenn keine Tastatureingabe erfolgt, wird nach einer Weile das AI-gegen-AI-Match gestartet. Im Originalspiel dauerte das Match nur etwa 40 Sekunden. Aber in dieser JavaScript-Version gibt es keine zeitliche Begrenzung für das AI-gegen-AI-Match, sodass Sie es so lange ansehen können, wie Sie möchten.