Indeck ist eine eigenständige 3D -Codierungsanwendung für die Entwicklung des VR aus der VR. Das Projekt ist in Lua geschrieben und läuft über den Lövr -Framework. Lövr und Indeck können auf alle häufig zugänglichen VR -Plattformen abzielen.

Der Hauptvorteil der Incoder -Umgebung ist eine enge Iterationsschleife zwischen dem LUA -Code und der interpretierten 3D -Laufzeit. Wenn der Code sofort mit der ausführenden Laufzeit synchronisiert wird, wird die Entwicklung ansprechender und produktiver. Nicht ständig abheben und das VR -Headset anziehen müssen, beseitigt auch einige Reibung.
Die Fokusplattform ist Oculus Quest mit Connected Bluetooth -Tastatur. Obwohl Quest als Verbraucherplattform und Ziel für die Desktop -Entwicklung angesehen wird, verwandelt Indeck es in eine eigenständige VR -Entwicklungseinheit. Incoder arbeitet in jeder anderen Umgebung, die Lövr ausführen kann und die Tastatur angehängt hat.
In der aktuellen Stufe ist Indeck funktional und nützlich, aber nicht besonders benutzerfreundlich. Ich benutze es regelmäßig für VR -Prototypen und optimierte vorhandene Projekte. Das Projekt soll eine einfache und erweiterbare Entwicklungsumgebung sein, nicht um eine merkmalspolierte IDE mit stabiler API.
Indeck besteht aus einem 3D-gerenderten Lua-Code-Editor und dem Kabelbaum für die Ausführung von Benutzerprojekten. Mehrere Editor -Instanzen können im Raum geöffnet und frei positioniert werden. Ein einzelner Editor wird zu Beginn geöffnet und kann zum Laden und Ausführen eines Lövr -Projekts verwendet werden. Wenn das Projekt ausgeführt wird, wird es ausgeführt und die Hauptquellendatei wird im Code -Editor geöffnet. Wenn der Benutzer den Projektcode bearbeitet, können er gelegentlich die Laufzeit neu laden, um den geänderten Code erneut auszuführen. Sowohl ein teilweise Nachladen als auch die vollständige Neustart der Umgebung werden unterstützt. Wenn der Benutzer einen Fehler in seinem Code einführt, wird die Projektlaufzeit innehalten und der Benutzer hat die Möglichkeit, den Fehler mit Hilfe einer Stapelspur schnell zu beheben und die Ausführung neu zu starten.
Durch Design kann die Incoder -Umgebung nur auf Dateien im "Speichern" des LOVR -Verzeichnisses zugreifen. Jedes vorhandene Lövr-Projekt sollte außerhalb des Boxs in der Indeck-Umgebung funktionieren, sobald es an den richtigen Ort kopiert wird:
/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 Der Code -Editor ist eine ziemlich Standard (wenn auch minimale) Implementierung von Texteditor mit Lua -Syntax -Hervorhebung, die hauptsächlich nach Sublime -Text modelliert ist. Der Editor wird vollständig von Tastaturverknüpfungen ohne Dialoge, Popups oder Modale angetrieben. Maus- und VR -Controller -Interaktionen fehlen vollständig, um Zusammenstöße bei der Steuerung von Benutzerprojekten zu vermeiden.
HINWEIS: Der Editor bittet nie, die Änderungen beim Schließen zu speichern, und alle nicht geretteten Fortschritte gehen verloren
Der Benutzer kann eine einzelne LUA -Code unter dem Cursor ausführen, indem Sie die Strg+Shift+Enter drücken. Der Code wird im Kontext des aktuell aktiven Editors ausgeführt. Das Ausführungsergebnis wird in der Statuszeile oben im Editor angezeigt. Zum Beispiel wird das Eingeben von return 2 + 2 im Editor und die Ausführung dieser Zeile "OK> 4" in die Statuszeile eingerichtet, wodurch der Status der Ausführung und das Ergebnis angezeigt wird.
Dieser Mechanismus zur Ausführung von Codezeile wird als direkte Möglichkeit für die Interaktion mit der Entwicklungsumgebung verwendet. Durch das Durchsuchen der Dateistruktur und die Auswahl eines Projekts zur Ausführung erfolgt durch die Auswahl einer Linie mit dem vorbereiteten Befehl und der Ausführung mit Strg+Shift+Eingabetaste . Diese Befehle werden automatisch basierend auf Verzeichnislisten konstruiert.
Verknüpfungen:
Ctrl+Shift+Enter führt bearbeitete Zeile als Single-Line-Lua-Chunk ausCtrl+Shift+Home stellt den Editor vor der aktuellen KopforientierungCtrl+P erstellt einen neuen EditorCtrl+W schließt den aktuellen Editor (auch mit nicht geretteten Änderungen!)Ctrl+Tab Wählt den nächsten Editor ausCtrl+O listet Dateien zum Öffnen in aktuellem Editor auf (Absetzt nicht gespeicherte Änderungen!)Ctrl+S spart Änderungen an der geöffneten DateiCtrl+H öffnet die LOVR -API -Dokumentation in einem separaten EditorCtrl+Shift+S speichert aktuelle Redakteure in einer SitzungsdateiCtrl+Shift+L öffnet die Editoren, die aus einer Sitzungsdatei geladen wurdenCtrl+Shift+P führt den Codeprofiler für die Dauer einer Sekunde aus und zeigt den Bericht im separaten Editor anCtrl+down Jumps 10 Zeilen nach unten springt nach untenCtrl+up Jumps 10 clears hoch Wenn das Benutzerprojekt geladen wird, werden seine Rückruffunktionen (Zeichnen, Update ...) so ausgeführt, dass das Projekt im eigenständigen Modus ausgeführt würde.
Das Ändern des Codes und das Ausführen des Benutzerprojekts kann zu einem Laufzeitfehler führen. Die Interpretationsumgebung wird dann eingestellt, das das Projekt ausführt, während offene Redakteure weiterhin funktionieren. Ein neuer Editor -Bereich enthält die Stapelverfolgung am Fehlerpunkt. Wenn der Fehler mit der Verwendung des STRL+R behandelt wird, um das Benutzerprojekt von Anfang an auszuführen.
Vor der Ausführung des Projekts ist sein Verzeichnis in / root montiert. Auf diese Weise kann der Benutzercode beim Laden von Vermögenswerten weiterhin relative Pfade verwenden, wie dies normalerweise bei der Entwicklung außerhalb der Incoder -Umgebung tun würde. Zum Beispiel, wenn Bark.ogg im Benutzerprojektverzeichnis existiert, kann der lovr.data.newSound('bark.ogg') zum Laden verwendet werden.
Bitte melden Sie alle Unstimmigkeiten zwischen dem Lövr -Projekt unabhängig und in der Incoder -Umgebung.
Es gibt zwei Methoden zur Aktualisierung einer laufenden Umgebung mit einem geänderten Code. Die grundlegende Methode ist ein vollständiger Neustart der Anwendung. Alle Codeänderungen in allen Dateien werden neu geladen. Der Hauptnachteil ist, dass der gesamte Editor -Kontext verloren geht (geöffnete Dateien, Scrollpositionen, Änderungen). Stellen Sie daher sicher, dass Sie die Editor -Sitzung manuell speichern, bevor Sie neu gestartet werden. Der Neustart kann auch langsam sein, wenn das Benutzerprojekt eine Menge Initialisierungscode (Laden oder Generieren von Vermögenswerten) hat.
Die andere Reload-Methode ist der partielle Hot-Swap, der die main.lua Quellcode-Datei des Benutzerprojekts wiedergeführt wird. Nur das Benutzerprojekt wird neu geladen, sodass der Editorkontext erhalten bleibt. Dies ermöglicht schnelle und effiziente Iterationszyklen, wenn sie korrekt verwendet werden. Die Hot -Swap -Methode kann beim Entwerfen der App -Logik, der Änderung des Shadercode oder der Optimierungskonstanten sehr effektiv sein.
Es gibt einige Regeln, welche Teile der Laufzeit beim Hotswaping betroffen sind. Dies sind nur die Standard -LUA -Mechanismen für Lademodule; Es gibt keine zusätzliche "Magie" bei der Arbeit. Trotzdem sind sie eine häufige Fehlerquelle und wichtig zu verstehen. Der Inck selbst wird die main.lua Quelldatei nur erneut ausführen, indem die Laufzeit gezwungen wird, die zuvor geladene Version zu vergessen: package.loaded['main'] = nil . Wenn ein anderes Modul während der vorherigen Ausführung bereits von main.lua require wurde, wird es nicht erneut verarbeitet und die bereits beladene Version wird wiederverwendet. Um das Submodul require(module_name) zu erzwingen main.lua dynamisch auf dem Hot-Swap neu zu geladen, fügen Sie das package.loaded['module_name'] = nil ein. Dies ermöglicht eine feinkörnige Kontrolle darüber, welche Teile des Benutzerprojekts während des Hot-Swaps erneut ausgeführt werden sollen, und Teile der Anwendungsdaten/-status können über den Hot-Tausch erhalten bleiben.
Wenn der Editor Dateien im Root -Verzeichnis auflistet, werden auch Optionen aufgeführt, um zwischen verschiedenen Benutzerprojekten zu wechseln. Dadurch wird das neue Projekt in derselben Umgebung ausgeführt. Es funktioniert oft gut, kann aber subtile Probleme verursachen, wenn geladene Projekte den globalen Staat ändern. Es wird empfohlen, die App neu zu starten, bevor Projekte wechseln, um sicherzustellen, dass die Umgebung sauber ist.
Verknüpfungen:
Ctrl+Shift+R startet die Anwendung neuCtrl+R Reloads (Hot Swap) Die main.lua des BenutzermodulsEsc tritt in das Betriebssystem aus Während Lövr unterstützt, dass das Projekt aus einem Dateinamen ausgeführt wird, unterstützt Incoder nur die Ausführung von Verzeichnissen mit der main.lua -Datei im Inneren. Benutzerprojekte sollten keine Datei oder Ordner mit dem Namen projects enthalten. Eine solche Entität würde mit dem Verzeichnis "Projekte" in Konflikt geraten, sobald das Benutzerprojektverzeichnis an der Stammin des Save -Verzeichnisses montiert ist. Die indeck-session.lua ist ein weiterer reservierter Dateiname, der intern verwendet wird.
Die conf.lua -Datei des Benutzerprojekts wird nicht verarbeitet. Incoder versucht, eine eigene vielseitige Konfiguration bereitzustellen, die die Anforderungen verschiedener Projekte decken sollte. Wenn Ihr Projekt beim Laufen innerhalb von Incoder Probleme hat, öffnen Sie bitte ein Problem.
Dem Code -Editor fehlt einige grundlegende Funktionen, wie die Suchfunktion und den Befehl rückgängig.
Es ist ein Kenntnis von Lövr -Framework erforderlich, um vollständige Anwendungen effizient zu entwickeln, ohne das Headset ständig abzunehmen, um die Dokumentation nachzuschlagen. Obwohl die Incoder -Umgebung nicht so lesbar wie offizielle Dokumentation ist, enthält sie alle Lövr -API -Dateien, die Funktionen und Erklärungen von Parametern auflisten. Die API -Dokumente sind durch Drücken der Ctrl+H -Taste zugänglich.
Führen Sie die adb shell am start org.indeck.app/org.indeck.app.Activity Command aus, um die Incoder -App auf Quest aus dem PC aus dem PC zu starten. Die gleiche Zeile kann für das Ausführen innerhalb der Terux -Shell bei Quest angepasst werden (Terux kann auch Git auf Quest ausführen).