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)。