Perl日記

PerlとかRubyとかPHPとかPythonとか

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 アドレスを入れておく。この辺はアプリから自由入力できるようにしたいな。

f:id:rightgo09:20201205231602p:plain


サーバ用のビルドは、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 を押すと、うまく動いた。


参考
docs.unity3d.com