هل هناك أشخاص من القراء الذين سمعوا على الأقل في آذانهم أن هناك محركًا ثلاثي الأبعاد معينًا لتطوير تطبيقات WebGL مع محرر مشابه لبرنامج Unity فقط في المتصفح؟ هذا الموضوع لا يحظى بشعبية كبيرة ، لكني أصبحت أحد هؤلاء الأشخاص منذ عامين تقريبًا. والآن أردت أن أشارك تجربتي ، بل حتى خيبات الأمل. ستناقش المقالة المشكلات التي ستواجهها إذا بدأت في استخدام هذا المحرر. سوف أبدي تحفظًا على الفور بأنني لن أقارنه بمحركات ثلاثية الأبعاد أخرى مثل Three.js أو Babylon.js ، سأتطرق إلى المحرر وواجهة برمجة التطبيقات النصية فقط.
كل الانترنت
عندما تسمع أن العديد من الأشخاص يمكنهم العمل على المسرح وأن جميع التغييرات في الوقت الفعلي تكون مرئية لبقية المشاركين في المشروع ، فإن الفكرة الأولى التي تتبادر إلى الذهن: "واو ، رائع!".
في الواقع ، اتضح أن أشخاصًا مختلفين يعملون في مهام مختلفة وأن الجميع بحاجة إلى الكاميرا الخاصة بهم لتصحيح الأخطاء. وجهة نظرك التي تريد اختبار المشهد. وهو غير مريح للغاية. في المنتدى ، اقترح شخص ما إنشاء وضع غير متصل بالإنترنت ، لكن المطورين يعتقدون أن هذا هو حجر الزاوية للمحرر ، وأن أي تغييرات يتم حفظها على الفور على الخادم ، بحيث يمكنك العودة إلى المشروع في أي وقت من أي جهاز. نعم انها مريحة. عندما تعمل بمفردك على مشروع حسنا ، بدون الإنترنت ، أيضا ، لا يمكن أن تعمل.
بشكل عام ، المحرر غير مناسب تمامًا للعمل الجماعي.
ما زلت لا أرى حلاً لهذه المشكلة.
تغيير التاريخ
حتى وقت قريب ، عانيت كثيرًا من حقيقة أنه لا يمكنك توصيل المشروع بأي بوابة. مرة واحدة يمكن القيام بذلك (فقط للنصوص) ، ولكن الآن هذه الوظيفة تعتبر قديمة ، لأن إعادة كتابة اللاعبين API Scripting في مرحلة ما.
ولكن! مرة أخرى ، عند الضغط على Ctrl-S في المحرر ، رأيت هذه الصورة:

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

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

حسنًا ، ليس كل من يحتاج إلى مثل هذه الوظيفة في المحرر ، لقد اكتشفت كيفية التعامل مع رؤوس الرؤوس للوحة العادية على مستوى وحدة المعالجة المركزية (أي باستخدام JS ، وليس تظليل الرأس) وكتبت نصًا يقبل خريطة وينتج تضاريس صالحة. لكن في المحرر ، هذا غير مرئي! كيفية وضع المنازل والأشجار على ذلك؟ هذا هو المثال الأول الذي يتبادر إلى الذهن.
محرر الكود
في وقت كتابة هذا التقرير ، يمكنك فقط تحرير التعليمات البرمجية عبر الإنترنت ، ويتم تحديد CodeMirror الإصدار 5.19.0 كمحرر. لا أعرف الإصدار الذي كان عليه قبل عامين ، ولكن هناك شعور بأنه لم يتم تحديثه مطلقًا. بعد كل شيء ، هذا هو إصدار سبتمبر 2016.
لا تتوقع أي شيء خارق لها. علينا أن نتخلى عن Sublime-Atom-VSCode المعتادة. يوجد زوجان من مفاتيح الاختصار والدعم متعدد المؤشرات ، ولكن هذا كله. حتى في ملفات التظليل ، لا يمكنك التعليق على سطر باستخدام Ctrl- /. بشكل عام ، لا توجد وسائل راحة لـ GLSL. Pechalka.
نموذج
يدعم المحرر 3 أنواع فقط من النماذج ، وفقًا للوثائق:
نماذج مثل FBX ، COLLADA ، obj
ولكن! لسبب ما ، لا يمكن تحميل glTF في المحرر ، على الرغم من وجود محمل جاهز طويلًا ، علاوة على ذلك ، من مطوري المحرر أنفسهم. ونعم ، يمكنك استخدامه مع المحرك إذا كنت المنحرف جنسيا الحب Three.js.
منظمة التحرير الفلسطينية
أخبار سيئة.
حسنًا ، بالترتيب:
ES6
لمنع المحرر من أداء اليمين ، يجب عليك إضافة ما يلي إلى بداية الملف:
لكن المحرر لا يزال يقسم
لماذا على الارض؟
في المنتدى ، يوضح المطورون بوضوح أن الدعم الطبقي ليس مخططًا له . على الرغم من أن هذه هي السنة 16-17 ، فإنه كان حقا ذات الصلة. آمل أن يتغير شيء ما في عقول المطورين.
ملفات
... تحليل واحد في وقت واحد. هذا يعني أن تعريف الفئة الأساسية في ملف واحد والوراثة منه في ملف آخر ، تظهر لك رسالة خطأ:

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

حاولت تجاوز ScriptType الأساسي لإنشاء برامج نصية وراثية منه. أنا أستسلم ، انها عديمة الفائدة تماما. إذا قمت بالبحث بشكل أعمق ورأيت كيف يتم ترتيب محلل البرامج النصية في المحرر ، يمكنك العثور على طريقة وهمية لتحديد السمات:
المفسد
وأشياء من هذا القبيل
يعرض مشروعي التجريبي أمثلة على الشفرة مع الميراث وتظليل النار المخصص أكثر تعقيدًا بقليل من في البرنامج التعليمي. كل من يفهم هذا يستطيع أن يرى بنفسه كيف يجب كتابة الكود السيئ.
يؤدي
بشكل عام ، لدى المحرر مشاكل كافية وهي خطيرة جدًا. أنا أوصي به للغاية للتنمية التجارية. ولكن لا يزال ، سوف أحبه ، لأنه لا توجد بدائل.
حتى أنني حاولت كتابة محرري غير المتصل بالشبكة استنادًا إلى Electron و playcanvas / المحرك المفتوح ، لكن الحماس كان يكفي لمدة شهر من العمل. ربما سأستمر في يوم من الأيام ، لأنه في كل مرة أعود فيها إلى هذا المحرك ، أريد أن أعتبرها وأقوم بها بطريقتي الخاصة.
PS: كيف هو موضوع مثير للاهتمام؟ هل تحتاج إلى أي برامج تعليمية على المحرك ، على تظليل ، على البرامج النصية ..؟ ربما شيء لتخبره عن VR / AR على هذا المحرك؟