目的
Unityでのオンラインゲームを実装するために、StrixCloudを使用しての開発を開始した。StrixCloud入門なんてタイトルにしたけど、果たして入門しているのはこの記事を読んでいる貴方なのか、それとも私なのだろうか。
技術選定の経緯
Unity初学者がオンラインゲーム開発をするに当たり、定番と言えるフレームワークは2023年3月の現状[PhotonEngine]になるだろう。こちらについては、Unity Asset Storeに導入のために公式アセットがあり、PUN2で培われた信頼度も高く、Youtubeに先人の丁寧なチュートリアル(しかも日本語)が多くあり、ネット上にも数多の情報がある。しかしながら、無料枠の同時接続数は20ccuであり、Strix Cloudの1/5である。そのため、無料枠の大きさから StrixCloudを選択することにした。
StrixCloud導入
こちらのユーザーガイドの手順通りに行えば特に詰まること無く行える。
最小動作プロジェクト作成
しかしながら、私のレベルからすると付属の「StrixActionGameSample」はリッチ過ぎて、参考には出来るが、技術を盗むことが出来なそうだったため、最小構成の構築と動作検証を行うことにした。また技術習得に当たりサンプルをベースにするのでは無く、サンプルを作るような修練が私は好きだ。
プロジェクト作成
- 新規プロジェクトを作成
- [StrixUnitySDK.unitypackage]をインポート
- [StrixConnectUI]のプレハブをシーンに配置
- StrixConnectUI->StrixConnectPanel->StrixConnectGUI(Script)のHostとApplicationIDを入力
- EventSystemをシーンに作成
- PlaneでFloor(床)、CubeでPlayer(キャラ)を作成
- Floorの色を変えるためにマテリアルを作成し設定
- PlayerにStrixReplicator(Script)とStrixMovementSynchronizer(Script)をアタッチ
- Playerを動かすためのPlayerControllerを作成
- PlayerにPlayerControllerをアタッチ
PlayerController
PlayerControllerはwasdでCubeを動かせるだけというシンプルなものだが、継承元を[MonoBehaviour]では無く[StrixBehaviour]として、キー入力受付の前に[isLocal]の判定を行う必要がある。これをしないとマルチプレイ相手のPlayerも動かせてしまう。
PlayerController.cs
using UnityEngine; using SoftGear.Strix.Unity.Runtime; public class PlayerController : StrixBehaviour { float speed = 3.0f; void Update() { if (!isLocal) return; if (Input.GetKey(KeyCode.W)) { transform.position += speed * transform.forward * Time.deltaTime; } if (Input.GetKey(KeyCode.S)) { transform.position -= speed * transform.forward * Time.deltaTime; } if (Input.GetKey(KeyCode.D)) { transform.position += speed * transform.right * Time.deltaTime; } if (Input.GetKey(KeyCode.A)) { transform.position -= speed * transform.right * Time.deltaTime; } } }
ParrelSync
Unityを複数インスタンス起動するために[ParrelSync]を使用する。導入と使い方は下記のブログの方が教えてくださる。

動作チェック
非常に簡易ながらも、マルイプレイは可能な状態になった。
コメント