竹林ソフト 2023/05/21 20:00

すくすくスクワット VR(マルチプレイの準備)

マルチプレイ時にスクワットカウント数と他の人のモーションを共有するために、ネットワークまわりのサンプルを動かしていきます。

マルチプレイの動作確認

ネットワークまわりには Mirror アセットを利用します。

Mirror 付属の Examples にあるシーンのいくつかを動かして動作するのを確認しました。よいです。

システム構成の検討

スクワット数と過去の他人のプレイデータを見るだけなら Web サーバ経由のデータ共有でいいと思っていました。そして、リアルタイムで他人のモーションデータを共有するときに Mirror アセットを使う予定でした。
ただ、Mirror でリアルタイムのデータ共有したいなら Mirror のホストが動くサーバが必要なのを失念していました。悩ましいですね。

ネットワークはあまり詳しくないので、この記事を見ながら後でまた試していこうと思います。
https://mushikago.com/i/?p=9600

とりあえずの予定としては

・カウント数を共有できるだけの Rest API を持つ Web アプリを VPS で動作させる。
 ・過去の他人のスクワットを参照するために、モーションデータのアップロードとダウンロードをできるようにする。
・リアルタイムでモーションデータを共有できる Mirror を使ったホスト用の Unity アプリを作って VPN 経由での動作確認を行う。
 ・どうにかしてビルドして VPS で動作させる。

です。

ホストについて Web アプリと Unity アプリに分けなくてもいいのでは? というのはまだ少し悩んでいます。
簡単確実に動く Web アプリでとりあえず開発するとして、Mirror アセットの使い方に詳しくなったら Web アプリで提供していた機能 Mirror アセットに担当させる、という方針がよさそうです。

Web アプリの作成

Python を使ったフレームワークである Pyramid を利用します。

そして、もろもろの初期設定をして Pyramid が動作したのがこれです。ポート番号は 49810 にしました。

次はこのサーバにスクワット回数の登録と取得を行う機能を実装するのですが「誰が」というアカウント情報も管理します。
アカウントは「誰が」を識別するためだけに使うので「ホストが作った文字列を受け取ってクライアントとして利用する」という程度の仕様にします。

↓ランダム文字列を作ってサーバに保存しつつクライアントに渡すためのコード

↓実行結果(これを Unity クライアントが受け取って保存する)

よいです。
ここで生成したトークンに重複がないかの一応のチェックとか、使われなかったアカウント情報は削除するとかの機能はまた後でどうにかします。
とりあえず、最低限の準備はできたと思います。

まとめと今後の予定

サーバをどうするかを検討しつつ、サーバ開発の準備ができて大変よいです。
次回は、スクワットの回数に応じて大きくなる樹木のあたりに着手したいです。がんばります。

月別アーカイブ

限定特典から探す

記事を検索