Indeckは、VR内からVRを開発するためのスタンドアロン3Dコーディング環境アプリケーションです。このプロジェクトはLUAで書かれており、Lövrフレームワークの上にあります。 LövrとIndeckは、一般的にアクセス可能なすべてのVRプラットフォームをターゲットにできます。

InDeck環境の主な利点は、LUAコードと解釈された3Dランタイムの間の緊密なイテレーションループです。コードが実行されるランタイムに即座に同期されると、開発はより魅力的で生産的になります。常に離陸してVRヘッドセットを着用する必要がなく、摩擦もなくなります。
フォーカスプラットフォームは、接続されたBluetoothキーボードを備えたOculus Questです。クエストは消費者プラットフォームであり、デスクトップ開発のターゲットと見なされますが、IndeckはそれをスタンドアロンのVR開発ユニットに変えます。 Indeckは、Lövrを実行できる他の環境で機能し、キーボードが添付されています。
現在の段階では、Indeckは機能的かつ便利ですが、ユーザーフレンドリーではありません。 VRのプロトタイピングと既存のプロジェクトの調整に定期的に使用しています。このプロジェクトは、シンプルで拡張可能な開発環境であり、安定したAPIを備えた機能フルの洗練されたIDEではありません。
Indeckは、3DレンダリングされたLUAコードエディターと、ユーザープロジェクトの実行のためのハーネスで構成されています。複数のエディターインスタンスを開いて、空間に自由に配置できます。 STARTで1人のエディターが開かれ、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コントローラーの相互作用は、ユーザープロジェクトでの制御処理との衝突を避けるために完全に存在しません。
注:編集者は、閉鎖時に変更を保存するように求められず、救済されていない進捗が失われます
ユーザーは、Ctrl+Shift+Enterを押すことにより、カーソルの下でLUAコードの単一行を実行できます。コードは、現在アクティブなエディターのコンテキストで実行されます。実行結果は、エディターの上部のステータス行に表示されます。たとえば、エディターでreturn 2 + 2と入力してそのラインを実行すると、ステータスラインに「OK> 4」が表示され、実行のステータスと結果が示されます。
コードの行を実行するこのメカニズムは、開発環境と対話するための直接的な方法として使用されます。ファイル構造を閲覧し、実行するプロジェクトを選択することは、準備されたコマンドを使用して行を選択し、 Ctrl+Shift+Enterで実行することによって行われます。これらのコマンドは、ディレクトリリストに基づいて自動的に構築されます。
ショートカット:
Ctrl+Shift+Enter Executes編集された行は、シングルライン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 1秒間コードプロファイラーを実行し、別のエディターにレポートを表示しますCtrl+down 10行の下にジャンプしますCtrl+upは10列にジャンプしますユーザープロジェクトがロードされると、プロジェクトがスタンドアロンモードで実行された場合、コールバック関数(描画、更新...)が実行されます。
コードを変更してユーザープロジェクトを実行すると、ランタイムエラーが発生する可能性があります。通訳環境はプロジェクトの実行を停止し、オープンエディターは引き続き機能します。新しいエディターペインが、エラーのポイントにスタックトレースを含む表示されます。エラーが処理された場合、 Ctrl+Rを使用して、最初からユーザープロジェクトを実行します。
プロジェクトを実行する前に、そのディレクトリは/ rootに取り付けられています。これにより、ユーザーコードは、Indeck環境の外部で開発するときに通常行うように、資産をロードするときに相対パスを使用し続けることができます。たとえば、 bark.oggがユーザープロジェクトディレクトリに存在する場合、 lovr.data.newSound('bark.ogg')使用してロードできます。
Lövrプロジェクトを独立してINDECK環境内で実行することとの矛盾を報告してください。
変更されたコードを使用して、実行中の環境を更新する2つの方法があります。基本的な方法は、アプリケーションの完全な再起動です。すべてのファイルにおけるすべてのコード変更がリロードされます。主な欠点は、すべてのエディターのコンテキストが失われ(ファイルを開き、位置をスクロールし、変更)、再起動する前にエディターセッションを手動で保存するようにしてください。ユーザープロジェクトに多くの初期化コード(ロードまたは生成資産)がある場合、再起動は遅くなる可能性があります。
もう1つのリロード方法は、部分的なホットスワップで、ユーザープロジェクトのmain.luaソースコードファイルを再実行するように強制します。ユーザープロジェクトのみがリロードされるため、エディターのコンテキストが保持されます。これにより、正しく使用すると、迅速かつ効率的な反復サイクルが可能になります。アプリロジックを設計したり、シェーダーコードを変更したり、定数を調整する場合、ホットスワップ方法は非常に効果的です。
ホットウェーピング時にランタイムのどの部分に影響を受けるかについては、いくつかのルールがあります。これらは、モジュールをロードするための標準のLUAメカニズムにすぎません。職場には追加の「魔法」はありません。それでも、それらは一般的なエラーの原因であり、理解することが重要です。 InDeck自体は、ランタイムに以前にロードされたバージョンを忘れさせることにより、 main.luaソースファイルのみを再実行します: package.loaded['main'] = nil 。別のモジュールが既にmain.luaからdをrequire場合、以前の実行中にLuaから再び処理されず、既にロードされたバージョンが再利用されます。サブモジュールを強制的にホットスワップに動的にリロードするようにするには、 package.loaded['module_name'] = nil line in nil line in main.lua file in require(module_name)コマンドを挿入します。これにより、ホットスワップ中にユーザープロジェクトのどの部分が再実行されるかについて、きめ細かい制御が可能になり、アプリケーションデータ/状態の一部をホットスワップ全体に保存できます。
エディターがルートディレクトリにファイルをリストしている場合、異なるユーザープロジェクトを切り替えるオプションも表示されます。これにより、同じ環境内で新しいプロジェクトが実行されます。多くの場合、うまく機能しますが、ロードされたプロジェクトがグローバル状態を変更すると、微妙な問題を引き起こす可能性があります。環境がきれいであることを確認するために、プロジェクトを切り替える前にアプリを再起動することをお勧めします。
ショートカット:
Ctrl+Shift+Rアプリケーションを再起動しますCtrl+Rリロード(ホットスワップ)ユーザーモジュールのmain.luaEscはOSに出ますLövrはファイル名からプロジェクトの実行をサポートしていますが、Indeckは内部のmain.luaファイルを使用して実行ディレクトリのみをサポートしています。ユーザープロジェクトは、 projectsという名前のファイルまたはフォルダーを含めるべきではありません。このようなエンティティは、ユーザープロジェクトディレクトリが保存ディレクトリのルートに取り付けられると、「プロジェクト」ディレクトリと衝突します。 indeck-session.lua内部で使用される別の予約されたファイル名です。
ユーザープロジェクトのconf.luaファイルは処理されません。 Indeckは、さまざまなプロジェクトのニーズをカバーする独自の多用途の構成を提供しようとします。 Indeck内で実行されたときにプロジェクトに問題がある場合は、問題を開いてください。
コードエディターには、検索機能やUNDOコマンドなど、いくつかの基本的な機能がありません。
ドキュメントを調べるためにヘッドセットを絶えず取り除くことなく、完全なアプリケーションを効率的に開発するためには、Lövrフレームワークの実用的な知識が必要です。公式のドキュメントほど読み取れないものではありませんが、InDeck環境には、パラメーターの関数と説明をリストするすべてのLövrAPIファイルが含まれています。 APIドキュメントにはCtrl+Hキーを押すことでアクセスできます。
PCからリモートでQuestのIndeckアプリを開始するには、 adb shell am start org.indeck.app/org.indeck.app.Activityコマンドを実行します。同じラインを、QuestのTermuxシェル内で実行するために調整できます(TermuxはQuestでGitを実行できます)。