✓英語|韓文(한국어)
皮卡丘排球(対戦ぴかちゅ~ ビーチバレー編)是一款古老的Windows 遊戲,由「(C) SACHI SOFT / SAWAYAKAN 程式設計師」和「(C) 的原始碼資料庫上的原始程式碼儲存庫。是透過反向獲取的設計原始遊戲的機器程式碼的核心部分(包括物理引擎和人工智慧)並將其實現為 JavaScript。
您可以在網站上玩這個遊戲:https://gorisanson.github.io/pikachu-volleyball/en/
git clone https://github.com/gorisanson/pikachu-volleyball.git
cd pikachu-volleyball
node v16
和npm v8
。) npm install
npm run build
npx http-server dist
http://localhost:8080
。對於確切的 URL,應該可以在終端上列印的訊息中找到它。) 物理引擎:物理引擎,用於計算球和玩家(皮卡丘)的位置,包含在檔案src/resources/js/physics.js
中。 (該檔案還包含在與電腦對戰時確定電腦鍵盤輸入的AI。)該原始碼檔案是透過對原始遊戲機器碼位址00403dd0處的函數進行逆向工程獲得的。
渲染:PixiJS 庫用於渲染遊戲。
有關其他詳細信息,請參閱src/resources/js/main.js
上的評論。
逆向工程使用的主要工具如下。
Ghidra 用於將機器碼反編譯為 C 程式碼。乍一看,反編譯的 C 程式碼看起來難以理解。原因之一是反編譯的 C 程式碼中的變數名稱( iVar1
、 iVar2
、...)和函數名稱( FUN_00402dc0
、 FUN_00403070
、...)沒有意義。但是,在作弊引擎的幫助下,我可以找到一些重要變數的位置——球和球員的 x、y 座標。從變數的位置讀取,反編譯的 C 程式碼是可以理解的! OllyDbg 用於更改機器代碼的特定部分。例如,製作較慢的遊戲版本,以便更容易計算「準備好了嗎?」的幀數。遊戲新一輪開始的消息。 Resource Hacker 用於提取遊戲的資產(精靈和聲音)。
如果沒有鍵盤輸入,一段時間後開始AI對AI比賽。原版遊戲中,比賽時間只有40秒左右。但在此 JavaScript 版本中,AI 與 AI 的比賽沒有時間限制,因此您可以隨意觀看。