Indeck adalah aplikasi lingkungan pengkodean 3D mandiri untuk mengembangkan VR dari dalam VR. Proyek ini ditulis di Lua dan berjalan di atas kerangka kerja Lövr. Lövr dan Indeck dapat menargetkan semua platform VR yang dapat diakses secara umum.

Manfaat utama dari lingkungan Indeck adalah lingkaran iterasi yang ketat antara kode LUA dan runtime 3D yang ditafsirkan. Ketika kode secara instan disinkronkan ke runtime yang dieksekusi, pengembangan menjadi lebih menarik dan produktif. Tidak harus terus -menerus lepas landas dan mengenakan headset VR juga menghilangkan beberapa gesekan.
Platform fokus adalah Oculus Quest dengan keyboard Bluetooth yang terhubung. Meskipun Quest dianggap sebagai platform konsumen dan target untuk pengembangan desktop, Indeck mengubahnya menjadi unit pengembangan VR yang mandiri. Indeck bekerja di lingkungan lain yang dapat menjalankan Lövr dan memiliki keyboard terpasang.
Pada tahap saat ini indeck fungsional dan bermanfaat, tetapi tidak terlalu ramah pengguna. Saya menggunakannya secara teratur untuk prototipe VR dan mengubah proyek yang ada. Proyek ini akan menjadi lingkungan pengembangan yang sederhana dan dapat diperpanjang, bukan IDE yang dipoles dengan fitur dengan API yang stabil.
Indeck terdiri dari editor kode LUA yang diserahkan 3D dan harness untuk eksekusi proyek pengguna. Beberapa instance editor dapat dibuka dan diposisikan secara bebas di ruang angkasa. Seorang editor tunggal dibuka pada awal dan dapat digunakan untuk memuat dan menjalankan proyek Lövr apa pun. Ketika proyek dijalankan, itu akan mulai berjalan dan file sumber utama akan dibuka di editor kode. Saat pengguna mengedit kode proyek, mereka kadang-kadang dapat memuat ulang runtime untuk mengeksekusi ulang kode yang dimodifikasi. Baik reload parsial dan restart lingkungan lengkap didukung. Jika pengguna memperkenalkan kesalahan dalam kode mereka, runtime proyek akan dijeda, dan pengguna mendapat kesempatan untuk dengan cepat memperbaiki kesalahan dengan bantuan jejak tumpukan dan memulai kembali eksekusi.
Dengan desain, lingkungan Indeck hanya dapat mengakses file di dalam direktori "simpan" Lovr. Setiap proyek Lövr yang ada harus bekerja di luar kotak di dalam lingkungan Indeck setelah disalin ke lokasi yang benar:
/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 Editor kode adalah implementasi editor teks yang cukup standar (jika minimal) dengan Sintaks Sintaks LUA, sebagian besar dimodelkan setelah teks luhur. Editor digerakkan sepenuhnya oleh pintasan keyboard tanpa dialog, sembulan, atau modal. Interaksi pengontrol mouse dan VR sama sekali tidak ada untuk menghindari bentrokan dengan penanganan kontrol dalam proyek pengguna.
Catatan: Editor tidak pernah meminta untuk menyimpan perubahan pada penutupan dan kemajuan yang belum diselamatkan hilang
Pengguna dapat menjalankan satu baris kode LUA di bawah kursor dengan menekan Ctrl+Shift+Enter . Kode ini dijalankan dalam konteks editor yang saat ini aktif. Hasil eksekusi muncul di garis status di atas editor. Misalnya, mengetik return 2 + 2 di editor dan mengeksekusi jalur itu akan menempatkan "OK> 4" di baris status, menunjukkan status eksekusi dan hasilnya.
Mekanisme pelaksanaan kode kode ini digunakan sebagai cara langsung untuk berinteraksi dengan lingkungan pengembangan. Menjelajahi struktur file dan memilih proyek untuk dieksekusi dilakukan dengan memilih baris dengan perintah yang disiapkan dan mengeksekusi dengan Ctrl+Shift+Enter . Perintah ini secara otomatis dibangun berdasarkan daftar direktori.
Pintasan:
Ctrl+Shift+Enter Execute Line yang Diedit sebagai Lua Baris Single ChunkCtrl+Shift+Home menempatkan editor di depan orientasi kepala saat iniCtrl+P membuat editor baruCtrl+W menutup editor saat ini (bahkan dengan perubahan yang belum diselamatkan!)Ctrl+Tab Memilih Editor BerikutnyaCtrl+O mencantumkan file untuk dibuka di editor saat ini (membuang perubahan yang belum diselamatkan!)Ctrl+S menyimpan perubahan pada file yang dibukaCtrl+H membuka dokumentasi API Lovr di editor terpisahCtrl+Shift+S menyimpan editor saat ini ke dalam file sesiCtrl+Shift+L membuka editor yang dimuat dari file sesiCtrl+Shift+P menjalankan profiler kode selama satu detik dan menunjukkan laporan di editor terpisahCtrl+down melompat 10 baris ke bawahCtrl+up melompat 10 baris ke atas Ketika proyek pengguna dimuat, fungsi panggilan baliknya (draw, perbarui ...) akan dieksekusi seperti yang mereka lakukan jika proyek dieksekusi dalam mode mandiri.
Mengubah kode dan menjalankan proyek pengguna dapat menghasilkan kesalahan runtime. Lingkungan penafsiran kemudian akan berhenti menjalankan proyek, sementara editor terbuka akan terus berfungsi. Panel editor baru akan muncul berisi jejak tumpukan pada titik kesalahan. Ketika kesalahan ditangani dengan menggunakan Ctrl+R untuk menjalankan proyek pengguna dari awal.
Sebelum menjalankan proyek, direktori dipasang ke / root. Ini memungkinkan kode pengguna untuk terus menggunakan jalur relatif saat memuat aset, seperti yang biasanya dilakukan ketika mengembangkan di luar lingkungan Indeck. Misalnya jika bark.ogg ada di direktori proyek pengguna lovr.data.newSound('bark.ogg') dapat digunakan untuk memuatnya.
Harap laporkan perbedaan antara menjalankan proyek Lövr secara mandiri dan dalam lingkungan Indeck.
Ada dua metode untuk memperbarui lingkungan yang berjalan dengan kode yang dimodifikasi. Metode dasar adalah restart lengkap dari aplikasi. Semua perubahan kode di semua file akan dimuat ulang. Kelemahan utama adalah bahwa semua konteks editor hilang (file yang dibuka, posisi gulir, perubahan), jadi pastikan untuk menyimpan sesi editor secara manual sebelum memulai kembali. Restart juga dapat lambat jika proyek pengguna memiliki banyak kode inisialisasi (memuat atau menghasilkan aset).
Metode Reload Lainnya adalah Parsial Hot Swap, yang memaksa file kode sumber main.lua Proyek Pengguna akan dieksekusi ulang. Hanya proyek pengguna yang dimuat ulang, sehingga konteks editor dipertahankan. Ini memungkinkan siklus iterasi yang cepat dan efisien jika digunakan dengan benar. Metode swap panas bisa sangat efektif saat merancang logika aplikasi, memodifikasi kode shader, atau mengutak -atik konstanta.
Ada beberapa aturan tentang bagian mana dari runtime yang akan terpengaruh saat hotswaping. Ini hanya mekanisme LUA standar untuk memuat modul; Tidak ada 'sihir' tambahan di tempat kerja. Masih mereka adalah sumber kesalahan yang umum dan penting untuk dipahami. Indeck dengan sendirinya hanya akan mengeksekusi ulang file sumber main.lua dengan memaksa runtime untuk melupakan versi yang sebelumnya dimuat: package.loaded['main'] = nil . Jika modul lain sudah require 'D dari main.lua selama eksekusi sebelumnya, itu tidak akan diproses lagi, dan versi yang sudah dimuat akan digunakan kembali. Untuk memaksa sub-modul untuk dimuat ulang secara dinamis pada swap panas, masukkan package.loaded['module_name'] = nil Line dalam file main.lua sebelum perintah require(module_name) . Hal ini memungkinkan kontrol berbutir halus di mana bagian-bagian dari proyek pengguna akan dieksekusi ulang selama pertukaran panas, dan bagian dari data/status aplikasi dapat diawetkan di seluruh pertukaran panas.
Ketika editor mencantumkan file di direktori root, itu juga akan menyajikan opsi untuk beralih di antara berbagai proyek pengguna. Ini akan melaksanakan proyek baru dalam lingkungan yang sama; Ini sering bekerja dengan baik tetapi dapat menyebabkan masalah halus jika proyek yang dimuat mengubah negara global. Disarankan untuk memulai ulang aplikasi sebelum beralih proyek untuk memastikan lingkungannya bersih.
Pintasan:
Ctrl+Shift+R restart aplikasiCtrl+R Reloads (Hot Swap) main.lua dari modul penggunaEsc keluar ke OS Sementara Lövr mendukung menjalankan proyek dari nama file apa pun, Indeck hanya mendukung pelaksanaan direktori dengan file main.lua di dalamnya. Proyek pengguna tidak boleh berisi file atau folder bernama projects . Entitas seperti itu akan berbenturan dengan direktori "Proyek" setelah direktori proyek pengguna dipasang ke akar direktori Simpan. The indeck-session.lua adalah nama file lain yang dipesan digunakan secara internal.
File conf.lua proyek pengguna tidak akan diproses. Indeck mencoba memberikan konfigurasi serbaguna sendiri, yang harus mencakup kebutuhan berbagai proyek. Jika proyek Anda memiliki masalah saat berjalan di dalam Indeck, silakan buka masalah.
Editor kode tidak memiliki beberapa fungsi dasar, seperti fitur pencarian dan perintah undo.
Pengetahuan kerja kerangka kerja Lövr diperlukan untuk secara efisien mengembangkan aplikasi lengkap, tanpa melepas headset terus -menerus untuk mencari dokumentasi. Meskipun tidak dapat dibaca seperti dokumentasi resmi, lingkungan Indeck memang mencakup semua file API Lövr yang mencantumkan fungsi dan penjelasan parameter. Dokumen API dapat diakses dengan menekan tombol Ctrl+H .
Untuk memulai aplikasi Indeck di Quest dari jarak jauh dari PC, jalankan perintah adb shell am start org.indeck.app/org.indeck.app.Activity . Baris yang sama dapat disesuaikan untuk berjalan dalam termux shell pada pencarian (Termux juga dapat menjalankan git pada pencarian).