Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Game Development
  2. Programming

الترميز بكسل هالكة التضاريس: كيفية جعل كل شيء ينفجر

by
Difficulty:IntermediateLength:LongLanguages:

Arabic (العربية/عربي) translation by Luthfiyyah (you can also view the original English article)

في هذا البرنامج التعليمي، سوف ننفذ التضاريس التدمير الكامل بكسل، في أسلوب ألعاب مثل القيادة اللحاء، والديدان. سوف تتعلم كيفية جعل العالم تنفجر أينما كنت إطلاق النار عليه--وكيفية جعل "الغبار" تسوية على أرض الواقع لخلق أرض جديدة.

ملاحظة: على الرغم من أن هذا البرنامج التعليمي هو مكتوب في تجهيز وجمعت مع جافا، يجب أن تكون قادراً على استخدام نفس الأساليب والمفاهيم في ما يقرب من أي بيئة تطوير اللعبة.


معاينة النتيجة النهائية

يمكنك تشغيل العرض نفسك، أيضا. WASD للتحرك، غادر انقر لإطلاق النار الرصاصات المتفجرة، والحق انقر للرش بكسل.


الخطوة 1: التضاريس

لدينا رمل sidescrolling، ستكون التضاريس ميكانيكي الأساسية اللعبة. غالباً ما يكون خوارزميات مشابهة صورة واحدة للنسيج في التضاريس، وآخر كقناع أبيض وأسود لتحديد وحدات البكسل التي هي صلب. في هذا العرض التوضيحي، التضاريس، ونسيج صورة واحدة، وكسل الصلبة استناداً إلى أنهم أم لا تتسم بالشفافية. النهج القناع الذي سيكون من الأنسب إذا كنت تريد تعريف خصائص كل بكسل، مثل كيف المرجح أنها سوف إزاحة أو نطاط كيف سيكون بكسل.

تقديم التضاريس، الرمل توجه بكسل ثابتة أولاً، ثم بكسل دينامية مع كل شيء آخر في الأعلى.

وقد التضاريس أيضا أساليب لمعرفة ما إذا كان بكسل ثابتة في مكان صلبة أم لا، وأساليب لإزالة وإضافة بكسل. ربما الطريقة الأكثر فعالية لتخزين الصورة كمجموعة الأبعاد 1. الحصول على مؤشر 1 د من إحداثي 2D بسيط جداً:

من أجل دينامية بكسل لترتد، سوف نحتاج ليتمكن من معرفة السطح العادي عند أي نقطة. تنفيذ حلقة مستمرة من خلال منطقة مربعة حول هذه النقطة المرجوة والعثور على كل بكسل الصلبة القريبة ومتوسط موقفهم. تأخذ متجه من ذلك الموقف إلى النقطة المرجوة، عكس وتطبيع ذلك. يوجد لديك عادي!

تمثل خطوط سوداء في الأوضاع الطبيعية للتضاريس في نقاط مختلفة.

هنا الطريقة التي تبدو في التعليمات البرمجية:


الخطوة 2: بكسل الحيوي والفيزياء

"التضاريس" نفسه يقوم بتخزين كل بكسل الثابتة غير المتحركة. الديناميكية بكسل بكسل في الحركة حاليا، ويتم تخزينها بشكل منفصل من بكسل ثابتة. وينفجر التضاريس ويستقر، بكسل الحصول على التبديل بين الدول والدينامية أنها إزاحة وتتصادم. يتم تعريف كل بكسل بعدد من الخصائص:

  • موقف والسرعة (مطلوب للفيزياء للعمل).
  • ليس فقط الموقع، ولكن أيضا بكسل في الموقع السابق. (ونحن يمكن أن تفحص بين نقطتين للكشف عن التضاربات.)
  • وتشمل الخصائص الأخرى بكسل للون والالتصاق، وبونسينيس.

أجل بكسل للتحرك، يحتاج موقفها لتقديمها مع سرعته. تكامل أويلر، بينما غير دقيقة لمحاكاة معقدة، بسيطة بما يكفي لتمكيننا من كفاءة نقل الجسيمات لدينا:

ElapsedTime هو مقدار الوقت المنقضي منذ آخر تحديث. يمكن أن تكون دقة أي المحاكاة مقطوعة تماما إذا elapsedTime متغير جداً أو كبيرة جداً. هذا ليس مثل كثير من مسألة حيوية بكسل، لكن سيكون لمخططات أخرى الكشف عن التصادم.

سوف نستخدم تيميستيبس ذات حجم ثابت، بأخذ الوقت المنقضي وتقسيم إلى قطع حجم ثابت. كل قطعة من "تحديث" كامل للفيزياء، مع أي اليسار عبر إرسالها إلى الإطار التالي.


الخطوة 3: اكتشاف الاصطدام

الكشف عن التضاربات لأعمالنا بكسل طيران بسيط برسم بعض الخطوط.

تم تطوير خوارزمية خط بريسينهام لعام 1962 برجل اسمه جاك هاء بريسينهام. حتى يومنا هذا، أنها استخدمت لرسم خطوط بسيطة مستعارة كفاءة. الخوارزمية العصي صارما للإعداد الصحيحة ويستخدم معظمها والطرح من أجل خطوط المؤامرة افيسينتلي. اليوم أننا سوف تستخدم لأغراض مختلفة: الكشف عن التصادم.

أنا باستخدام التعليمات البرمجية التي اقترضت من مقال عن gamedev.net. في حين أن معظم تطبيقات خوارزمية بريسينهام لخط reorders ترتيب الرسم، هذا واحد بعينه يسمح لنا بتفحص دائماً من البداية إلى النهاية. الأمر مهم للكشف عن التصادم، إلا أننا سوف يكون الكشف عن التضاربات في نهاية خاطئة المسار كسل.

المنحدر جزء أساسي من خوارزمية بريسينهام للخط. الخوارزمية تعمل من خلال تقسيم المنحدر في "صعود" وعناصر "تشغيل". إذا، على سبيل المثال، كان المنحدر للخط 1/2، نحن رسم الخط بوضع نقطتين أفقياً، الذهاب حتى (الأيمن والأيسر) واحد، وهما ثم أكثر.

الخوارزمية أنا يظهر هنا حسابات لجميع السيناريوهات، ما إذا كان لديه الخطوط منحدر الإيجابية أو السلبية أو إذا كانت رأسية. ويشرح الكاتب كيف أنه مستمد في gamedev.net.


الخطوة 4: الاصطدام المناولة

بكسل الحيوي القيام بأحد أمرين خلال حادث تصادم.

  • إذا أنها تتحرك ببطء ما يكفي، تتم إزالة بكسل دينامية وإضافة واحدة ثابتة للتضاريس حيث أنها اصطدمت. الخلاف سيكون لدينا الحل الأبسط. في خوارزمية بريسينهام للخط، فمن الأفضل لتتبع نقطة سابقة ونقطة الحالية. عندما يتم الكشف عن وجود تضارب، ستكون "النقطة الحالية" بكسل الصلبة أول الشعاع يضرب، بينما "النقطة السابقة" هي مساحة فارغة قبل ذلك. النقطة السابقة هو بالضبط مكان فيه ونحن بحاجة إلى التمسك بكسل.
  • إذا أنها تتحرك سريع جداً، ثم نحن ترتد التضاريس. هذا حيث يأتي لدينا الخوارزمية العادية السطحية! تعكس سرعة الكرة الأولى عبر العادي لأنها ترتد.
  • الزاوية جانبي العادي هو نفسه.


الخطوة 5: الرصاص وانفجارات!

قانون الرصاص بالضبط مثل الديناميكية بكسل. تم دمج الحركة بنفس الطريقة، والكشف عن التصادم يستخدم نفس الخوارزمية. أن الفرق الوحيد هو التعامل مع الاصطدام

بعد الكشف عن وجود تضارب، رصاصات تنفجر عن طريق إزالة كل بكسل ثابتة داخل دائرة نصف قطرها، وثم وضع دينامية بكسل في مكانها مع سرعات ما أشار إلى الخارج. أنا استخدم دالة لمسح منطقة مربعة حولها دائرة نصف قطرها في انفجار لمعرفة ما الذي بكسل لإزاحة. بعد ذلك، يتم استخدام المسافة كسل من المركز لتأسيس بسرعة.


الخطوة 6: لاعب

اللاعب ليست جزءا أساسيا من ميكانيكي التضاريس ديستروكتابل، بل أنها تنطوي على بعض الكشف عن التصادم الذي سيكون بالتأكيد صلة بالمشاكل التي سوف تصل في المستقبل. سوف اشرح كيف يتم الكشف عن التصادم والتعامل معها في العرض التوضيحي للاعب.

  1. لكل حافة، حلقة من زاوية واحدة إلى التالية، فحص كل بكسل.
  2. في حالة صلبة بكسل، تبدأ في مركز اللاعب وضرب مسح نحو تلك بكسل في كنت بكسل صلبة.
  3. نقل اللاعب بعيداً عن البكسل الصلبة الأولى يمكنك ضرب.

الخطوة 7: تحسين

الآلاف من بكسل يتم معالجة في نفس الوقت، أدى قدرا كبيرا من الضغط على محرك الفيزياء. مثل أي شيء آخر، جعل هذا سريع أنصح باستخدام لغة بسرعة معقولة. يتم تصنيف التجريبي في جاوة.

يمكنك القيام بالأشياء تحسين في مستوى خوارزمية كذلك. على سبيل المثال، يمكن أن يكون عدد الجسيمات من التفجيرات بمقدار أقل قرار تدمير. عادة ما نجد كل بكسل وتحويلها إلى بكسل حيوي 1 x 1. بدلاً من ذلك، تفحص كل بكسل 2 × 2 أو 3 × 3، وإطلاق دينامية بكسل من هذا الحجم. نحن نستخدم في العرض 2 × 2 بكسل.

إذا كنت تستخدم جافا، وجمع القمامة سيكون موضوعا. سوف تجد JVM دورياً الكائنات في الذاكرة المستخدمة بعد الآن، مثل بكسل الديناميكية التي يتم تجاهل مقابل ثابت بكسل، ومحاولة التخلص من تلك لإفساح المجال أمام مزيد من الكائنات. حذف الكائنات، وقتاً طن من الأشياء، على الرغم من، وفي كل مرة يقوم JVM تنظيف، لدينا لعبة سوف تجمد بإيجاز.

واحد الحلول الممكنة لاستخدام ذاكرة التخزين مؤقت من نوع ما. بدلاً من إنشاء/تدمير الكائنات طوال الوقت، يمكنك ببساطة إجراء كائنات ميتة (مثل الديناميكية بكسل) لإعادة استخدامها في وقت لاحق.

استخدام الأوليات حيثما كان ذلك ممكناً. على سبيل المثال، يجري استخدام الكائنات للمواقف والسرعات لجعل الأمور أصعب قليلاً لجمع القمامة. سيكون أفضل إذا كان يمكن تخزين كل شيء الأوليات في الصفيف أحادي الأبعاد.


خطوة 8: جعله "الخاصة بك"

وهناك العديد من مختلف الاتجاهات التي يمكنك اتخاذها مع هذا لعبة ميكانيكي. يمكن إضافة ميزات وتخصيصها بحيث تتطابق مع أي نمط اللعبة التي تريد.

على سبيل المثال، التصادم بين الديناميكية والثابتة بكسل يمكن التعامل معها بشكل مختلف. يمكن استخدام قناع اصطدام تحت الأرض لتعريف الالتصاق كل بكسل ثابتة، بونسينيس، والقوة، أو احتمال الحصول على فكها بسبب انفجار.

وهناك مجموعة متنوعة من الأشياء المختلفة التي يمكنك القيام بها للبنادق، وكذلك. الرصاص يمكن أن تعطي "عمق اختراق"، للسماح له بالتحرك من خلال العديد من بكسل قبل أن تنفجر. يمكن أيضا تطبيق الميكانيكا البندقية التقليدية، مثل نسبة متنوعة من النار، أو مثل بندقية، يمكن أن تطلق رصاصات متعددة في وقت واحد. يمكنك حتى، مثل للجسيمات نطاط، الرصاصات ترتد من المعدن بكسل.


الاستنتاج

تدمير 2D التضاريس ليست فريدة من نوعها تماما. على سبيل المثال، إزالة الكلاسيكية الديدان والدبابات أجزاء من التضاريس في التفجيرات. يستخدم الأمر اللحاء جسيمات نطاط المماثلة التي نستخدمها هنا. قد ألعاب أخرى كذلك، ولكن لم أسمع منهم حتى الآن. وأتطلع في رؤية ما سوف تفعله المطورين الآخرين مع هذا ميكانيكي.

وينفذ معظم ما لقد شرحت هنا تماما في العرض. الرجاء إلقاء نظرة على مصدرها، إذا كان أي شيء يبدو مبهماً أو مربكة. وأضاف لقد التعليقات إلى مصدر لجعلها واضحة قدر الإمكان. شكرا للقراءة!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.