見出し画像

【NeosVR】非公式ランチャーを作っている話

この記事はNeosVR(その2) Advent Calendar 2022の2日目の記事です。

NeosVR(その2) Advent Calendar 2022の初日の担当はよっしーさんで「NeosVRのオススメMod紹介」でした。
Modに興味のある方は必見ですね。
私もこの記事の対応が終わったら、いくつか追加で入れようと思いました。
3日目の枠はFukuroさんで、
「アイテムのサムネイルに好きな画像を設定する方法」です。


はじめに

こんにちは。いもっちです。
最近NeosVRでは、ものづくりにハマっていて、
他のセッションに顔を出せていないです。
NeosVRは複数人でワイワイとコミュニケーションを楽しむことも、
一人で黙々とものづくりすることも、
様々な楽しみ方ができることはNeosVRの良さの一つだと思っています。

さて、昨年のアドベントカレンダーでは、
【NeosVR】Headless Client用の管理アプリを作っている話
を書きました。

今回の記事もNeosVRに関する外部ツールの紹介です。
今回紹介するのは、「【NIL】NeosInformalLauncher」です。
タイトルにもあるように、NeosVRのランチャーです。

前から公開はしていたのですが、公表はしていなかったので
改めて記事にしました。

1. これってなんですか?

このアプリケーションは、NeosVR用の非公式ランチャーです。
NeosVRの起動はもちろん、起動のプリセット作成、フレンド状況やワールド一覧の確認など様々な機能があります。

2. 公式ランチャーとの違いは?

まず、現状のおさらいです。
NeosVRは様々な方法で起動することができます。
しかし、多くの場合使用されるのは、以下の2パターンかと思います。
1.Steamのライブラリから「▶プレイ」をクリック
2.NeosVR公式版の「NeosProLauncher.exe」から「Launch in VR」や
 「Launch on screan」で起動する。
※「Launch on screan」はデスクトップモードを指定した起動です。

NeosVR公式のProランチャー

他にも、Neos.exeのショートカットや「NeosLauncher.exe」を使うなど、
ユーザーによって様々な方法があるかと思います。

では、【NIL】はどうでしょうか?
NILでは、初回起動は以下のようになります。

初回はシンプルランチャーモードで起動します。
※画像ではSteamVRにチェックが入っていますが、初回起動時は何れのチェックも入っていません。


公式版ランチャーと比較した場合、大きく違うのは、
Quest向けの起動設定(RiftTouch(Quest))があることです。
Questユーザーは、公式版の「Launch in VR」で起動した場合、
正常に動作しない事象をよく耳にします。
その解決策として、Quest用の起動オプションを用意しました。

上記を踏まえて、
このアプリは、なにかしらのカスタム設定でNeosVRを起動しているユーザーに向けたツールとなっています。

※補足:
 この機能はNeosVRでサポートされている様々な起動オプションを
 使いやすいようにラップしたものになります。
 NeosVRにQuest向けの起動オプションは元々存在しています。
 あくまで、「NeosLauncher.exe」と比較した場合に、
 NILでボタンを追加したという話になります。
 また、「NeosLauncher.exe」は当初、
 暫定版としてリリースされましたが
 その後このランチャーの更新がなされていないということもあって、
 このツールを作成しています。


3. どんな機能がありますか?

先程は、起動の一部について紹介しました。
では、他にどんな機能があるか順番に紹介していきます。

1.ランチャーモード2種類について


まずは、大枠としてモード説明からします。
NILは先程も紹介した「シンプルランチャー」と「拡張ランチャー」モードの2種類存在します。

「シンプルランチャー」
初回起動時は「シンプルランチャー」モードになります。
NeosVRの起動のみに絞った最小限のランチャーモードです。
ハードウェア選択のみの「シンプル」タブと詳細に起動設定からプリセットを作成、選択可能な「カスタム」タブの2つからNeosVRを起動できます。

シンプルランチャーで起動した場合(カスタムタブ)


「拡張ランチャー」
拡張ランチャーモードは、
シンプルランチャーモードのすべての機能に加えて、フレンド状況やアクティセッション確認などの機能を含むランチャーモードになります。


拡張ランチャーモードで起動した場合



このモードの切り替えは「すべての起動の有効にする」のチェックの有無によって変更可能です。

2.「シンプルランチャー」モード

シンプルモードについて、以下で紹介します。
※「すべての起動の有効にする」にチェックを外した場合のモード

1.NeosVR公式版のインストール
NeosVR公式サイトで配布されているNeosVRがインストールされていない場合、「▶プレイ」ボタンではなく、「▶インストール」の表示になっています。
「▶インストール」ボタンをクリッククリックすると、直ちにNeosVRがインストールされます。

※補足:
 サイレントインストールされます。
 インストールダイアログなどは表示されません。

関係ないですが、Windows11でも特に問題なく動作します。


2.シンプル起動
使用する環境にあったハードウェアを選択
   ↓
「▶プレイ」ボタン クリック

ハードウェアは以下から選択できます。
- MetaQuest
- Steam
- Desktop
初期値は何も選択されていません。
何れも選択せずプレイをクリックした場合は、自動選択になります。
選択内容は保持され、次回起動時に引き継がれます。

3.カスタム起動


「カスタム」タブ クリック
   ↓
コンボボックスから任意の設定を選ぶ
   ↓
「▶プレイ」ボタン クリック

この起動方法は、予め起動設定を作成する必要があります。
起動設定の作成は、「編集」ボタン クリック によって、
「起動設定」画面が表示されます。

編集ボタンをクリックすると↓


Config名は新規作成として自動生成されます。


この画面で詳細にNeosVRの起動をカスタマイズし、保存することができます。
以下は設定例ですが、

  1. 開始時にクラウドホームを読み込まない

  2. キャッシュフォルダパス指定

  3. 競合するクラウドレコードを強制的に同期

  4. MOD

などがあります。
すべての設定項目には、チップテキスト(ヘルプ)があり、カーソルを合わせることで、対象の設定の詳細(引数の効果と引数名)が表示されます。

※ちなみに、この画面以外でもNILの殆どの項目はチップテキストが設定されているため、不明な項目はカーソルを合わせて見てください。

3-1.【カスタムタブ】起動設定のプリセット作成
「起動設定」で作成した設定を複数保持することができます。
また、フォルダアイコンが画面右端にあり、クリックすることでConfigの保存先フォルダが開きます。
ゴミ箱マークは、選択中の設定ファイルを破棄します。

3-2.【カスタムタブ】既存の起動ショートカットを取り込み、起動プリセットを作成
これまで、NeosVRを起動する際に、ショートカットに起動引数を設定していた方向けの機能です。
利用している起動引数付きの「ショートカットファイル」を「起動設定」画面にドラッグ・アンド・ドロップすることで、NILに取り込みが可能になっています。
複数のショートカットを一括で取り込むことができるるため、移行する際に便利だと思います。是非使ってみてください。
ちなみに、プリセット名はショートカットの名前になります。

3-3.【カスタムタブ】起動プリセットからショートカットを作成
「3-2.」とは逆に、選択したプリセット内容をショートカットとして出力することも可能です。
注意点として、通常、Windows側で文字数上限があるため、すべての起動設定(引数)を出力することはできません。
また、NIL独自オプションも出力できません。
例えば、「終了時にキャッシュ全削除」など。

3-4.【カスタムタブ】NeosVR起動と同時に起動するアプリケーションの設定
NeosVRを起動する際に、よく同時起動するアプリケーションがあれば指定しておくことで、NeosVR起動時にそのアプリケーションを自動で起動します。

3-5.【カスタムタブ】キャッシュの自動削除
NeosVRをプレイしていくとキャッシュが増加していきます。
それらのキャッシュを「終了時に削除」または「指定日数使用されていなければ削除」など設定し、キャッシュサイズを抑えることが可能です。
※キャッシュが溜まりすぎるとWindowsの起動速度が明らかに低下します。
 必要に応じて削除は必要だとは考えています。

特に削除設定入れてなかったので、今見たらこうなっていました。


 
3-6.【カスタムタブ】MODの有効オプション
MODありで起動する場合はこのチェックを入れてください。
※「-LoadAssembly Libraries\NeosModLoader.dll」が設定されます。
※今後、高度なMODアシスタント機能も入れたいと思っていますが、
 現状はこんな感じになっています。


3-7.【カスタムタブ】解像度など、Unityの起動オプションの追加
NeosVRは「Unity Standalone Player」のコマンドライン引数を受け付けています。
NILでもこれらを設定できるようにしました。
以下はNeosVRのWikiのコマンドライン引数の項目にも記載がある内容です。
 例:
  - モニター側の解像度設定
  - フルスクリーンモード
  - ウィンドウモード

他にも、独自に調査して利用可能だった引数を設定可能としています。
 例:
  - 起動時に使用するモニター(番号)
  - アンチエイリアスの有効化

3.「拡張ランチャー」モード

拡張ランチャーモードについて、以下で紹介します。
※「すべての起動の有効にする」にチェックを入れた場合のモード

4.NeosVRへのログイン
 NeosVRを起動せずに、NeosVRにログインすることができます。
 「拡張ランチャー」画面の右上に「ログイン」ボタンが表示されます。


「ログイン」ボタンをクリックすることで、ポップアップウィンドウが表示されます。
「ユーザー名」または「ユーザーID」または「メールアドレス」を入力し、「パスワード」を入力し、「ログイン」をクリックしてください。
「記憶する」のチェックを入れておくことにより、NILを次回起動時にもログインが継続されます。おすすめです。
また、このログインによって、NeosVR本体からログアウトするなどは発生しません。

U-IDでなく、ユーザー名でもアドレスでもOK!
※ログインが成功するとU-IDに置き換わります。


このログインは、後述するフレンド状況の確認や「ワールド」の「フレンドセッション」を確認する際に必要となります。
ログインに成功した場合、「拡張ランチャー」画面の右上にユーザー名、ユーザーID、登録日が表示されます。
また、「ログイン」ボタンが「ログアウト」ボタンになります。
必要に応じてログアウトしてください。

※補足:
 パスワードはNILで保持せず、ログインクリック時のみ使用する。
 また、ログアウトを行うことで、ログインのセッションが破棄される。

5.【要ログイン】NeosVRのフレンドの状況の確認
フレンドの一覧が取得可能です。


フレンドが参加可能なセッションにいる場合は、「参加」ボタンが表示されます。
フレンドアイコン、使用デバイス、フレンド名、参加中セッションアクセスレベル、セッション名が表示さます。
セッション名はマウスカーソルを合わせておくことで、セッションのサムネイルも確認可能です。
使用デバイスのアイコンは以下で分類されています。
  1.VRモード
  2.デスクトップモード
  3.ヘッドレス
  4.Bot

フレンドアイコン:デフォルト(設定なし)
デバイス:Headlessアイコン
フレンド名:imotchi_HDL4
参加中セッションアクセスレベル:Anyone(誰でも)
セッション名:★NMC Collection★
参加可能なため、「参加」ボタン表示
セッション名にマウスフォーカスしているため、セッションサムネイル表示。


また、セッション名をクリックすることで、セッションの詳細ページを確認することができます。セッションの詳細ページは後述しています。
上部にコンボボックスがあり、任意のフレンド名を入力し、
「検索」ボタンクリックで検索可能です。
フレンド一覧を更新するためには、「🔁」ボタンをクリックします。

5-1.フレンド関連で設定可能なリスト

  1. 起動時にフレンド一覧を取得実行
    NIL起動時にフレンドを自動取得するかどうかを「設定」から変更することができます。
    ※デフォルトはオンです。

  2. オフライン以外のフレンドを取得する
    チェックを外すことでオフラインのフレンドも取得します。
    ※デフォルトはオンです。

  3. 自動更新(3分)
    チェックを入れることで3分間隔でフレンド一覧を更新します。
    ※デフォルトはオフです。

  4. NeosContactSort MODと連携
    お気に入りのフレンドを該当MODのリストと共有します。
    詳細は後述しています。
    デフォルトはオフです。

  5. お気に入りユーザーがログイン時通知する
    チェックを入れることで、お気に入りユーザーがNeosVRにログイン中Windows通知が行われる。詳細は後述します。
    デフォルトはオフです。

  6. HeadlessとBotも通知する
    お気に入りユーザーの通知対象にHeadlessとBotも含めます。
    デフォルトはオフです。

5-2.【要ログイン】フレンドをお気に入り登録
フレンドをお気に入り登録することができます。
お気に入り登録するためには、フレンドのアイコンにある「☆」マークをクリックします。
「★」マークになれば、フレンドをお気に入り登録できた状態です。
解除する場合は、再度「★」をクリックすることで解除可能です。
お気に入り登録したフレンドは次回NIL起動時も読み込まれます。
お気に入り登録することで、フレンド一覧を更新時に上位に表示されます。
また、お気に入りしたユーザーはオンライン時にWindows通知が行われます(後述します)。

上がお気に入り:登録
下がお気に入り:解除

5-3.【要ログイン】【MOD連携】フレンドのお気に入りを「NeosContactSort」と連携
お気に入りフレンドの一覧は、「NeosContactSort」(hantabaru1014さんのフォーク版)の内容と連携することが可能です。
該当Modを使って、NeosVR内でお気に入りした内容がNILでも利用可能にまります。逆も可能です。
この設定は上述(5-1.)の「設定」画面から「NeosContactSort MODと連携」のチェックを入れることで有効となります。

MODの詳細は以下ページ参照してください。
https://github.com/hantabaru1014/NeosContactsSort

5-3.【要ログイン】お気に入りフレンドのオンライン時のWindows通知
この内容は、「12.」の「5.」のチェックオンにする必要があります。
お気に入りしたフレンドは、フレンドリストが取得されたタイミングで、参加可能なセッションの場合にWindows通知が発生します。

通知内容には以下が含まれます。
  1.セッションサムネイル
  2.フレンドアイコン
  3.セッション名
  4.アクセスレベル
  5.「フレンドに参加」ボタン
    ※「フレンドに参加」の詳細は後述します。

※タイトルがNeosVRHeadlessClientControlとなっていますが、気にしないでください・・・

6.アクティブセッションの確認
「ワールド」ボタンをクリックすることでウィンドウが開きます。
初期表示では、「アクティブセッション」一覧が自動取得、表示されます。
他にも「フレンドセッション」、「訪問履歴」、「お気に入りワールド」がありますが、現状は「フレンドセッション」以外は作成中です。
また、上部のヘッダー部分に「入力して検索...」があります。
検索内容を入力することで、該当のセッションが表示されます。


「◀ 1- 16 ▶」とあり、「◀」(PageDownキーにも対応)クリックで前のページ、「▶」(PageUpキーにも対応)クリックで次のページを表示します。


セッション一覧は「F5キー」によって、更新されます。
セッション名はNeosVRでサポートされている装飾テキストに一部対応しています。
装飾テキストの表示は不具合もあり、NeosVR同様に完全に表示することはできていないことに注意してください。

6-1.設定可能なリスト

  1. 自動更新(3分)
    チェックを入れることで3分間隔でフレンド一覧を更新します。
    アクティブセッション一覧、フレンドセッション一覧が対象です。
    ※デフォルトはオフです。

6-2.【要ログイン】フレンドのセッションの確認
「ワールド」画面の「フレンドセッション」をクリックすることで、フレンドが参加中のセッションを確認することができます。
表示内容等は、「17.」と変わらないため割愛します。

7.セッション情報の詳細を確認
「ワールド」画面で任意のセッションをクリックすることで、セッションの詳細ページを開くことができます。
詳細ページには以下が表示されます。

  1. セッション名(装飾テキストに一部対応)

  2. 参加中の人数

  3. 最大人数

  4. アクセスレベル

  5. ホスト名
    「👑(ユーザー名)」の形式で表示されます。

  6. ユーザー
    セッションに参加しているユーザーの一覧です。
    フレンドは緑色で表示されます。
    参加ユーザー名のプレフィックスに使用中のハードウェアが記載されます。
    「[VR]imotchi0112_vr 」のような感じです。
    ちなみに、「Screen」はデスクトップモードです。

  7. Worldの説明
    「▼ユーザー」クリックで表示されます。

  8. タグ一覧
    「▼Worldの説明」をクリックすることで表示されます。
    ワールドに設定されたタグの一覧をカンマ区切りで表示します。
    ※補足
     NILではテキストラベルはダブルクリックすることで、
     テキスト内容をコピー可能となっています。

  9. キャンセルボタン
    セッション詳細ページを閉じます。

  10. 参加
    NeosVRを起動し、該当のセッションに参加します。
    参加する際に使用する起動設定は、最後に使用した設定となります。
    ※参加については「8.セッションへの参加」で後述しています。

8.セッションへの参加
NeosVRを起動していない状態で、セッションURLをクリックすることでNeosVRが起動し、該当のセッションに参加できる機能がNeosVRにはあります。
しかし、通常はアクセスレベル(セッションタブの「このワールに入れる人」)が「フレンド」などのセッションは参加に失敗します。
NILでは、お気に入りユーザーWindows通知の「セッションに参加」やフレンドセッションへの「参加」などのNILを経由したセッションへの参加は、
これらのアクセスレベルによる参加失敗を回避することができます。

※補足
 もちろん、アクセスレベルがフレンドでも、対象がフレンドではない場合
 はセッションなどは参加できません。
 あくまでNeosVR起動時の「参加」と同じ挙動をします。
 これはNILに別アカウントでログインしていて、
 NeosVRは本アカウントでログインしていた場合などです。 

9.NILアプリの自動更新または更新通知
NILはまだ多くの実装できていない機能と膨大な量のバグが存在しています。
不定期に更新が配信され、GitHubで公開していますが、それを気にせず、
アプリ起動時に最新版が存在する場合は、自動更新または更新の通知が行われます。
自動更新を有効にしていた場合は、NILを自動でダウンロードし、
更新、再起動まで行います。
更新通知の場合(自動更新を無効)は、起動時に最新版が公開されていることが通知されます。
また、更新内容と「ダウンロード」ボタンが表示され、ダウンロードをクリックすることで、自動ダウンロードと展開を行います。
再配置は自身で行う必要があります。
ダウンロードしたファイルはユーザーの「ダウンロード」フォルダに配置されます。
また、更新通知画面で自動更新を有効にすることもできます。
特に問題がなければ自動更新がおすすめです。

4. 今後どうなりますか?

今後特に対応したいと考えているのは以下になります。
他にもあれば、教えてください。

  • 「う」パッチなどの修正パッチ対応(リクエスト)

  • PDFのインポート機能(画像へ変換してNeosVRへインポート)

  • webページのURLから画像でインポート

  • パフォーマンス情報をNeosVRに出力
    ※NHCCでテスト中です。

  • フレンド詳細情報
    削除や他参加中セッションの確認ですね。
    UIが思いつかなくて手を付けていませんでした。

    ワールド

  • ワールドの訪問履歴

  • ワールドのお気に入り

    MOD管理

  •   - インストール

  •   - バージョンアップ

  •   - プリセットごとの管理
      起動設定プリセットへMOD構成を紐づけできるといいかなー
      と思っています。Minecraftのランチャーのイメージですね。

  •   - プラグインの管理

    通知機能の強化

  •   - 特定セッションに人がいた場合など

  • フォト管理

  • メッセージの確認

  • インベントリ整理

  • UIの修正
    設定画面の配色にしたいなーと思っています。


5. どこでダウンロードできますか?

5-1.ダウンロード

現在は、GitHhubで公開しています。
ここ」から配布ページに飛びます。
めんどくさい方は、直接「ダウンロード」できます。

その他のページのページです。

  1. Topページ

  2. 使い方

5-2.インストールについて


1.ダウンロードした「NIL.zip」を解凍し任意の場所※に配置してください。

※補足
 「Program Files(x86)」などの書き込みが制限されるフォルダへ、
 配置すると正常に動作しないためCドライブ直下やデスクトップなど
 別のフォルダへ配置してください。

2.「NIL」フォルダの「NeosInformalLauncher.exe」を実行してください。
「windowsによってpcが保護されました」と表示された場合は、
「詳細情報」のリンクをクリックすることで、
「実行」ボタンが表示されます。
一度クリックすることで次回からは表示されません。

6. あとがき

このツールの作成背景ですが、背景として大きいのは昨年紹介した「NHCC」があります。
「NHCC」はCUIのヘッドレストクライアントをGUIで操作することができるラッパーツールです。
詳細は、「【NeosVR】Headless Client用の管理アプリを作っている話」で紹介しています。
はじめにも紹介しましたが、Headless利用者は良ければ御覧ください。
このツールと何が関係あるのかという話ですが、
実はNILはNHCCに含まれています。
そのため、メッセージやアイコンなどで「NeosVRHeadlessClientControl」を見るかもしれません。
NHCCに含まれている理由ですが、フレンド取得機能や起動用プリセットはHeadless用にもともと作成していて、「ここまでできるなら、通常クライアント向けに別ものとしてリリースしてもいけるのでは?」となったことが始まりです。
それ故に、NHCCの機能に大きく依存している部分があります。

※ホントは完全に分離したいのですが、もちろん、そんなことは想定して作成していないですし、成り行きで作っているので、なかなか大変そうです。
気が向いたときに分離も行っていますが、こういう作業は大変ですよね・・・そもそも、.NET 6.0 とかで作り直したほうがいいかなかと思っているところもありますので。

作成の裏話的な内容でしたが、あとがきとしては以上です。
NILもNHCCも今後ともゆっくりと更新していきます。
この記事を読んで頂き、「ちょっと便利そう」となれば
良ければ良ければ使ってみてください。
また、意見、リクエスト、バグなどあれば気軽に声をかけてください。

Twitter:

NIL Issue:
※NHCC側にあげてもらっても問題ありません。





この記事が気に入ったらサポートをしてみませんか?