StrixCloud入門 #1導入・動作

Unity

目的

Unityでのオンラインゲームを実装するために、StrixCloudを使用しての開発を開始した。StrixCloud入門なんてタイトルにしたけど、果たして入門しているのはこの記事を読んでいる貴方なのか、それとも私なのだろうか。

技術選定の経緯

Unity初学者がオンラインゲーム開発をするに当たり、定番と言えるフレームワークは2023年3月の現状[PhotonEngine]になるだろう。こちらについては、Unity Asset Storeに導入のために公式アセットがあり、PUN2で培われた信頼度も高く、Youtubeに先人の丁寧なチュートリアル(しかも日本語)が多くあり、ネット上にも数多の情報がある。しかしながら、無料枠の同時接続数は20ccuであり、Strix Cloudの1/5である。そのため、無料枠の大きさから StrixCloudを選択することにした。

StrixCloud導入

はじめに — Strix Unity SDK User's Guide

こちらのユーザーガイドの手順通りに行えば特に詰まること無く行える。

最小動作プロジェクト作成

しかしながら、私のレベルからすると付属の「StrixActionGameSample」はリッチ過ぎて、参考には出来るが、技術を盗むことが出来なそうだったため、最小構成の構築と動作検証を行うことにした。また技術習得に当たりサンプルをベースにするのでは無く、サンプルを作るような修練が私は好きだ。

プロジェクト作成

  1. 新規プロジェクトを作成
  2. [StrixUnitySDK.unitypackage]をインポート
  3. [StrixConnectUI]のプレハブをシーンに配置
  4. StrixConnectUI->StrixConnectPanel->StrixConnectGUI(Script)のHostとApplicationIDを入力
  5. EventSystemをシーンに作成
  6. PlaneでFloor(床)、CubeでPlayer(キャラ)を作成
  7. Floorの色を変えるためにマテリアルを作成し設定
  8. PlayerにStrixReplicator(Script)とStrixMovementSynchronizer(Script)をアタッチ
  9. Playerを動かすためのPlayerControllerを作成
  10. 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]を使用する。導入と使い方は下記のブログの方が教えてくださる。

ParrelSyncを使ってUnityで簡単に複数インスタンス起動できました(マルチプレイヤーテストに便利) | DevelopersIO
Unityのオンラインゲーム開発に、ParrelSyncを使えば、ローカルでマルチプレイヤーテストしやすくなります。

動作チェック

非常に簡易ながらも、マルイプレイは可能な状態になった。

 

 

 

コメント

タイトルとURLをコピーしました