✓ Anglais | coréen (한국어)
Pikachu Volleyball (対戦ぴかちゅ~ ビーチバレー編) est un ancien jeu Windows développé par « (C) SACHI SOFT / SAWAYAKAN Programmers » et « (C) Satoshi Takenouchi » en 1997. Le code source de ce référentiel est obtenu par voie inverse. concevoir la partie centrale de la machine code - y compris le moteur physique et l'IA - du jeu original et son implémentation en JavaScript.
Vous pouvez jouer à ce jeu sur le site : https://gorisanson.github.io/pikachu-volleyball/en/
git clone https://github.com/gorisanson/pikachu-volleyball.git
cd pikachu-volleyball
node v16
et npm v8
.) npm install
npm run build
npx http-server dist
http://localhost:8080
. Pour l'URL exacte, elle est censée se trouver sur les messages imprimés sur votre terminal.) Moteur physique : Le moteur physique, qui calcule la position du ballon et des joueurs (Pikachus), est contenu dans le fichier src/resources/js/physics.js
. (Ce fichier contient également l'IA qui détermine la saisie au clavier de l'ordinateur lorsque vous jouez contre votre ordinateur.) Ce fichier de code source est obtenu par ingénierie inverse de la fonction à l'adresse 00403dd0 du code machine du jeu original.
Rendu : la bibliothèque PixiJS est utilisée pour le rendu du jeu.
Reportez-vous aux commentaires sur src/resources/js/main.js
pour d'autres détails.
Les principaux outils utilisés pour l’ingénierie inverse sont les suivants.
Ghidra est utilisé pour décompiler le code machine en code C. À première vue, le code C décompilé semblait incompréhensible. L'une des raisons était que les noms de variables ( iVar1
, iVar2
, ...) et les noms de fonctions ( FUN_00402dc0
, FUN_00403070
, ...) dans le code C décompilé n'ont aucun sens. Mais, avec l'aide de Cheat Engine, j'ai pu trouver l'emplacement de certaines variables importantes : coordonnées x, y du ballon et des joueurs. Et en lisant l'emplacement des variables, le code C décompilé était compréhensible ! OllyDbg a été utilisé pour modifier une partie spécifique du code machine. Par exemple, pour créer une version plus lente du jeu afin qu'il soit plus facile de compter le nombre d'images de « Prêt ? » message au début d'un nouveau tour dans le jeu. Resource Hacker a été utilisé pour extraire les actifs (sprites et sons) du jeu.
S'il n'y a pas de saisie au clavier, la correspondance AI vs AI démarre après un certain temps. Dans le jeu original, le match ne dure qu’environ 40 secondes. Mais dans cette version JavaScript, il n'y a pas de limite de temps pour le match IA contre IA, vous pouvez donc le regarder aussi longtemps que vous le souhaitez.