目的
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]を使用する。導入と使い方は下記のブログの方が教えてくださる。

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


コメント