Indeck是一個獨立的3D編碼環境應用程序,用於從VR內開發VR。該項目用LUA編寫,並在Lövr框架之上運行。 Lövr和Indeck可以針對所有常見的VR平台。

Indeck環境的主要好處是LUA代碼和解釋3D運行時的緊密迭代循環。當代碼即時與執行運行時同步時,開發將變得更具吸引力和富有成效。不必不斷起飛並戴上VR耳機也消除了一些摩擦。
重點平台是帶有連接的藍牙鍵盤的Oculus Quest。儘管Quest被認為是消費者平台和桌面開發的目標,但Indeck將其變成了獨立的VR開發單元。 Indeck在任何其他可以運行lövr並附有鍵盤的環境中工作。
在當前階段,Indeck具有功能性和有用,但並非非常友好。我定期將其用於VR原型製作和調整現有項目。該項目將成為一個簡單且可擴展的開發環境,而不是具有穩定API的功能充實的IDE。
Indeck由3D渲染的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/projects /< user>/.local/share/lovr/indeck/projectsC:Users<user>AppDataRoamingLOVRindeckprojects 代碼編輯器是具有LUA語法突出顯示的文本編輯器的非常標準的(如果最少)的實現,主要以崇高的文本為基礎。編輯器完全由鍵盤快捷鍵驅動,沒有任何對話框,彈出式或模態。鼠標和VR控制器的交互完全不存在,以避免與用戶項目中的控制處理髮生衝突。
注意:編輯永遠不要要求保存關閉的更改,任何未保存的進度都將丟失
用戶可以通過按CTRL+Shift+Enter執行光標下的LUA代碼。該代碼是在當前活動編輯器的上下文中執行的。執行結果出現在編輯器頂部的狀態行中。例如,在編輯器中鍵入return 2 + 2並執行該行將在狀態行中放置“確定> 4”,以表明執行狀態和結果。
執行代碼行的這種機制被用作與開發環境互動的直接方法。瀏覽文件結構並選擇執行項目是通過選擇準備的命令並使用CTRL+Shift+Enter執行的線來完成的。這些命令是根據目錄列表自動構造的。
快捷方式:
Ctrl+Shift+Enter執行編輯行作為單線LUA塊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從一開始就運行用戶項目。
在執行項目之前,將其目錄安裝到/ root中。這使用戶代碼在加載資產時可以繼續使用相對路徑,就像它們在indeck環境之外開發時通常會這樣做。例如,如果bark.ogg存在於用戶項目目錄中,則可以使用lovr.data.newSound('bark.ogg')加載它。
請報告獨立運行Lövr項目和在Indeck環境中的任何差異。
有兩種使用修改代碼更新運行環境的方法。基本方法是應用程序的完整重新啟動。所有文件上的所有代碼更改都將重新加載。主要缺點是丟失了所有編輯器上下文(打開的文件,滾動位置,更改),因此請確保在重新啟動之前手動保存編輯器會話。如果用戶項目具有大量初始化代碼(加載或生成資產),則重新啟動也可能很慢。
另一個重新加載方法是部分熱交換,它迫使用戶項目的main.lua源代碼文件重新執行。只有重新加載用戶項目,因此保留了編輯器上下文。如果正確使用,這允許快速有效的迭代周期。在設計應用程序邏輯,修改著色器代碼或調整常數時,熱交換方法可能非常有效。
關於運行時的哪些部分將受到熱塑性影響,有一些規則。這些只是加載模塊的標準LUA機制。工作中沒有其他“魔術”。他們仍然是錯誤的常見來源,很重要。 indeck本身只會通過強迫運行時忘記先前加載的版本: package.loaded['main'] = nil來重新執行main.lua源文件。如果在上一個執行過程中已經require從main.lua出發的另一個模塊,則不會再次對其進行處理,並且已經加載的版本將被重複使用。要強制將子模塊在熱交換上動態重新加載的子模塊,請插入package.loaded['module_name'] = nil line在main.lua文件中之前的nil line require(module_name)命令。這允許在熱交換期間重新執行用戶項目的哪些部分,並可以在熱門交換過程中保留應用程序數據/狀態的一部分。
當編輯器在根目錄中列出文件時,它還將提供在不同用戶項目之間切換的選項。這將在同一環境中執行新項目;它通常運行良好,但如果加載項目改變了全球狀態,可能會引起細微的問題。建議在切換項目之前重新啟動應用程序,以確保環境乾淨。
快捷方式:
Ctrl+Shift+R重新啟動應用程序Ctrl+R重新加載(熱交換)用戶模塊的main.luaEsc退出操作系統雖然Lövr支持從任何文件名運行項目,但Indeck僅支持使用main.lua文件的執行目錄。用戶項目不應包含名稱projects的文件或文件夾。一旦將用戶項目目錄安裝到保存目錄的根目錄後,此類實體將與“項目”目錄發生衝突。 indeck-session.lua是內部使用的另一個保留文件名。
用戶項目的conf.lua文件將不會處理。 Indeck試圖提供自己的多功能配置,該配置應滿足不同項目的需求。如果您的項目在Indeck中運行時會出現問題,請打開問題。
代碼編輯器缺乏一些基本功能,例如搜索功能和撤消命令。
為了有效地開發完整的應用程序,需要對LöVR框架有工作知識,而無需不斷刪除耳機以查找文檔。雖然不像官方文檔那樣可讀,但indeck環境確實包含了列出參數功能和解釋的所有lövrAPI文件。通過按Ctrl+H鍵可以訪問API文檔。
要從PC遠程啟動Quest應用程序,請運行adb shell am start org.indeck.app/org.indeck.app.Activity命令。可以調整同一行以在Quest上的Termux Shell中運行(Termux也可以在任務上運行git)。