هناك العديد من المقالات حول
الوحدة للوافد الجديد ، لكنني لا أريد أن أكرر نفسي ، لكنني أريد أن أشارك تجربتي في تطوير اللعبة الأولى ، وبشكل أكثر تحديداً ، للحديث عما تعثرت عليه. هذا سيتيح لك الفرصة ، أيها المطورين الأعزاء ، لحماية نفسك في المستقبل من العمل غير المخطط له وضياع الوقت. آمل أن يقرأ مطورو
Unity هذه المواد لتحسين منتجهم.
انتباه ، تحت القط لقطات
16+ !
نظرًا لأن معظمنا أشخاص تقنيون ، فسأضع كل شيء على الرفوف ، البدعة ، وسأحاول تقديم المواد لفترة وجيزة قدر الإمكان ، بإيجاز وبدون ماء.
التحدي
أردت أن أكتب شيئًا جديدًا ، بسيط في الفهم وفي الإدارة. نتيجة للمناقشة مع الجمهور المستهدف (طفلي) ، تقرر أن تكون اللعبة على النحو التالي:
- ثنائي الأبعاد (لأنه أكثر ملاءمة للعب ألعاب ثنائية الأبعاد على الهاتف)
- تحكم بإصبع واحد (أحيانًا بحد أقصى اثنين)
- قاتل الوقت (مجرد كزة حتى لا ترهق المخ)
- نظام الإنجاز (لجعله على الأقل قليلا للاهتمام لمواصلة)
- الكرتون
- موسيقى جميلة
- بدون انترنت
- Android (سهولة تثبيت ملفات apk apk)
كل ذلك أدى إلى فكرة
" إبليس الشيطان يطلق النار على الغزلان التي تتداخل مع حقيبته .
"
وبعد ذلك بدأ كل شيء ...
1. مكتبات الروبوت الخارجية
المشكلة: قضيت يومين في العثور على SDK الصحيح ، JDK ، NDK وجعل الوحدة تعمل معهم. على جهازي قبل Unity ، كان sdk من android android موجودًا بالفعل ، لكن لم يبدأ به ، كان علي البحث عن شيء آخر ، التثبيت ، المحاولة ، البحث مرة أخرى ... يومين ...
اقتراح بالتحسين: سيكون من الجيد أن يتم تثبيت إصدار sdk الضروري لأحدث الإصدارات تلقائيًا أثناء تثبيت Unity ، وإذا كان أي شخص بحاجة إلى الرجوع إلى إصدار سابق أو الترقية - فدع هذا الجهاز يقوم بتكوين نفسه باستخدام الأقلام.

2. ناقلات الرسومات
المشكلة: الوحدة خارج الصندوق لا تفهم
SVG . حتى كل أنواع أطر JS الصغيرة مثل Paper.js تعمل ببساطة بذكاء مع ناقل ، لكن فيل مثل Unity لا يعمل.
الحل: قمت بتثبيت حزمة بيتا يبدو أنها تقرأ SVG ، لكنها في النهاية تحولها إلى خطوط المسح. مقبول ، لكن محرج ، الوحدة!
3. منصة 2D
المشكلة: كما ترى في لقطة الشاشة ، هناك أرض ، وهناك كرة ثلجية عليها. وهذا هو أيضا
مش ومضلع المضلع . أي أنه سطح يتفاعل مع الكائنات ويمكن تغييره في المحرر. لذلك في الإصدار الحالي من الوحدة ، لا توجد أدوات قياسية يمكن استخدامها لمحاكاة ذلك.
الحل:- يمكنك رسم نقطية باستخدام ألفا (ناقص - تحرير هذا البئر غير مريح للغاية)
- يمكنك شراء مكون إضافي يقوم بذلك (مطروح منه - إنفاق المال)
- يمكنك كتابة البرنامج المساعد بنفسك (ناقص - يستغرق وقتًا طويلاً لمعرفة ذلك ، ويستغرق وقتًا طويلاً للكتابة)
اخترت طريقًا طويلًا ولكنه مجاني ؛) إذا كان أي شخص يحتاج إلى مثل هذا البرنامج المساعد - الكتابة والمشاركة وإخبار كيفية استخدامه ، فلا مانع :)
بالمناسبة ، شاهدت العرض التجريبي للنسخة التجريبية الجديدة من الوحدة ، يبدو أن مثل هذا الشيء سوف يظهر من خارج الصندوق! شكرا على ذلك ، أيها الأصدقاء!
نعم ، لقد أضفت لوحة لإنشاء بسرعة أوليات ثنائية الأبعاد ، أو دوائر هناك ، أو مربعات ... وإلا فإنها ببساطة غير موجودة ، أو يجب عليك الذهاب إلى جانب الأصول والبحث.
4. التناوب ورباعي
المشكلة: نظام معقد للغاية من المواقع ثلاثية الأبعاد والدوران ، غير ضروري في ألعاب ثنائية الأبعاد.
الحل: تحتاج فقط إلى فهمها وقبولها ، لأن لعبة 2D هي لعبة ثلاثية الأبعاد بتنسيق Z = 0. لكن سيكون من الجيد تبسيط هذا النظام في وضع 2D ، أيها الرفاق ؛)
لقد قتلت الكثير من الوقت وحطمت عقلي تقريبًا ، محاولًا تدوير الكائن في الاتجاه الصحيح إلى الزاوية اليمنى ، نسبة إلى كائن آخر ، عندما كتبت للتو
player.a = 45 في محرك آخر
؛ نعم ، هناك العديد من الطرق الواضحة في الإصدار الحالي.
5. تصحيح
المشكلة: بالنسبة لنا ، مبتدئين ، تتوفر إمكانية تصحيح الأخطاء فقط في شكل إخراج القيمة المتغيرة إلى وحدة التحكم باستخدام طريقة
print () . فواصل كاملة هي الكثير من أولئك الذين يدفعون. صححني هنا ، إذا كنت مخطئًا ، لكني لم أتمكن من تكوين Visual Studio للتصحيح بأي شكل من الأشكال ، على الرغم من أنني وجدت مقطع فيديو يتضح فيه أنه لا يوجد شيء يحتاج إلى تهيئته ، إلا أنه يجب أن يعمل بمفرده. وخلص إلى أن التصحيح متاح في الإصدارات المدفوعة.
الحل: أنا فقط استخدم
print () ... وأدرك أن تصحيح أخطاء مشروع معقد سيكون عاملاً حاسماً في الحصول على نسخة مدفوعة من الوحدة. المسوقين للشركة الاحترام الحزين :(
حلها! بفضل موجه
Leopotam ، قمت بتثبيت حزمة إضافية للاستوديو ، يظهر زر
"Attach to Unity debugger" .
6. انقر فوق ، انقر ، وانتقد mov
المشكلة: على الرغم من راحة نظام إدخال المستخدم المدمج ، فإن بساطة معالجة الأشرطة الفردية العادية والنقرات والضربات الشديدة ليست كافية. أرغب في استخدام طريقة واحدة لإرجاع إحداثيات نقرة واحدة / نقرة واحدة لأنواع مختلفة من الأجهزة: لمسة وسطح مكتب به ماوس ، على سبيل المثال.
الحل: اضطررت إلى كتابة طبقة الفصل الدراسي والتفاف الأحداث الضرورية.
ربما سأترك تعليقًا إضافيًا بخصوص نظام الإدارة. شكرًا جزيلاً لمطوري Unity على الإدخال العام ، ولكن بالنسبة لأجهزة اللمس ، أرغب في التحكم العالمي أيضًا. على سبيل المثال ، حرك لأعلى - ارتبط بـ Jump ، وقم بتصور التقاطع والأزرار ، مثل ذراع التحكم ، وما إلى ذلك. يمكنك شراء هذا في حزم مدفوعة أو ، مرة أخرى ، اكتب نفسك ، وقضاء بعض الوقت على الدراجات.
7. الارتباك مع الإحداثيات
المشكلة: لا يمكنك تعيين إحداثيات النقرات للكائن ورؤيته في المكان الصحيح ، وهذا غير واضح إلى حد ما.
الحل: أولاً ، تحتاج إلى قراءة الوثائق وفهم واستخدام الأساليب المختلفة لتعيين الإحداثيات:
WorldToScreenPoint ()
ScreenToViewportPoint ()
convert.TransformPoint ()وغيرها ...
سأشرح ذلك لأن المسافة في المشهد تقاس بوحدات تعسفية غير البكسل ، وبالإضافة إلى ذلك ، تحتوي الكائنات على نظام تداخل ، على التوالي ، يكون تحديد المواقع بالنسبة إلى الأصل.
8. مجموعة ضئيلة من الضوابط واجهة المستخدم
المشكلة: يتم تسليم العناصر الأساسية فقط من المربع ، وحتى بعد ذلك عليك العبث ببعضها.
الحل: يمكنك أن تكون راضيا مع القليل. على سبيل المثال ، قضيت الكثير من الوقت في التمرير في القائمة الديناميكية. يمكنك شراء الضوابط باردة (ناقص - إنفاق المال).
9. حجم ملف APK كبير
المشكلة: عند إنشاء مشروع فارغ ، حجمه
21.9 ميغابايت (23،061،612 بايت)
الحل: تحتاج إلى حفظ على كل شيء. حاولت ملفات MP3 ، القوام المضغوط ، عدم إدراج أي شيء غير ضروري في المشروع. ولكن عندما تم توصيل حزم إضافية ، زاد حجم بلا رحمة ، والسعي لمائة.
يطلب Google Play من المطورين نشر التطبيقات
<100 ميجا بايت . (22 تلتهم بالفعل). بالطبع ، هناك آليات للتحميل المقسم والديناميكي للموارد ، لكننا قادمون جدد ، وهدفنا هو معرفة الأساسيات ، وتحقيق أحلامنا العزيزة ، وليس القتال مع حدود السوق.
10. السيريلية
المشكلة: بعد تجميع مشروع لمنصة JS / HTML5 (للاختبارات) ، اتضح أنه ببساطة لا توجد نصوص مكتوبة باللغة الروسية.
الحل: تحتاج إلى تنزيل ملف الخط ، واستيراده إلى الأصول ، ثم تحديد هذا الخط الذي تم استيراده في إعدادات كل نص.
هذا غريب نوعا ما.
11. أداء الفيزياء
المشكلة: تبدأ اللعبة في التباطؤ بشكل رهيب عندما يكون هناك
تصادمات معقدة ، عند استخدام الوضع
المستمر للكشف عن
التصادم ، عند استخدام عدة
نظام للجسيمات في مشهد واحد ، باختصار ، عندما يتم استخدام كل شيء يعطي التأثير والجمال للألعاب.
الحل: استخدم فقط مصادمات
الدائرة والمستطيل البدائية ، وينبغي أن يكون
اكتشاف التصادم منفصل فقط ، ويجب ضبط عدد الجزيئات في
نظام الجسيمات على الحد الأدنى المقبول. حسنًا ولا يزال ، عدم الاعتراف بخطأي وعدم استخدام التصادمات داخل نظام الجسيمات. التأثير ، بطبيعة الحال ، جميل ، حيث يتدفق الدم إلى أسفل الأشياء ، ولكن كثيفة الاستخدام للموارد.

بطبيعة الحال ، كل هذا صحيح بالنسبة للألعاب المحمولة ثنائية الأبعاد. ولكني أود أن تتطور Unity ، وأن تستخدم تظليلات باردة جديدة للجزيئات ، وللاصطدامات ، ولكل شيء آخر معقد وجميل.
الخاتمة
كان هناك ، بالطبع ، مطبات أخرى ، ولكن هذه تفاهات. كانت هناك مزايا غير متوقعة ، مثل:
- الجاهزة
- التوثيق الجيد والمجتمع
- قم بإنشاء مصادم مضلع تلقائيًا باستخدام قناة ألفا من العفريت
- سهولة استخدام المؤثرات الصوتية.
- الرسوم المتحركة مريحة للغاية على الأطر الرئيسية (مع إضافة Anima2D والحركية العكسية)
لكن هذه قصة مختلفة تماما ...
أما بالنسبة لتوقيت المهمة ، فقد تم تثبيتي بشدة بسبب النقطة رقم 3 (تطوير مكون إضافي لنمذجة المنصة). كمطور من ذوي الخبرة ، قمت بتقييم المشكلة بنفسي وتقييمها على النحو التالي: 20 ، 30 ، 40 (أمسيات / أيام عطلة لأنني مشغول خلال اليوم بالعمل الرئيسي) ، حيث 20 متفائل و 40 متشائم. لو لم تكن النقطة رقم 3 ، فعندئذ سأكون قد بلغت 20-30 ، لكن في النهاية قضيت حوالي شهرين. (لا ، لم أعمل كل مساء ، أي أنني حصلت على حوالي 40).
إذا كان أي شخص مهتمًا ، فسأقول أنه كان علي رسم الرسومات بنفسي ، وذلك بفضل برنامج
Inkscape . اخترت الموسيقى حصريًا مع ترخيص للاستخدام المجاني.
اضطررت إلى قضاء يومين في النشر على
Google Play .
أمضيت يومين آخرين على تكامل الإعلانات (على الأرجح أنك لن ترى ذلك ، أردت فقط أن أجربه ، على الرغم من أن اللعبة لم تكن تعتبر تجارية واحدة)
نعم ، كان يمكن تحسين الكثير ، لكنني أردت أن أروق أصدقائي قبل عطلة رأس السنة الجديدة.
لا تفهموني خطأ ، هذه ليست وظيفة العلاقات العامة. والأهم من ذلك كله ، أنني أريد من يصنع محرك الوحدة الانتباه إلى هذه العيوب ، وبالطبع القضاء عليها (حسنًا ، هذا مثالي). وأريد أيضًا أن أساعد إخواني الروحيين على ألا أشعل النار في نفسي.
وإذا كنت مخطئًا في شيء ما ، فلا تحكم على نحو صارم ، وشارك نصائحك في التعليقات!