✓ الإنجليزية | الكورية (한국어)
Pikachu Volleyball (対戦ぴかちゅ~ ビーチバレー編) هي لعبة قديمة تعمل بنظام Windows تم تطويرها بواسطة "(C) SACHI SOFT / SAWAYAKAN Programmers" و"(C) Satoshi Takenouchi" في عام 1997. يتم الحصول على الكود المصدري في هذا المستودع عن طريق العكس هندسة الجزء الأساسي من كود الآلة - بما في ذلك المحرك الفيزيائي والذكاء الاصطناعي - للعبة الأصلية وتنفيذها في JavaScript.
يمكنك لعب هذه اللعبة على الموقع الإلكتروني: https://gorisanson.github.io/pikachu-volleyball/en/

git clone https://github.com/gorisanson/pikachu-volleyball.git
cd pikachu-volleyballnode v16 و npm v8 .) npm installnpm run buildnpx http-server disthttp://localhost:8080 . بالنسبة لعنوان URL الدقيق، من المفترض أن يكون موجودًا في الرسائل المطبوعة على جهازك الطرفي.) محرك الفيزياء: محرك الفيزياء الذي يقوم بحساب موضع الكرة واللاعبين (بيكاتشوس) موجود في الملف src/resources/js/physics.js . (يحتوي هذا الملف أيضًا على الذكاء الاصطناعي الذي يحدد إدخال لوحة المفاتيح للكمبيوتر عندما تلعب ضد جهاز الكمبيوتر الخاص بك.) يتم الحصول على ملف التعليمات البرمجية المصدر هذا عن طريق الهندسة العكسية للوظيفة على العنوان 00403dd0 من رمز الجهاز الخاص باللعبة الأصلية.
التقديم: يتم استخدام مكتبة PixiJS لعرض اللعبة.
راجع التعليقات على src/resources/js/main.js للحصول على تفاصيل أخرى.
فيما يلي الأدوات الرئيسية المستخدمة في الهندسة العكسية.
يتم استخدام Ghidra لفك كود الجهاز إلى كود C. للوهلة الأولى، بدا رمز C الذي تم فك ترجمته غير مفهوم. أحد الأسباب هو أن أسماء المتغيرات ( iVar1 , iVar2 , ...) وأسماء الوظائف ( FUN_00402dc0 , FUN_00403070 , ...) في كود C الذي تم فك ترجمته لا معنى لها. ولكن بمساعدة Cheat Engine، تمكنت من العثور على موقع بعض المتغيرات المهمة - إحداثيات x وy للكرة واللاعبين. وبالقراءة من موقع المتغيرات، كان كود C الذي تم فك ترجمته مفهومًا! تم استخدام OllyDbg لتغيير جزء معين من كود الجهاز. على سبيل المثال، لإنشاء نسخة أبطأ من اللعبة بحيث يكون من الأسهل حساب عدد إطارات "جاهز؟" رسالة عند بداية جولة جديدة في اللعبة. تم استخدام Resource Hacker لاستخراج أصول اللعبة (العفاريت والأصوات).
إذا لم يكن هناك إدخال من لوحة المفاتيح، فستبدأ مطابقة الذكاء الاصطناعي مقابل الذكاء الاصطناعي بعد فترة من الوقت. في اللعبة الأصلية، تستمر المباراة لمدة 40 ثانية فقط. ولكن في إصدار JavaScript هذا، لا يوجد حد زمني لمباراة الذكاء الاصطناعي مقابل الذكاء الاصطناعي، لذا يمكنك مشاهدتها للمدة التي تريدها.