MLAPI その5
Linux サーバ上で、サーバとして実行できるようにする。
前述のとおり、ホスト・サーバ・クライアントの 3 種類があり、ホスト=サーバ+クライアントである。
ローカルでの開発はホストとクライアントで OK だけど、実際に多人数で遊ぶためには、サーバがあるのが良い。
シーン内に空の GameObject をつくって、ServerManager として、ServerManager スクリプトを作ってアタッチ。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ServerManager : MonoBehaviour { void Start() { #if UNITY_SERVER Debug.Log("Start Server"); MLAPI.NetworkingManager.Singleton.StartServer(); #endif } }
一番簡単なので、接続設定を固定で埋め込む。NetworkingManager についている Unet Transport の Connect Address を「127.0.0.1」からサーバの IP アドレスを入れておく。この辺はアプリから自由入力できるようにしたいな。
サーバ用のビルドは、Unity Hub で Linux Build Support(Mono) をインストールして、Target Platform を Linux、Server Build にチェックを入れてビルドで OK だった。
できた生成ファイルたちを Linux サーバ上にもっていって、コマンド実行する。
$ ./run.x86_64 Set current directory to /home/r9/R9MLAPI_Server Found path: /home/r9/R9MLAPI_Server/run.x86_64 Mono path[0] = '/home/r9/R9MLAPI_Server/run_Data/Managed' Mono config path = '/home/r9/R9MLAPI_Server/run_Data/MonoBleedingEdge/etc' Initialize engine version: 2019.4.14f1 (4037e52648cd) [Subsystems] Discovering subsystems at path /home/r9/R9MLAPI_Server/run_Data/UnitySubsystems Forcing GfxDevice: Null GfxDevice: creating device client; threaded=0 NullGfxDevice: Version: NULL 1.0 [1.0] Renderer: Null Device Vendor: Unity Technologies Begin MonoManager ReloadAssembly - Completed reload, in 0.079 seconds UnloadTime: 0.820268 ms Start Server (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
Unity 上でも実行して Start Client を押すと、うまく動いた。