مشروع المرحلة المبكرة يحاول تنفيذ لعبة Flash Game Incredibots 2 CE إلى TypeScript و Pixi.js.
لا تنطبق تعليمات بيئة التطوير فيما يلي على إصدار HTML5.
شكرا لك على تنزيل incredibots! احصل على استعداد للبناء والتحكم ومشاركة إبداعات الروبوت الخاصة بك في ملعب قائم على الفيزياء!
لتشغيل IncrediBots أو IncrediBOTS2 ، ببساطة فتح ملف incredibots.html أو incrediBOTS2.html في متصفح الويب مع تثبيت مشغل فلاش.
يتمتع!
يوجد رمز المصدر لعملاء لعبة IB1 و IB2 في SRC/IncrediBots و SRC/IncrediBOTS2. افتح ActionScript IDE من اختيارك (استخدمت Flex Builder 3) ، وقم بإنشاء مشروع جديد باستخدام الدليل المناسب. يجب تعيين ملف التطبيق الرئيسي Runnable على Main.as ، واستخدمت Param -Default-Frame Rate 30 كوسيطة مترجم. تأكد أيضًا من الارتباط بمكتبة flgui.swc في مجلد LIBS. يحتوي الرمز المصدر على عدد قليل من عبارات [التضمين] ، وأعتقد أنه قد يعمل فقط مع Flex Builder ، ولكن من المحتمل أن يكون لدى IDEs طرق مماثلة لربط الأصول.
بمجرد إعداد كل شيء وتجميع المشروع بشكل صحيح ، يجب على IDE إنشاء مجلد Bin-Debug (أو شيء مشابه) ، يحتوي على ملف SWF وملف HTML الذي يدمج SWF. الآن ستتمكن من إجراء تغييرات على الكود ورؤيتها تنعكس في SWF المصممة!
سأقدم نظرة عامة أساسية على الفصول الرئيسية في الرمز الجانبي للعميل ، على أمل توضيح كيفية عمل كل شيء بالضبط. فئة التطبيق الرئيسية هي MAIN.as ، والتي تهتم بإضافة مستمعي الأحداث إلى المسرح ، وتحديد فئة "وحدة التحكم" نشطة. يمكنك التفكير في وحدة تحكم على أنها تمثل نوعًا واحدًا من "الشاشة". هناك واحدة في القائمة الرئيسية ، ثم واحدة لشاشة اللعبة الرئيسية ، مع فئات فرعية لجميع الأنواع المختلفة من شاشات اللعبة الرئيسية (أي 1 فئة فرعية لكل برنامج تعليمي ، 1 لوضع صندوق الرمل ، 1 لإنشاء وضع التحدي ، إلخ). إن الفئة (للأسف إلى حد ما متجانسة) التي تتولى معظم وظائف تحرير الروبوت الرئيسية هي التحكم في الأزرار ، والتي لديها طرق للاستجابة لجميع الأزرار وخيارات القائمة المتوفرة أثناء تحرير روبوت ، وكذلك طرق التعامل مع إنشاء قطع غيار الروبوت وحذفها وتحديدها وتحريرها. يمثل مجموعة Allparts في ControlRergame الروبوت الذي يعمل حاليًا ، كمجموعة من الأجزاء. كما أنه يتعامل مع البدء وإيقاف محاكاة Box2D
تحتوي حزمة الأجزاء على تعريفات فئة لكل نوع من "جزء" متاح عند إنشاء روبوت. IE Circle ، المستطيل ، المفصل الثابت ، المفصل الدوار ، الدفاعات ، إلخ الإعدادات ، قيود التحدي).
تحتوي حزمة الإجراءات ببساطة على قائمة بالإجراءات التي يمكن أن يقوم بها المستخدم عند تحرير وضع التحرير. يتم استخدام هذه الإجراءات فقط من خلال ميزات "التراجع" و "إعادة" ، ويعرف كل إجراء ما يجب القيام به للتراجع أو إعادةه.
تعالج فئة الإدخال جميع تفاعلات لوحة المفاتيح والماوس مع عناصر غير GUI ، وترسل المكالمات إلى الأساليب المناسبة (عادة في التحكم في التحكم) للرد على نقرة ماوس معينة أو الضغط على المفتاح.
تتعامل فئة السحب مع رسم الروبوتات على الشاشة. هناك حالتان يحتاجان إلى التعامل معه: وضع التحرير ، ووضع المحاكاة. عندما يكون في وضع التحرير ، فإنه يرسم جميع الأشكال على الشاشة استنادًا إلى المجموعة الحالية من الأجزاء. عندما يكون في وضع SIM ، فإنه يرسم الأشكال بناءً على تحديد موقع تمثيل Box2D لتلك الأجزاء ، ولكنه يحتاج إلى جعلها تبدو كما هي في كلتا الحالتين. من الناحية النظرية ، فإن هذا الفئة معيارية إلى حد ما ، ويجب أن تكون قادرة على تبديلها بفئة بديلة تستخدم للرسم على الشاشة بسهولة إلى حد ما ، في حالة كتابة طرقك الخاصة للتعامل مع رسومات الروبوت.
تحتوي حزمة واجهة المستخدم الرسومية على مجموعة من الفصول التي تبني مختلف ألواح واجهة المستخدم الرسومية ونوافذ في جميع أنحاء اللعبة. الأهم من ذلك هو فئة Saveloadwindow ، التي تتعامل مع عرض قائمة من الروبوتات المتاحة للتحميل من الخادم. كما أنه يتعامل مع الدرجات العالية ، وتوفير وتحميل الروبوتات ، والإعادة ، والتحديات ، والبحث عن الروبوتات وما شابه. يتم تعطيلها حاليًا ، نظرًا لأن الخوادم تنخفض ، ولكن إذا ارتفع خادم آخر على الإطلاق ، فيجب تعديل هذه الفئة. تشمل الفصول الأخرى في هذه الحزمة guiwindow ، وهي الفئة الأساسية لجميع الحوارات المنبثقة الصغيرة في جميع أنحاء اللعبة ، ومكونات مثل Guibutton ، Guitextarea ، إلخ.
أخيرًا ، تتعامل فئة قاعدة البيانات مع جميع التفاعلات مع الخادم. إنه يحتوي على عمليات لتوفير وتحميل الروبوتات والإعادة ، وكذلك للحصول على قوائم كل من هذه ، وتسجيل الدخول ، وإنشاء مستخدم جديد ، وتحميل/تنزيل الدرجات ، وعدد قليل. كل عملية لها وظيفة رد اتصال مقابلة ، والتي تعالج النتيجة التي يتم إرجاعها بواسطة الخادم وإرجاع البيانات مرة أخرى إلى الفئة المناسبة للعرض. تجدر الإشارة إلى وظائف putxintobytearray و extractxfrombytearray ، حيث X هي واحدة من "الروبوت" أو "إعادة" أو "تحدي". يتم استخدام هذه الوظائف لقراءة البيانات والكتابة داخل اللعبة من أو من أو من فلاش BytearRay. ثم يتم إرسال الروبوت أو إعادة التشغيل أو التحدي إلى الخادم كجزء من بيانات النشر لعنوان urlrequest. يتم استخدام هذه الوظائف أيضًا من خلال ميزات "الاستيراد" و "التصدير" ، كطريقة سهلة للتحويل بين الكائنات في اللعبة والنص. إذا كنت ترغب في إضافة ميزات تحتاج إلى حفظها مع روبوت أو إعادة أو تحدي ، فمن المحتمل أن تحتاج إلى وضعها في إحدى هذه الوظائف بشكل صريح.
رمز الخادم هو كل شيء موجود في المجلد الفرعي HTDOCS. إنه مكتوب بالكامل في PHP. سأتحدث عن رمز خادم قاعدة البيانات أولاً.
رمز قاعدة البيانات في ./src/htdocs/incredibots budap1 أو 2]/database/directory. تم بناء IncrediBots باستخدام Amazon S3 و SimpledB كخلفية. يمكنك قراءة المزيد عن هذه في http://aws.amazon.com. تتم كتابة معظم رمز خادم DB على وجه التحديد مع وضع ذلك في الاعتبار ، وللأسف لم أتمكن من إعادة تهيئته أبدًا بحيث يتم استخلاص طبقة قاعدة البيانات ضمن حزمة مشتركة. وبالتالي ، قد يكون هناك الكثير من العمل للتبديل إلى شيء مثل MySQL ، على الرغم من أنه سيعمل تمامًا وكذلك SimpledB و S3 إذا تم الحفاظ عليه بشكل صحيح.
لاحظ أن IncrediBots يستخدم أيضًا MySQL من خلال قاعدة بيانات منتديات PHPBB. نظرًا لأن لدينا تسجيل دخول واحد لكل من اللعبة والمنتديات ، يتم إدارة جميع حسابات المستخدمين من خلال جدول PHPB_USERS للمنتديات. لهذا السبب يتم تضمين رمز منتديات PHPBB في الحزمة ، اضطررت إلى إجراء بعض التعديلات على رمز المنتديات للحصول على تسجيل الدخول الفردي ، بالإضافة إلى بعض الميزات الأخرى ، مثل القدرة على تضمين الروبوتات في منشورات المنتدى. ومع ذلك ، يجب أن يعمل تسجيل الدخول الأساسي وإنشاء حسابات جديدة بشكل جيد مع أي إصدار من تشغيل PHPBB ، ويجب ألا يكون من الصعب للغاية تغيير وظيفة تسجيل الدخول للعمل مع أي قاعدة بيانات/نظام تريده.
يجب أن يعمل رمز قاعدة البيانات الحالي بشكل جيد خارج المربع مع أي حساب Amazon AWS. الأشياء الوحيدة التي يجب أن تحتاج إلى تعديل هي بيانات الاعتماد في الملف common_variables.php. بصرف النظر عن ذلك ، يتوافق كل ملف GGSCORES _*. يتم توجيه جميع المكالمات في البداية إلى ggscores.php ، والتي تتضمن الملف المناسب المقابل لمعلمة "OP". كل عملية ثم تتحدث إلى قاعدة بيانات Amazon (أو جدول PHPBB_USERS في MySQL) وتردد استجابة للعميل. يتم إرسال البيانات الثنائية لجميع الروبوتات والإعادة والتحديات إلى الخادم عبر بيانات نشر HTTP ، ويتم حفظها في S3 كقاطب ، مع كمية صغيرة من البيانات الوصفية لكل مخزنة في SimpledB.
ملاحظة: قد يكون من الجيد إضافة شيء جيد أن تكون فكرة جيدة عن التحقق من صحة MD5 عند إرسال البيانات الثنائية من العميل إلى الخادم ، للحماية من فساد الحزم. أعلم أن هذا قد حدث في الماضي عدة مرات ، وعندما يحدث ذلك ، يصبح الروبوت/إعادة التشغيل المتأثر/التحدي فاسدًا ، ويضيع إلى الأبد ... (Dun Dun Dun!)
يحتوي بقية رمز الخادم على مكونات موقع IncrediBots في الغالب. تحتوي صفحة index.php على رمز لتضمين SWF وعرضه بشكل صحيح. من أجل استضافة SWF ، يمكنك فقط تحميل ملف SWF الذي ينتج عن بناء العميل ، المسمى incredibots.swf (أو incredibots2.swf) إلى نفس الدليل مثل index.php. صفحة المستخدمين.
تم تصميم Incredibots في الأصل من قبل Ryan Clark ، برمجته Oliver Trujillo ، مع الفن من Matt Parry. يجب أيضًا أن يذهب مبلغ كبير من الائتمان إلى Erin Catto ومحرك Pox2d Physics ، بالإضافة إلى منفذ الفلاش الذي تم بناء لعبتنا عليه. http://www.box2d.org/ http://box2dflash.sourceforge.net/
من المحتمل أن يكون Incredibots هي اللعبة التي حصلت عليها أكثر متعة في العمل. لقد كان انفجارًا يفحص جميع الإبداعات المجنونة التي قام بها مجتمع Incredibots ، وأتمنى لك كل التوفيق في الحفاظ على مستمرة. هتافات وبناء روبوت سعيد!
- أوليفر