Indeck เป็นแอปพลิเคชันสภาพแวดล้อมการเข้ารหัส 3D แบบสแตนด์อโลนสำหรับการพัฒนา VR จากภายใน VR โครงการนี้เขียนขึ้นใน Lua และดำเนินการบนกรอบLövr Lövrและ Indeck สามารถกำหนดเป้าหมายแพลตฟอร์ม VR ที่เข้าถึงได้ทั่วไปทั้งหมด

ประโยชน์หลักของสภาพแวดล้อม indeck คือการวนซ้ำอย่างแน่นหนาระหว่างรหัส LUA และการตีความ 3D Runtime เมื่อรหัสถูกซิงโครไนซ์ทันทีกับรันไทม์ที่ดำเนินการการพัฒนาจะมีส่วนร่วมและมีประสิทธิผลมากขึ้น การไม่ต้องถอดชุดหูฟัง VR อย่างต่อเนื่องก็ช่วยลดแรงเสียดทานบางอย่าง
แพลตฟอร์มโฟกัสคือ Oculus Quest พร้อมแป้นพิมพ์บลูทู ธ ที่เชื่อมต่อ แม้ว่า Quest ถือเป็นแพลตฟอร์มผู้บริโภคและเป้าหมายสำหรับการพัฒนาเดสก์ท็อป แต่ Indeck จะเปลี่ยนเป็นหน่วยพัฒนา VR แบบสแตนด์อโลน Indeck ทำงานในสภาพแวดล้อมอื่น ๆ ที่สามารถเรียกใช้Lövrและติดคีย์บอร์ด
ในขั้นตอนปัจจุบัน indeck นั้นใช้งานได้และมีประโยชน์ แต่ไม่เป็นมิตรกับผู้ใช้อย่างมาก ฉันใช้มันเป็นประจำสำหรับการสร้างต้นแบบ VR และการปรับแต่งโครงการที่มีอยู่ โครงการนี้จะเป็นสภาพแวดล้อมการพัฒนาที่ง่ายและขยายได้ไม่ใช่ IDE ที่มีคุณสมบัติครบถ้วนพร้อม API ที่มีความเสถียร
Indeck ประกอบด้วยตัวแก้ไขรหัส LUA ที่แสดงผล 3D และสายรัดสำหรับการดำเนินการโครงการผู้ใช้ สามารถเปิดอินสแตนซ์ของตัวแก้ไขได้หลายอินสแตนซ์และวางตำแหน่งอย่างอิสระในอวกาศ ตัวแก้ไขเดียวถูกเปิดเมื่อเริ่มต้นและสามารถใช้ในการโหลดและดำเนินการโครงการ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 Executes Line ที่แก้ไขเป็น Lua Chunk สายเดียวCtrl+Shift+Home วางตัวแก้ไขไว้ด้านหน้าของการวางแนวศีรษะปัจจุบันCtrl+P สร้างตัวแก้ไขใหม่Ctrl+W ปิดตัวแก้ไขปัจจุบัน (แม้จะมีการเปลี่ยนแปลงที่ไม่ได้บันทึก!)Ctrl+Tab เลือกตัวแก้ไขถัดไปCtrl+O แสดงรายการไฟล์สำหรับการเปิดในตัวแก้ไขปัจจุบัน (ยกเลิกการเปลี่ยนแปลงที่ไม่ได้บันทึก!)Ctrl+S บันทึกการเปลี่ยนแปลงที่เปิดไฟล์Ctrl+H เปิดเอกสาร LOVR API ในตัวแก้ไขแยกต่างหาก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อย่างอิสระและภายในสภาพแวดล้อมแบบ Indect
มีสองวิธีในการอัปเดตสภาพแวดล้อมที่ใช้งานด้วยรหัสแก้ไข วิธีพื้นฐานคือการรีสตาร์ทอย่างสมบูรณ์ของแอปพลิเคชัน การเปลี่ยนแปลงรหัสทั้งหมดในทุกไฟล์จะถูกโหลดซ้ำ ข้อเสียเปรียบหลักคือบริบทของตัวแก้ไขทั้งหมดจะหายไป (ไฟล์ที่เปิด, ตำแหน่งเลื่อน, การเปลี่ยนแปลง) ดังนั้นตรวจสอบให้แน่ใจว่าได้บันทึกเซสชันตัวแก้ไขด้วยตนเองก่อนรีสตาร์ท การรีสตาร์ทอาจช้าลงหากโครงการผู้ใช้มีรหัสการเริ่มต้นจำนวนมาก (โหลดหรือสร้างสินทรัพย์)
วิธีการโหลดซ้ำอื่น ๆ คือการแลกเปลี่ยนฮอตบางส่วนซึ่งบังคับให้ไฟล์ซอร์สโค้ด main.lua ของโครงการผู้ใช้จะถูกดำเนินการอีกครั้ง เฉพาะโครงการผู้ใช้ที่โหลดซ้ำดังนั้นบริบทของตัวแก้ไขจึงได้รับการเก็บรักษาไว้ สิ่งนี้จะช่วยให้รอบการวนซ้ำที่รวดเร็วและมีประสิทธิภาพหากใช้อย่างถูกต้อง วิธีการสลับร้อนสามารถมีประสิทธิภาพมากเมื่อออกแบบตรรกะแอพปรับเปลี่ยนรหัส shader หรือค่าคงที่การปรับแต่ง
มีกฎบางอย่างเกี่ยวกับส่วนของรันไทม์ที่จะได้รับผลกระทบเมื่อ hotswaping นี่เป็นเพียงกลไก LUA มาตรฐานสำหรับการโหลดโมดูล ไม่มี 'เวทมนตร์' เพิ่มเติมในที่ทำงาน ยังคงเป็นแหล่งที่มาของข้อผิดพลาดและสำคัญที่จะเข้าใจ indeck ด้วยตัวเองจะทำการ execute ไฟล์ main.lua อีกครั้งโดยบังคับให้รันไทม์ลืมเกี่ยวกับเวอร์ชันที่โหลดก่อนหน้านี้: package.loaded['main'] = nil หากโมดูลอื่น require 'd จาก main.lua ในระหว่างการดำเนินการก่อนหน้านี้จะไม่ถูกประมวลผลอีกครั้งและเวอร์ชันที่โหลดแล้วจะถูกนำมาใช้ซ้ำ ในการบังคับให้โมดูลย่อยถูกโหลดซ้ำแบบไดนามิกบนการแลกเปลี่ยนแบบร้อนให้แทรก package.loaded['module_name'] = nil ในไฟล์ main.lua ก่อนที่จะ require(module_name) สิ่งนี้ช่วยให้สามารถควบคุมได้อย่างละเอียดว่าส่วนใดของโครงการผู้ใช้จะถูกดำเนินการอีกครั้งในระหว่างการแลกเปลี่ยนร้อนและส่วนต่างๆของข้อมูลแอปพลิเคชัน/สถานะสามารถเก็บรักษาไว้ในการแลกเปลี่ยนร้อน
เมื่อตัวแก้ไขกำลังแสดงรายการไฟล์ในไดเรกทอรีรูทมันจะนำเสนอตัวเลือกเพื่อสลับระหว่างโครงการผู้ใช้ที่แตกต่างกัน สิ่งนี้จะดำเนินโครงการใหม่ภายในสภาพแวดล้อมเดียวกัน มันมักจะทำงานได้ดี แต่อาจทำให้เกิดปัญหาที่ลึกซึ้งหากโครงการที่โหลดเปลี่ยนสถานะทั่วโลก ขอแนะนำให้รีสตาร์ทแอพก่อนที่จะเปลี่ยนโครงการเพื่อให้แน่ใจว่าสภาพแวดล้อมสะอาด
ทางลัด:
Ctrl+Shift+R สตาร์ทแอปพลิเคชันCtrl+R reloads (swap ร้อน) main.lua ของโมดูลผู้ใช้Esc ออกจากระบบปฏิบัติการ ในขณะที่Lövrรองรับการรันโครงการจากชื่อไฟล์ใด ๆ Indeck รองรับการดำเนินการไดเรกทอรีด้วยไฟล์ main.lua ภายในเท่านั้น โครงการผู้ใช้ไม่ควรมีไฟล์หรือโฟลเดอร์ชื่อ projects เอนทิตีดังกล่าวจะปะทะกับไดเรกทอรี "โครงการ" เมื่อไดเรกทอรีโครงการผู้ใช้ถูกติดตั้งไว้ที่รูทของไดเรกทอรีบันทึก indeck-session.lua เป็นชื่อไฟล์ที่สงวนไว้อีกชื่อหนึ่งที่ใช้ภายใน
ไฟล์ conf.lua ของโครงการผู้ใช้จะไม่ถูกประมวลผล Indeck พยายามจัดให้มีการกำหนดค่าอเนกประสงค์ของตัวเองซึ่งควรครอบคลุมความต้องการของโครงการที่แตกต่างกัน หากโครงการของคุณมีปัญหาเมื่อทำงานภายใน Indeck โปรดเปิดปัญหา
ตัวแก้ไขรหัสขาดฟังก์ชั่นพื้นฐานบางอย่างเช่นคุณสมบัติการค้นหาและคำสั่ง UNDO
จำเป็นต้องมีความรู้เกี่ยวกับกรอบการทำงานของLövrเพื่อพัฒนาแอพพลิเคชั่นที่สมบูรณ์อย่างมีประสิทธิภาพโดยไม่ต้องถอดหูฟังอย่างต่อเนื่องเพื่อค้นหาเอกสาร ในขณะที่ไม่สามารถอ่านได้ตามเอกสารอย่างเป็นทางการสภาพแวดล้อม Indect จะรวมไฟล์Lövr API ทั้งหมดที่แสดงรายการฟังก์ชั่นและคำอธิบายของพารามิเตอร์ เอกสาร API สามารถเข้าถึงได้โดยการกดปุ่ม Ctrl+H
ในการเริ่มต้นแอพ indeck บน Quest จากระยะไกลจากพีซีให้เรียกใช้ adb shell am start org.indeck.app/org.indeck.app.Activity คำสั่ง สามารถปรับบรรทัดเดียวกันสำหรับการรันภายใน termux shell on Quest (Termux ยังสามารถเรียกใช้ Git บน Quest)