المعيار إميلي

الفكرة الرئيسية


تمت كتابة الكثير من الكتب والمقالات والبرامج التعليمية حول تقييم التطبيقات والمحركات وأنظمة البرامج المختلفة.


إليكم ما تقدمه لنا ويكيبيديا القديمة حول هذا الموضوع:


اختبار الأداء ، المعيار (اختبار اللغة الإنجليزية) - مهمة التحكم اللازمة لتحديد خصائص الأداء المقارنة لنظام الكمبيوتر.

ولكن ماذا لو وصلنا إلى مسألة تقييم محركات اللعبة قليلاً من الجانب الآخر؟ جميع محركات اللعبة و SDKs لتطوير اللعبة (وليس فقط) غالبًا ما تعلن عن نفسها كأدوات بديهية للغاية وسهلة الهضم. نحن نبيع البساطة للتعلم ، يتم عرض منحنى رائع للتعلم والدخول ، أمثلة خفيفة ورائعة ، حيث تخلق شاشة واحدة من الكود ، عند إطلاقها ، نوعًا من السحر الرائع. لذلك ، استعدادًا لحدث Ludum Dare المرتقب ، قررت مرة أخرى أن أنظر حولي وأرى ما الذي تقدمه "الأسواق" لإيميلي البسيطة - شخص كان يعمل في تطوير اللعبة لمدة أسبوع دون عام. وهذا هو ، واحدة من مجموعات من الناس من CA التي تبيع هذه الصفات المدهشة للغاية من السهل هضم المحرك.


بيتر جريفين ، مثلما نحن في التفكير ، ما هو محرك اللعبة الذي يجب اتخاذه من أجل التنمية


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


حول المعيار


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


"التكوين" أو عني


أنا مطور جافا. تجربة التنمية الصناعية 5+ سنوات. أيضا في العمل كتبت قليلا في جافا سكريبت ، لوا (حقا ، حقا قليلا) ، قذيفة. التعليم التقني العالي. لم أذهب إلى دورات التصميم ، ولم أتعلم تصميم اللعبة ، وكنت فقط من عشاق المتحمسين لمختلف ألعاب الكمبيوتر. في العام الماضي ، أصبح مهتمًا بإنشاء أبسط ألعاب الكمبيوتر.


عن المهمة


تم اختيار مشروع اختبار لاستنساخ لعبة Doodle Jump. أنا متأكد من أن الكثير من الناس يعرفونها أو يلعبونها ، إنها لعبة رائعة جدًا ومتطورة جدًا لأجهزة Android.


لعبة القفز خربش الأصلي


ستكون اللائحة على النحو التالي:


  1. كل محرك لديه 4 ساعات من الوقت. يتضمن ذلك الدراسة ، التعارف ، اختيار أنفك ، محاولة كتابة نموذج أولي ، تصحيح أخطاء اللعبة ، بشكل عام ، دورة كاملة من إنشاء اللعبة.
  2. كل نصف ساعة ، في استراحة قصيرة ، سأحاول إصلاح ما تم القيام به لتصحيح عملي بطريقة أو بأخرى ، ولتخطيط خطة عمل أخرى ، وتقديم ملاحظات ، وملاحظات ، وما إلى ذلك.
  3. قبل البدء في اختبار كل محرك ، سنحاول تحليل مشروع اللعبة إلى عناصره المكونة من أجل تخصيص وحدات تقليدية لهم. وبالتالي ، نقيس "إنتاجية" مطور اللعبة لكل محرك في الببغاوات ويمكننا مقارنة النتائج ليس بالكلمات ، ولكن على الأقل في بعض الأرقام.

تحلل اللعبة إلى مكونات


في شكل تجريدي للغاية وأعلى مستوى ، أرى نفسي مكونًا أساسيًا للعبة مثل هذا:


  1. المشغل (العفريت ، سلوك القفز ، رد الفعل على الأزرار المضغوطة)
  2. كائنات المستوى: المنصات ، الأعداء ، إلخ.
  3. الفيزياء: سرعة قفزة اللاعب ، تسارع السقوط الحر ، يجب أن تعالج المنصات الاصطدامات فقط إذا قفزت من أعلى وتسمح للاعب بالمرور عبره إذا عبره من أسفل المنصة.
  4. إنشاء المستوى الإجرائي: التهيئة والإضافة إلى المستوى (إلى الأماكن التعسفية ، ولكن مع بعض القواعد والقيود) على ذبابة منصات وأعداء جدد ، مما يخلق حالة لعبة جذابة للاعب
  5. "كاميرا" تتبع المشغل وهو يتحرك للأعلى. يجب أن تبقي الكاميرا المشغل في الرؤية للمشغل وأن "ترتد" معه تدريجيًا ، مع عرض منصات جديدة تظهر في منطقة العرض (في رؤية الكاميرا)
  6. Game Over آلية الزناد. يخسر اللاعب إذا وصل إلى الحافة السفلى للمنطقة المرئية (بعد أن قفز بالفعل مرة واحدة على الأقل)
  7. التهديف لاعب. سنقوم فقط بتحديث عداد ارتفاع اللاعب. سنقوم بتحديث العداد وفقًا لآخر منصة تم الوصول إليها (المنصة التي دفع منها آخر مرة)
  8. HUD : تقدم لاعب العرض. عرض الارتفاع.

للبساطة ، نحن نخصص لكل عنصر نقطة واحدة من وحدات الببغاء لدينا. إجمالي الحد الأقصى - أي النسخة الكاملة للعب من المشروع هي 8 نقاط.


أدناه هي الأصول المستخدمة في العرض. هذه هي أشكال مرسومة بخط اليد (لست فنانًا ، كما ترون) رموزًا للحروف والمنصات بأبعاد 64 × 64 بتنسيق * .png.


شخصيتنا كذاب


أفضل المنصات في العالم


وأيضا إعطاء اثنين من المخططات الانسيابية:


  1. وبالتالي ، سيتم تنفيذ حساب "النوع الاجتماعي" للاعب (تذكر ، مع قفزة لأعلى ، تحولات الشاشة ، والمغادرة على حافة الشاشة تعني خندق)
  2. وبالتالي نقوم بحساب وتحديث السرعة العمودية ( y_velocity y والإحداثي y للاعب مع كل إيقاع ، ويتأثر بعاملين اثنين: تسارع GRAVITY ( GRAVITY ) والمنصات ، عند الوصول ، يتم صد المشغل بسرعة مستعادة بالكامل
  3. تم ترك خوارزمية حساب السرعة الأفقية ، مثل الآليات الأخرى ، خارج نطاق المقالة.

بالمناسبة ، لا يزال لدي أسئلة:


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

سأكون سعيدًا جدًا بأفكارك ومقتطفات حياتك واقتراحاتك في التعليقات و PM حول هاتين المسألتين بلا شك المتعلقة بتصميم اللعبة.


عن المحركات


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


المنزلقYAPخبرة في المحرك (0 - لا ، 1 - هناك خبرة وبعض الألعاب المكتوبة البسيطة ، 2 - يتقن المحرك على طول وعبرخبرة في YP (0 - لا ، 1 - هناك خبرة ومعرفة جيدة وفهم جيد للبناء ، وتعابير اللغة ، 2 - إيجابيات لهذا YP
Defoldلوا01
Love2Dلوا11
FXGLجافا02

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


لماذا لا الوحدة / محرك غير واقعي / محرك رائع آخر الخ؟


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


اختيار محرك تطوير اللعبة


يتم القيام بذلك على أفضل وجه بواسطة محركات بسيطة وصغيرة ، مع مجموعة محدودة من الميزات ، ربما ليس مع أفضل توليف ونظام بيئي ، ولكن البساطة والقيود لها أيضًا جمالها الخاص. مع مجموعة محدودة فقط من الأدوات - وفي حالة Love2D ، فإن أداتك هي الكود الخاص بك وليس أكثر من ذلك ، فأنت تركز على المروحة ، على كتابة شيء رائع ، أو إحياء الشخصية أو بيئة المشغل. تعمل المحركات الأكثر تعقيدًا بالفعل على توسيع اختيارك ، وتتدفق كتابة التعليمات البرمجية بسلاسة إلى العديد من الأشياء: كتابة البرامج النصية (الكود) ، وربط البرامج النصية ، ورصد الأصول ، وإضافة التكوينات ، وإعادة تعريف التكوينات ، وخلط المكونات الإضافية مع الأطراف الثالثة ، والكتابة النصية والتهيئة للمكونات الإضافية لجهة خارجية ، والنقرات المتعددة على العشرات من العشرات من الحوارات والنوافذ ... دعنا نقول فقط إنني ما زلت خائفًا من هذه المحركات القوية والمتطورة بلا شك لتطوير الألعاب. حسنًا ، لا أريد تذكر C # / JS / C ++ مرة أخرى والكتابة عليها.


سألخص حافزي عند اختيار المحرك الذي يحتوي على رابط لهذا الفيديو ، حيث يبدو لي أن المؤلف قد أزال حرفيًا حرفيًا من لغتي ما حاولت صياغته بالكلمات مع نفسي والآخرين طوال هذا الوقت: https://www.youtube.com/watch ؟ v = JH8xwNOQ0TM


Defold


Defold هو محرك عبر منصة من King.
المنصات المدعومة:


  • Html5 (WebGl)
  • أندرويد 2.3 (API المستوى 9) +
  • iOS 8.0+
  • ويندوز فيستا +
  • OSX 10.7+
  • لينكس

الحقيقة الغريبة هي أن King مملوكة لشركة Activision Blizzard .
في المحرك ، انجذبتني لغة التطوير - Lua ، يمكن تثبيت دعم مجموعة من الأنظمة الأساسية لتصميم الألعاب ، بالإضافة إلى توزيع IDE عبر الأنظمة الأساسية الخاصة بهم - على نظام Linux أيضًا. هذا رشوة لي عند الاختيار بين Defold مقابل. Corona SDK .
وفيما يلي سجل ما تم في نقاط التحكم:


عددوقتتعليق
130Mلقد استعرضنا درسًا تعليميًا واحدًا ، وهما وصفان تمهيديان للمحرر ، واختبرنا مشروع اختبار (ترميز معالج النقر ، قراءة أرصفة مشروع تدريبي)
21Hوأضاف بعض التعديلات على مشروع التدريب الاختبار. ربما حان الوقت لتناول مشروعك ومحاولة تنفيذ شيء على الأقل هناك؟
31 س 30 مالقفز من صنع الإنسان (العفريت مع السلوك). ليس سيئا! :)
42Hحان الوقت لإضافة السيطرة. وأيضا حان الوقت لإضافة منصات وتصادمات؟ تمت إضافة إدارة ومنصة ، ولكن للأسف ، لم أتمكن من التعامل مع التصادمات ..
52 س 30 ماصطدام! من الضروري أن يعرف الرجل كيف يقفز على المنصات ثم يرفع منها. حسنا اذن هناك صراعات ، ولكن حتى الآن تعمل الميكانيكا بشكل ملتوي :)
63Hالصيحة ، هناك صراع ويبدو صحيحا. حاولت وضع عدة نسخ من المنصات.
73 س 30 مالآن يجب أن نفكر في الكاميرا العائمة التي تطفو لأعلى وأعلى بينما ينتقل اللاعب إلى منصات أعلى جديدة. لم أتقدم ، لكن دفنت فقط في تعقيدات حلبة الكاميرا ... يبدو الأمر وكأنه مفاجئ ومن السهل جدًا إعداد الكاميرا.
84HHUD. يعرض الارتفاع الحالي للاعب فوق الأرضية.

أدناه ، في المفسد ، هناك عدد قليل من الرسوم المتحركة التي تظهر التقدم المحرز في الوقت المناسب:


النص المخفي

0-1h
0-1h
1-2H
1-2H
4H
4H


النتيجة ، النقاط المرجعية:


  1. المشغل (العفريت ، سلوك القفز ، رد الفعل على الأزرار المضغوطة) (V) Yes
  2. كائنات المستوى: المنصات ، الأعداء ، إلخ. (V) Yes
  3. الفيزياء: سرعة قفزة اللاعب ، تسارع السقوط الحر ، يجب أن تعالج المنصات الاصطدامات فقط إذا قفزت من أعلى وتسمح للاعب بالمرور عبره إذا عبره من أسفل المنصة. (V) Yes
  4. إنشاء المستوى الإجرائي: التهيئة والإضافة إلى المستوى (إلى الأماكن التعسفية ، ولكن مع بعض القواعد والقيود) على أنظمة التشغيل والأعداء الجديدة ، مما يخلق للاعب وضعًا مغريًا في اللعبة (X) No
  5. "كاميرا" تتبع المشغل وهو يتحرك للأعلى. يجب أن تحتفظ الكاميرا بالمشغل في مجال رؤية المشغل وأن "ترتد" معه تدريجيًا ، مع عرض منصات جديدة تظهر في منطقة العرض (في مجال رؤية الكاميرا) (X) No
  6. لعبة أكثر من آلية الزناد. يخسر اللاعب إذا وصل إلى الحافة السفلى للمنطقة المرئية (بعد أن قفز بالفعل مرة واحدة على الأقل) (X) No
  7. التهديف لاعب. سنقوم فقط بتحديث عداد ارتفاع اللاعب. سنقوم بتحديث العداد وفقًا لآخر منصة تم الوصول إليها (المنصة التي دفع منها آخر مرة) (V) Yes
  8. هود: تقدم لاعب العرض. عرض الارتفاع. اختياريا ، يبدو أنه لا توجد مؤشرات تقدم في اللعبة الأصلية. (V) Yes

نقاط التقييم: 5/8


Love2d


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


بشكل عام ، بالنسبة لهذا المحرك ، أوصي بسلسلة مناسبة جدًا من الدروس من Habr ، والتي حفزتني وأعطت دفعة قوية لتطوير هذا المحرك ، سأقدم فقط رابطًا للجزء الأول ، ثم يمكنك الانتقال منه إلى الأجزاء المتبقية: إنشاء لعبة على Lua و LÖVE - 1


لذلك ، يوجد أدناه سجل لما تم عند نقاط التفتيش:


عددوقتتعليق
130Mإعداد مشروع ، إنشاء معالجات أساسية ، إنشاء فئة لاعب (إطار عمل مع منطق القفز والجاذبية لا يزالان لا يعملان)
21Hتم صنع مصنع ، يصور المنصات ، وصنع رجل القفز. الصيحة!
31 س 30 متحاول المسمار مكتبة hardoncollider. الإحباط المرتبطة بحقيقة أن قفص الاتهام على الموقع الرسمي هو مكتوب وفقا للنسخة التي عفا عليها الزمن ، يبحث عن الاحواض الحالية ، الشد في الاصطدامات. لم يتم تنفيذ تصادمات بعد
42Hهناك صراعات ، لكنها منحنيات :(
52 س 30 ممصنوعة تصادمات ، وهناك بعض العيوب ، ولكن بشكل عام - القواعد. محاولة ربط الكاميرا التي تتعقب المشغل ، بعد قفزاته. لم ينجح بعد
63Hهناك جيل من المنصات ، لكن التصادمات لا تزال عربات التي تجرها الدواب وعرجاء :(
73 س 30 ميتم تطبيق تعريف Game Over - تحديد أن اللاعب قد سقط على الحافة السفلية للمنطقة المرئية. تم تنفيذ التسجيل - أي عرض في الزاوية اليسرى العليا من آخر ارتفاع اتخذت
84Hانظر أدناه الجدول لمعرفة ما تم تحقيقه بعد 4 ساعات من تطوير استنساخ Doodle Jump على محرك Love2d.

النسخة النهائية من اللعبة على Love2D في 4 ساعات


احسب "أداء" المحرك:


  1. المشغل (العفريت ، سلوك القفز ، رد الفعل على الأزرار المضغوطة) (V) Yes
  2. كائنات المستوى: المنصات ، الأعداء ، إلخ. (V) Yes
  3. الفيزياء: سرعة قفزة اللاعب ، تسارع السقوط الحر ، يجب أن تعالج المنصات الاصطدامات فقط إذا قفزت من أعلى وتسمح للاعب بالمرور عبره إذا عبره من أسفل المنصة.
    (V) Yes / (X) No // * تم تنفيذه ، ولكن ليس مثاليًا ، به عيوب كبيرة. أود أن أضع هنا 0.5 نقطة لاستكمال هذا البند.
  4. توليد المستوى الإجرائي: التهيئة والإضافة إلى المستوى (إلى الأماكن التعسفية ، ولكن مع بعض القواعد والقيود) على ذبابة منصات وأعداء جدد ، مما يخلق للاعب وضع لعبة مغرية (V) Yes
  5. "كاميرا" تتبع المشغل وهو يتحرك للأعلى. يجب أن تبقي الكاميرا المشغل في الرؤية للمشغل وأن "ترتد" معه تدريجيًا ، مع عرض منصات جديدة تظهر في منطقة العرض (في رؤية الكاميرا) (V) Yes
  6. لعبة أكثر من آلية الزناد. يخسر اللاعب إذا وصل إلى الحافة السفلية للمنطقة المرئية (بعد أن قفز بالفعل مرة واحدة على الأقل) (V) Yes
  7. التهديف لاعب. سنقوم فقط بتحديث عداد ارتفاع اللاعب. سنقوم بتحديث العداد وفقًا لآخر منصة تم الوصول إليها (المنصة التي دفع منها آخر مرة) (V) Yes
  8. هود: تقدم لاعب العرض. عرض الارتفاع. اختياريا ، يبدو أنه لا توجد مؤشرات تقدم في اللعبة الأصلية. (V) Yes

نقاط التقييم: 7.5 / 8


جافا


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


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


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


لحظات مثيرة للاهتمام وشرائح FXGL:


  • كما قد يشير الاسم ، بالنسبة إلى الجزء المرئي ، يستخدم المحرك واجهة برمجة تطبيقات JavaFX (يتم استخدام JavaFX كإطار عمل رسومات) مع كل الأشياء الجيدة والمضادات الجيدة للتسليم والتخطيط. بشكل عام ، أعتقد أن هذا قرار جيد وسليم. وبالتالي ، تجنب المؤلف عددًا من المشكلات (ليست هناك حاجة إلى تنفيذ مكون العرض الخاص بك وصيانته ، يمكنك استخدام حل محسن من نظام Java البيئي). إليكم ما يقوله المؤلف نفسه في أحد برامجه التعليمية الأولى ، وقد أحببت هذه العبارة حقًا:


    "بالنسبة لمعظم كائنات واجهة المستخدم ، نستخدم كائنات JavaFX ببساطة ، حيث لا توجد حاجة لإعادة اختراع العجلة."

    ولكن بشكل عام ، بالطبع ، ستحصل على مجموعة من الميزات وبعض عيوب JavaFX ، أيضًا (لست على دراية تامة بالتفاصيل) ، لكن على حد علمي ، هناك بعض قيود الترخيص على استخدام JavaFX في مشاريعك ، ويبدو أن JavaFX يذهب وسيذهب فقط في شحنات محدودة من JDK ( Oracle ، وربما بعض أكثر).


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


  • أيضا (على ما يبدو مرة أخرى ، مع الإعدادات الأساسية) توفر اللعبة قائمة منبثقة عن طريق الضغط على Esc . أيضا مكافأة لطيفة ، وآمل أن يتم تخصيصها أو على الأقل تعطيل بواسطة رمز أو التكوينات.


  • Debag يعمل أخيرا هنا ! وأخيرا! في Love2D على أقل تقدير ، غير مريح وغير سارة.


    سجل التنمية


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



عددوقتتعليق
130Mتعلمت بضع دروس. API الأساسي وهيكل حلقة اللعبة. تعلمت كيفية رسم العفاريت ، ونقل الأشياء ، وعرض وتحديث هودس. بدأت الشد الاصطدام في اللعبة.
21Hيوجد مربع قفز بهيكل من التصادم (صندوق Bounding Box) و "قادر على الابتعاد عن الأرض" (أي يوجد تعريف لأسفل الشاشة)
31 س 30 موضعت الأساس لمصنع منصة (PlatformFactory.java). يبدو أنه كان من الممكن "ترويض الاصطدام" وتمكّن من تحقيق تنافر الشخصية من المنصة. يعد هذا بلا شك نجاحًا للمحرك الجديد ولديه خبرة في قراءة نص تعليمي GitHubWiki في المكان.
42Hتصادمات نهائية قليلاً مع المنصات ، ولكن لا تزال عربات التي تجرها الدواب ولا تزال مثالية. تمكنت بسرعة كبيرة من إجراء التتبع باستخدام الكاميرا ، مرة أخرى ، إنها أيضًا حادة وخرقاء بعض الشيء ، لكن نعومة الصقل ستبقى خارج نطاق العلامة المرجعية وتجربة FXGL على وجه الخصوص. بالإضافة إلى ذلك ، لم يكن من الصعب إضافة رمز مصنع توليد المنصات بحيث تم إنشاء المنصات على مسافة عشوائية مقبولة من آخر منصة تم إنشاؤها. كما تم دمج الكود الذي أنشأه مع تقدم اللاعب في دورة اللعبة الرئيسية. تقدم جيد جدا ، بالنسبة لي.
52 س 30 محسنا اذن في هذه المرحلة ، تكون اللعبة بأكملها جاهزة تقريبًا. يتم تنفيذ جميع المكونات الأساسية. وحتى الآلية الصحيحة لدفع اللاعب بعيدًا عن المنصات (نجاح باهر!) تم تلميعها ووضع اللمسات الأخيرة عليها باستخدام ملف ، لم يتحقق بشكل مثالي مع المحركين السابقين. ربما ، قد أثرت بالفعل الخبرة المتراكمة والحدس هنا ، أنا لا أجادل. أيضًا ، تم إخماد العشوائية الخاصة بحساب المراكز في المنصات الجديدة قليلاً ، كما هو الحال مع المعلمات السابقة التي ظهرت فيها منصات لا يمكن الوصول إليها على الإطلاق ، مما أدى إلى Game Over.
63Hتم تنفيذ ميزة رئيسية أخرى في Jump Doodle (تلك التي كانت خارج نطاق المهمة الرئيسية) - إذا قفز اللاعب على الحافة اليسرى أو اليمنى للمستوى ، فإنه يظهر على الجانب الآخر مع الحفاظ على سرعته (الدافع). هذه اللعبة هي عنصر أساسي للغاية في Doodle Jump. ما الذي يجعل اللعبة متنوعة وجذابة بين العناصر الأخرى. أيضا ، تم بسرعة إعادة تعيين وظيفة إعادة تعيين اللعبة ورمز الأعداء والعدو لمنظمة العفو الدولية. حتى الآن ، هذا ليس في اللعبة ، ولكن على مستوى النموذج الأولي.
73 س 30 ميتم تنفيذ خوارزمية لتوليد عشوائي من الأعداء على المستوى. إنه ليس مثاليًا على الإطلاق ، لكنه يضيف بالفعل عنصرًا من المتعة والتحدي للاعب. AI , — - , , . .
84h. — . , . , , Space .

GIF- , .


النص المخفي

0-1h
*0-1h*
1h-1h 30m
*1h-1h 30m*
2h 30m ( )
2h 30m
3h 30m
3h 30m
4h
*4h*


"" … , , , ? .


Benchmark Score: 8


, ,


:


(0 — , 1 — , 2 —(0 — , 1 — , , 2 —Benchmark Score
DefoldLua015/8166
Love2DLua117.5/8701
FXGLJava028582

, , , ( ). , , Java FXGL , , Lua , . , , .


:


  1. FXGL ? . Love2D , Defold , , , , Love2D - , .
  2. , . , . (, ), . , - . , , , , . , , , . .
  3. gif-, . . , , "" , .

?


, - , ?


لذلك:


  1. , . , , , , . - , - ( Love2D ).
  2. - , Love2D , . F to pay respect .
  3. . , , , - - , , (, , )
  4. . 4 , . - Game Jam , .
  5. ! , , - Roadmap , , . (!) (?) . 30 . , . , , ! , pet- 44 - Ludum Dare .

Source: https://habr.com/ru/post/ar449390/


All Articles