20210303のUnityに関する記事は2件です。

MLAPIでOculus Quest2のマルチプレイ ②GCPにサーバー用ビルドをアップ・実行する

レポジトリのリンク

シリーズ目次

①プロジェクトを実装するまで
(今ここ→)②GCPにサーバー用ビルドをアップ・実行する
③実機でテストするまで

ご注意

知見不足の箇所が多いかもしれません。すみません。
大変お手数ですがご指摘頂ければ幸いです。修正します。

また、2021/03/03時点での記事です。
MLAPIは2020/12/4以降、数か月で改修されるそうなので必要なことが変わるかもしれません。
その時は加筆するつもりですが、あくまでご注意ください。

MLAPIとは?

デニキさんという方が2021.2.24現在の全てをご説明なさっています。
とても分かりやすいので、ぜひご覧ください。
説明スライド
開発ブログ

開発環境

Windows10
Unity(AndroidモジュールとLinuxモジュールを開発に使った)
Quest2, RiftSを用いたが、実機テストの時以外は関係がない


対象読者と本記事の目的

サーバーにClientとして接続して、MLAPIのマルチプレイを行いたい方

Clientを接続させるサーバー向けの実行ファイルを
GCPのVM(仮想Linuxサーバー)にアップし、実行出来るようになる

各Clientはサーバーと通信することで、マルチプレイするための情報を得られます。
今回はサーバーの話なのでMLAPI自体とはあまり関係がありません

GCPを選んだ理由

  1. 個人的な事情でGoogle Drive APIを使いたかったので勉強効率を理由に
  2. 音声認識, 翻訳, 画像認識などのためのAPIを今後使いたくなりそうだったため
  3. AWSはGCPより検索で何とかなりやすいかと思ったため
    一般的にはAWSの方がGameLiftやSDKがあり、便利だろうと推測します。
    それらを使いたい方は他の記事をご覧ください。

本題

1 VM(仮想Linuxサーバー)を作成する

基本

こちらの記事でVMを作成し、料金アラート・ssh接続を設定するまで説明されています。
ssh接続とは超省略すると、とても強い自動生成パスワードがある場合のみ可能な接続です。

VMはそれを作成したGoogleアカウントのみブラウザから情報を見れるようになっていますが、自分のPCのコマンドで操作したい時にssh接続を設定することで、パスワードを持っていない人が簡単にVMを触れないようにしています。
これから始めるGCP(GCE) 安全に無料枠を使い倒せ

これ以上ssh接続を知りたい方は検索してください。

基本と変えた部分

1. VMの設定

VMの初期設定を画像のようにしました。なお、このVMは削除済みです。
特徴1. OSをCentOSにすることで調べやすくする
特徴2. リージョンを東京にして、少しでも低遅延でやり取りできるようにする
Linuxサーバー設定1.png
Linuxサーバー設定2.png

2. サーバーとローカルPCを接続し、VMを操作する方法

自分の場合はもう一つの方法を書きます。Google Cloud SDKをインストールし、
Google Cloud SDK Shellを用いてVMを操作出来ます。記事内のgcloud initまで行ってください。
VMを操作するためのGoogle認証もinitに含まれています。
Google Cloud SDKインストール手順

手順を終えるとSDK Shellが使えるようになります。
そこで下記コマンドを入力するとssh接続し、操作のためのCUIを表示するまでを行ってくれます。

gcloud compute ssh <作成したVMの名前>

接続すると初回だけ質問してきます。
GCP「ssh鍵がないけど作る?」
→ yes

GCP「接続するゾーンどこ?」
→ 自分が設定したゾーンを数字で選択。asia-northeast1-bなど。
 間違えると接続できないので正しいものをご入力ください。もちろん修正は出来ます。

これ以降同じことは質問されません。
毎回SDK Shellに対して同じコマンドを入力すると、VMを操作するために接続できます。

2 サーバー用にビルドしたものをzip化

ここはUnityの話になります。
UnityではWindowsやAndroidなど以外にもLinux向けにゲームをビルド出来ます。
それをVMにアップし実行することで、各Clientからサーバーに接続しマルチプレイ通信が出来るようになります。ビルドまでの手順と注意したことを書いておきます。

0. Linuxモジュールをインストール

unityにLinuxモジュールをインストールしていない人はまず行ってください。

1. ビルドするScene内でサーバーが関係しないGameObjectを非アクティブ化

サーバーの余計な処理を省くために行いましたが、不要な人には不要な過程です。
MLAPI用のスクリプト以外は使う見込みがなかったので、関係するGameObject以外は全て非アクティブ化しました。

2. いつものビルド画面でビルドする

Target PlatformWindowsではなくLinux
Server Buildオンにする
ビルド画面.png

3. zip化

ビルドしたものをzip化し早くアップ出来るようにしましたが、必須ではないです。
大きいサイズの場合はzip化しないと時間を食うかもしれません。

3 ストレージにアップロードし、サーバーにコピー

1. ストレージにzipをアップ

ストレージとはPCでいう外付けHDDのようなものです。
サーバーの中以外にもファイルを保存することが出来ます。
念のためストレージにzipをアップロードし、使います。

GCPのストレージはGoogleドライブのようにブラウザへのドラッグでアップ可能な仕様ですが、
メニューに2個「ストレージ」ボタンがあって場所が分かりづらいです。

ホーム画面で左上のメニューを開き、下の方に行くことで見れるこの画面が正しいです。
ここで「バケットを作成」ボタンを押し、バケットの中にzipをアップしてください。
gcpストレージ.png
gcpストレージ2.png

2. ストレージのzipをVMにコピー

下記の順に入力するとコピーできます。
==Google Cloud SDK Shellを開く==

gcloud compute ssh <作成したVMの名前>

==接続完了後、新しく開かれたウィンドウで==

mkdir = VM内にフォルダ(正確にはディレクトリと呼ぶ)を作成するコマンド

mkdir <中にzipを移動させるフォルダの名前>

gsutil cp aファイル bフォルダ = aファイルをbフォルダへコピー

gsutil cp gs://<作成したバケット名>/<作成したzip名> <移動させるフォルダ名>

4 .linux86_64ファイルを実行するまで

==接続完了後のウィンドウで引き続き==

sudo 管理者権限で実行。出来るだけ使うべきではない。
yum install CentOSなどのOSでプログラムをインストールする。
今回はzip解凍プログラムを入れた。

sudo yum install unzip

cd = 作業場所のフォルダを変更

cd <中にzipを移動させたフォルダの名前>

unzip = 解凍

unzip <zipの名前>.zip

chmod 755 = 指定ファイルを実行可能にする
最後の/*を忘れないでください!「フォルダ直下のファイル全てが対象」という意味です。

chmod 755 <解凍したフォルダの名前, lsで見ることが出来る>/*
cd <解凍したフォルダの名前, lsで見ることが出来る>

ls = 作業フォルダ内を全表示
拡張子が.x86_64のファイルを探す

ls

実行。
Errorが出てきたらmessageを読んで見落としたであろうコマンドか
必要なインストールを実行してください。messageを検索すると大抵答えが出てきます。

./<実行ファイル名>.x86_64

↓が表示されたら、MLAPIマルチプレイの準備完了です!

Server Started

5 外部IPアドレスをメモ

マルチプレイの接続のために、VMの外部IPアドレスをメモする必要があります。
URLみたいなものです。(正確にはURLの生身の姿の一部です。)
お疲れ様でした。
Linuxサーバー外部IPアドレス.png

続きはこちら

①プロジェクトを実装するまで
(今ここ→)②GCPにサーバー用ビルドをアップ・実行する
③実機でテストするまで

思っていること

製品化するにはアカウントやRoomパスワードなどが必須な気がする

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Unity tips】 Cloth機能を使ってみよう

今回は、Cloth【クロス】機能の使い方を見ていきます。 

クロス機能は知ってますかね? 

オブジェクトを布のような動きにすることができる機能です。 

これを使えば 

キャラクターの髪の毛をゆらゆらしたり 

動物の尻尾をゆらゆらしたり 

スカートをひらひらひらひらしたりできるんです。 

あとは、オブジェクトを布で包んだりもできますね。

それでは、今回は試しにプレーンをゆらゆらしていきます。 

まずはプレーンを入れて

インスペクターにある Meshcolliderの凸状にチェック

【ついていなければMeshcolliderを入れていきます】

そしてトリガーにも、チェックを入れます。 

そして コンポーネントを追加から 

Clothを入れます。 

Clothを入れると、自動的にskinnedも入ります。

bandicam 2021-02-27 20-01-55-383.png

で次にですね。 

Clothの右下にある緑矢印のアイコンを選択します。 

そうすると、 シーンビューにクロスのセルフコリジョンというメニューが 

出てくるので、 そこで選択を選びます。 

そして、 囲みたい所をドラッグして選択していきます。 

そして囲んだら すぐ下にある 

セルフコリジョンとインターコリジョンにチェックを入れます。 

この画像ですと、 プレーンの上側だけを囲んでいます。 

囲む所は、固定したい所になります。 

囲んだ所は青い点に変わります。

つまり、囲んでいない所がゆらゆらするということです。

bandicam 2021-02-27 20-29-17-225.png

ではこれで再生してみましょう。 

この状態でプレーンを動かしてみると 

画像のように、 プレーンが 布のようにゆらゆらしていると思います。

bandicam 2021-02-27 20-38-55-345.png

このようになっていれば成功です。 

※注意点としては、 1回囲んでしまうと、ポインターが消えてしまうので 

また設定をやり直す必要があるんですよね。

PS 

Unityの寺子屋ユニコーンもやってまーす。 

一部、Unity講座なども値下げしましたよ。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む