Indeck هو تطبيق بيئة الترميز ثلاثية الأبعاد مستقلة لتطوير VR من داخل VR. تم كتابة المشروع في لوا ويعمل على قمة إطار Lövr. يمكن أن يستهدف Lövr و Indeck جميع منصات VR التي يمكن الوصول إليها بشكل شائع.

الفائدة الرئيسية لبيئة Indeck هي حلقة التكرار الضيقة بين رمز LUA وتفسير وقت التشغيل ثلاثي الأبعاد. عندما يتم مزامنة الرمز على الفور مع وقت التشغيل التنفيذي ، يصبح النمو أكثر جاذبية وإنتاجية. عدم الاضطرار إلى الإقلاع باستمرار ووضع سماعة VR يزيل أيضًا بعض الاحتكاكات.
منصة التركيز هي Oculus Quest مع لوحة مفاتيح Bluetooth المتصلة. على الرغم من أن Quest يعتبر منصة المستهلك وهدف لتطوير سطح المكتب ، إلا أن Indeck يحولها إلى وحدة تطوير VR مستقلة. يعمل Indeck في أي بيئة أخرى يمكنها تشغيل Lövr ولوحة المفاتيح المرفقة.
في المرحلة الحالية Indeck وظيفية ومفيدة ، ولكن ليس سهلة الاستخدام بشكل رهيب. أستخدمه بانتظام للنماذج الأولية VR والتبديل المشاريع الحالية. يجب أن يكون المشروع بيئة تنمية بسيطة وقابلة للتمديد ، وليست عبارة عن IDE المصقول المليئة بالميزة مع API مستقرة.
يتكون Indeck من محرر رمز LUA ثلاثي الأبعاد وتسخير تنفيذ مشروع المستخدم. يمكن فتح مثيلات المحرر المتعددة ووضعها بحرية في الفضاء. يتم فتح محرر واحد عند البدء ويمكن استخدامه لتحميل وتنفيذ أي مشروع Lövr. عند تنفيذ المشروع ، سيبدأ تشغيله وسيتم فتح الملف المصدر الرئيسي في محرر التعليمات البرمجية. أثناء تعديل المستخدم رمز المشروع ، يمكنه أحيانًا إعادة تحميل وقت التشغيل لإعادة تنفيذ الكود المعدل. يتم دعم كل من إعادة التحميل الجزئي وإعادة تشغيل البيئة الكاملة. إذا قام المستخدم بتقديم خطأ في التعليمات البرمجية الخاصة به ، فسيتم إيقاف تشغيل وقت المشروع ، وسيحصل المستخدم على فرصة لإصلاح الخطأ بسرعة بمساعدة تتبع المكدس وإعادة تشغيل التنفيذ.
حسب التصميم ، لا يمكن لبيئة Indeck الوصول إلا إلى الملفات داخل دليل "حفظ" Lovr. يجب أن يعمل أي مشروع Lövr الحالي خارج الصندوق داخل بيئة Indeck بمجرد نسخه إلى الموقع الصحيح:
/sdcard/Android/data/org.indeck.app/files/projects/Users/<user>/Library/Application Support/LOVR/indeck/projects/home/<user>/.local/share/LOVR/indeck/projectsC:Users<user>AppDataRoamingLOVRindeckprojects يعد محرر التعليمات البرمجية قياسيًا (إذا كان الحد الأدنى) لمحرر النصوص مع تسليط الضوء على بناء جملة LUA ، ومعظمه على غرار النص السامي. يتم تشغيل المحرر بالكامل بواسطة اختصارات لوحة المفاتيح دون أي حوار أو منبثقة أو وسيط. تفاعلات وحدة التحكم في الماوس و VR غائبة تمامًا لتجنب الاشتباكات مع معالجة التحكم في مشاريع المستخدمين.
ملاحظة: لا يطلب المحرر أبدًا حفظ التغييرات عند الإغلاق وأي تقدم غير محفوظ
يمكن للمستخدم تنفيذ سطر واحد من رمز LUA تحت المؤشر عن طريق الضغط على CTRL+Shift+Enter . يتم تنفيذ الرمز في سياق المحرر النشط حاليًا. تظهر نتيجة التنفيذ في خط الحالة أعلى المحرر. على سبيل المثال ، ستضع كتابة return 2 + 2 في المحرر وتنفيذ هذا الخط "OK> 4" في خط الحالة ، مما يشير إلى حالة التنفيذ والنتيجة.
يتم استخدام آلية تنفيذ خط الكود هذه كوسيلة مباشرة للتفاعل مع بيئة التطوير. يتم تصفح بنية الملف واختيار مشروع للتنفيذ عن طريق تحديد سطر مع أمر مستعد وتنفيذه باستخدام CTRL+Shift+Enter . يتم إنشاء هذه الأوامر تلقائيًا بناءً على قوائم الدليل.
اختصارات:
Ctrl+Shift+Enter Envisutes Line Line كقطعة Lua خط واحدCtrl+Shift+Home يضع المحرر أمام اتجاه الرأس الحاليCtrl+P ينشئ محررًا جديدًاCtrl+W يغلق المحرر الحالي (حتى مع التغييرات غير المحفوظة!)Ctrl+Tab تحدد المحرر التاليCtrl+O الملفات للفتح في المحرر الحالي (تغييرات غير محفوظة!)Ctrl+S يحفظ التغييرات على الملف المفتوحCtrl+H يفتح وثائق API Lovr في محرر منفصلCtrl+Shift+S يخزن المحررين الحاليين في ملف جلسةCtrl+Shift+L يفتح المحررين المحملين من ملف جلسةCtrl+Shift+P بتشغيل برمجي رمز لمدة ثانية واحدة ويعرض التقرير في محرر منفصلCtrl+down يقفز 10 خطوط لأسفلCtrl+up يقفز 10 خطوط لأعلى عندما يتم تحميل مشروع المستخدم ، سيتم تنفيذ وظائف رد الاتصال الخاصة به (رسم ، تحديث ...) كما لو تم تنفيذ المشروع في الوضع المستقل.
يمكن أن يؤدي تغيير الرمز وتشغيل مشروع المستخدم إلى خطأ في وقت التشغيل. ستتوقف بيئة التفسير بعد ذلك عن تشغيل المشروع ، بينما سيستمر أي محررين مفتوحين في العمل. سيظهر جزء محرر جديد يحتوي على تتبع المكدس عند نقطة الخطأ. عندما يتم التعامل مع الخطأ مع استخدام CTRL+R لتشغيل مشروع المستخدم من البداية.
قبل تنفيذ المشروع ، يتم تثبيت دليله في / الجذر. يمكّن ذلك رمز المستخدم من متابعة استخدام المسارات النسبية عند تحميل الأصول ، كما يفعلون عادة عند التطور خارج بيئة Indeck. على سبيل المثال ، إذا كان Bark.ogg موجودًا في دليل مشروع المستخدم ، يمكن استخدام lovr.data.newSound('bark.ogg') لتحميله.
يرجى الإبلاغ عن أي تباينات بين إدارة مشروع Lövr بشكل مستقل وداخل بيئة Indeck.
هناك طريقتان لتحديث بيئة قيد التشغيل باستخدام رمز معدّل. الطريقة الأساسية هي إعادة تشغيل كاملة للتطبيق. سيتم إعادة تحميل جميع تغييرات التعليمات البرمجية عبر جميع الملفات. العيب الرئيسي هو أن جميع سياق المحرر قد فقدت (الملفات المفتوحة ، مواضع التمرير ، التغييرات) ، لذلك تأكد من حفظ جلسة المحرر يدويًا قبل إعادة التشغيل. يمكن أن تكون إعادة التشغيل بطيئة أيضًا إذا كان لدى مشروع المستخدم الكثير من رمز التهيئة (تحميل أو توليد الأصول).
طريقة إعادة التحميل الأخرى هي المبادلة الساخنة الجزئية ، التي تجبر ملف رمز المصدر main.lua لمشروع المستخدم. يتم إعادة تحميل مشروع المستخدم فقط ، وبالتالي يتم الحفاظ على سياق المحرر. هذا يسمح بدورات التكرار السريعة والفعالة إذا تم استخدامها بشكل صحيح. يمكن أن تكون طريقة المبادلة الساخنة فعالة للغاية عند تصميم منطق التطبيق ، أو تعديل رمز التظليل ، أو تعديل الثوابت.
هناك بعض القواعد حول أجزاء وقت التشغيل ستتأثر عند التخلص من الساخنة. هذه مجرد آليات LUA القياسية لتحميل الوحدات النمطية ؛ لا يوجد "سحر" إضافي في العمل. لا يزالون مصدرا شائعا للأخطاء والمهمة لفهم. سوف يعيد Indeck في حد ذاته إعادة تنفيذ ملف مصدر main.lua عن طريق إجبار وقت التشغيل على نسيان الإصدار الذي تم تحميله مسبقًا: package.loaded['main'] = nil . إذا كانت هناك وحدة أخرى require بالفعل من main.lua أثناء التنفيذ السابق ، فلن تتم معالجتها مرة أخرى ، وسيتم إعادة استخدام الإصدار المحمّل بالفعل. لإجبار الوحدة الفرعية على إعادة تحميلها ديناميكيًا على المبادلة الساخنة ، قم بإدخال package.loaded['module_name'] = nil في ملف main.lua قبل أمر require(module_name) . يسمح ذلك بالتحكم الدقيق في أي أجزاء من مشروع المستخدم الذي سيتم إعادة تنفيذه أثناء المبادلة الساخنة ، ويمكن الحفاظ على أجزاء من بيانات التطبيق/الحالة عبر المبادلة الساخنة.
عندما يقوم المحرر بإدراج الملفات في دليل الجذر ، فإنه سيقدم أيضًا خيارات للتبديل بين مشاريع المستخدم المختلفة. سيؤدي ذلك إلى تنفيذ المشروع الجديد في نفس البيئة ؛ غالبًا ما يعمل بشكل جيد ولكن يمكن أن يسبب مشكلات خفية إذا تغيرت المشاريع المحملة الحالة العالمية. يوصى بإعادة تشغيل التطبيق قبل تبديل المشاريع للتأكد من أن البيئة نظيفة.
اختصارات:
Ctrl+Shift+R يعيد تشغيل التطبيقCtrl+R إعادة تحميل (swap الساخن) main.lua وحدة المستخدمEsc إلى نظام التشغيل بينما يدعم Lövr تشغيل المشروع من أي اسم ملف ، فإن Indeck يدعم فقط أدلة تنفيذ مع ملف main.lua في الداخل. يجب ألا تحتوي مشاريع المستخدم على ملف أو مجلد باسم projects . مثل هذا الكيان سوف يصطدم مع دليل "المشاريع" بمجرد تثبيت دليل مشروع المستخدم على جذر دليل حفظ. indeck-session.lua هو اسم ملف محجوز آخر يستخدم داخليًا.
لن تتم معالجة ملف conf.lua لمشروع المستخدم. يحاول Indeck توفير تكوينه متعدد الاستخدامات ، والذي يجب أن يغطي احتياجات المشاريع المختلفة. إذا كان لمشروعك مشكلات عند التشغيل داخل Indeck ، فيرجى فتح مشكلة.
يفتقر محرر الكود إلى بعض الوظائف الأساسية ، مثل ميزة البحث وأمر التراجع.
هناك حاجة إلى معرفة عملية بإطار Lövr من أجل تطوير تطبيقات كاملة بكفاءة ، دون أن تمنع سماعة الرأس باستمرار للبحث عن الوثائق. على الرغم من أنه غير قابل للقراءة مثل الوثائق الرسمية ، فإن بيئة Indeck تتضمن جميع ملفات API Lövr التي تدرج وظائف وتفسيرات المعلمات. يمكن الوصول إلى مستندات API عن طريق الضغط على مفتاح Ctrl+H .
لبدء تطبيق Indeck على Quest عن بُعد من الكمبيوتر ، قم بتشغيل أمر adb shell am start org.indeck.app/org.indeck.app.Activity . يمكن تعديل نفس الخط لتشغيله داخل Termux Shell على Quest (يمكن أيضًا تشغيل Termux GIT على Quest).