✓ อังกฤษ | เกาหลี(เกาหลี)
Pikachu Volleyball (対戦ぴかちゅ~ ビーチバレー編) เป็นเกม Windows เก่าซึ่งพัฒนาโดยโปรแกรมเมอร์ "(C) SACHI SOFT / SAWAYAKAN" และ "(C) Satoshi Takenouchi" ในปี 1997 ซอร์สโค้ดบนที่เก็บนี้ได้มาจากการย้อนกลับ วิศวกรรมส่วนหลักของรหัสเครื่อง — รวมถึงเอ็นจิ้นฟิสิกส์และ AI ของเกมต้นฉบับและนำไปใช้ใน 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 ที่แน่นอน ควรพบ URL นี้ในข้อความที่พิมพ์บนเทอร์มินัลของคุณ) เครื่องมือฟิสิกส์: เครื่องมือฟิสิกส์ซึ่งคำนวณตำแหน่งของลูกบอลและผู้เล่น (Pikachus) มีอยู่ในไฟล์ src/resources/js/physics.js
(ไฟล์นี้ยังมี AI ซึ่งกำหนดอินพุตคีย์บอร์ดของคอมพิวเตอร์เมื่อคุณเล่นกับคอมพิวเตอร์ของคุณ) ไฟล์ซอร์สโค้ดนี้ได้มาจากวิศวกรรมย้อนกลับฟังก์ชันตามที่อยู่ 00403dd0 ของรหัสเครื่องของเกมต้นฉบับ
การเรนเดอร์: ไลบรารี PixiJS ใช้สำหรับเรนเดอร์เกม
อ้างอิงความคิดเห็นบน src/resources/js/main.js
สำหรับรายละเอียดอื่นๆ
เครื่องมือหลักที่ใช้สำหรับวิศวกรรมย้อนกลับมีดังต่อไปนี้
Ghidra ใช้สำหรับถอดรหัสรหัสเครื่องเป็นรหัส C เมื่อดูครั้งแรก รหัส C ที่ถอดรหัสแล้วดูไม่สามารถเข้าใจได้ สาเหตุหนึ่งก็คือชื่อตัวแปร ( iVar1
, iVar2
, ...) และชื่อฟังก์ชัน ( FUN_00402dc0
, FUN_00403070
, ...) ในโค้ด C ที่ถอดรหัสแล้วนั้นไม่มีความหมาย แต่ด้วยความช่วยเหลือของ Cheat Engine ฉันสามารถค้นหาตำแหน่งของตัวแปรสำคัญบางอย่างได้ — พิกัด x, y ของลูกบอลและผู้เล่น และการอ่านจากตำแหน่งของตัวแปรทำให้เข้าใจโค้ด C ที่คอมไพล์แล้ว! OllyDbg ใช้สำหรับแก้ไขส่วนเฉพาะของรหัสเครื่อง ตัวอย่างเช่น หากต้องการสร้างเกมเวอร์ชันช้าลงเพื่อให้นับจำนวนเฟรมของ "Ready?" ได้ง่ายขึ้น ข้อความเมื่อเริ่มรอบใหม่ในเกม แฮ็กเกอร์ทรัพยากรถูกใช้เพื่อแยกเนื้อหา (สไปรต์และเสียง) ของเกม
หากไม่มีอินพุตจากแป้นพิมพ์ การจับคู่ AI กับ AI จะเริ่มต้นขึ้นหลังจากนั้นสักครู่ ในเกมต้นฉบับ การแข่งขันจะใช้เวลาประมาณ 40 วินาทีเท่านั้น แต่ในเวอร์ชัน JavaScript นี้ ไม่มีการจำกัดเวลาสำหรับการจับคู่ AI กับ AI ดังนั้นคุณจึงสามารถรับชมได้นานเท่าที่คุณต้องการ