オンプレミス版 MUN サーバ導入準備(Windows)

目次

  概要
  MUN サーバ設定ファイルの改変
  MUNサーバーのビルド&起動


概要

Windows環境における、オンプレミス版 MUN サーバの環境構築方法について

  このページでは、Windows 環境における、オンプレミス版 MUN サーバの環境構築について、その手順を説明します。
  Windows 環境を用いないのであれば、このページ内容はスキップして、状況に合わせて以下のページをご覧ください。

   ■ 既にサーバ導入準備が済んでいる場合
     → 「■ オンプレミス版MUNサーバのセットアップ」 > 「MUN サーバのビルド・実行・停止」

   ■ まだサーバ導入準備が済んでおらず、Windows環境以外で構築したい場合
     → Linux であれば
       「■ オンプレミス版MUNサーバのセットアップ」 > 「オンプレミス版 MUN サーバ導入準備(Linux)」
     → MacOSX であれば
       「■ オンプレミス版MUNサーバのセットアップ」 > 「オンプレミス版 MUN サーバ導入準備(Mac)」

  なお、Windows環境での開発については、原則として VisualStudio を使用しますが、
  Windows 版の UnityEditor のインストール時に VisualStudio Community がバンドルされますので
  VisualStudio のインストールについては割愛します。
    ※ もちろん VisualStudio Professional などの上位パッケージでも利用できます。


MUN サーバ設定ファイルの改変

MUN サーバのクライアント待ち受けIPアドレスを設定する

  まずは、MUN クライアントが MUN サーバに接続する際に使用する、MUNサーバのクライアント待ち受けIPアドレスを設定します。

  MUN サーバ設定ファイルの改変手順については、以下のパネルを順にクリックして指示通りに進めてください。


  まずは、サーバとして動かす Windows マシンのIPアドレスについて調べます。
  PowerShell または コマンドプロンプト上から、以下のコマンドを入力してください。
> ipconfig

  このコマンドを実行すると、「イーサネットアダプター」として、同一ネットワーク構内に接続しているPCから接続可能な
  IPアドレスが表示されますので、これをメモなど記録にとどめておきます。



  IPアドレスを調べ終えたら、サーバパッケージ内に含まれている「MUN サーバ側のクライアント待ち受けIPアドレス」の設定を行ないます。

  使用するサーバ環境に応じて、以下の2種類からいずれか、あるいは両方を選んで実行してください。

  C++ 版 MUN サーバの設定は、サーバパッケージ内の server/cpp/mun.props 内にありますので、
  これをテキストエディタなどでを開きましょう。

  ファイルを開いたら、25~27行目付近にある
・PROXY_PUBLIC_ADDR
・RESOLVER_PUBLIC_ADDR
・ROOM_PUBLIC_ADDR
  の3項目について、事前に記録していた Windows マシンのIPアドレスに書き換えてください。

  書き換え終わったところで、テキストエディタ上で上書き保存してください。



  C# 版 MUN サーバの設定は、ドラッグ&ドロップでコピーしたフォルダ内の server/csharp/appsettings.json 内にありますので、
  これをテキストエディタなどでを開きましょう。

  ファイルを開いたら、19~21行目付近にある
・PROXY_PUBLIC_ADDR
・RESOLVER_PUBLIC_ADDR
・ROOM_PUBLIC_ADDR
  の3項目について、事前に記録していた Windows マシンのIPアドレスに書き換えてください。

  書き換え終わったところで、テキストエディタ上で上書き保存してください。


MUNサーバーのビルド&起動

ソースコードからMUN サーバプロセスを生成する

  下準備ができたところで、サーバーのビルドを行ないます。

  ビルド手順については、以下のうち各種環境に応じたパネルをクリックして、指示通りに進めてください。

  Windows サーバ環境で C++ 版 MUN サーバーを動かす場合、VisualStudio を用います。
  以下のパネルを順にクリックして、指示通りに進めてください。

  まず初めに、「mun_master」と呼ばれるサーバプロセスのプロジェクトを開きましょう。

  このプロセスは MUN サーバの中核であり、接続しているMUNクライアントや、サーバ上で構成されるロビーやルームの情報を
  一括で管理するデータベースの役割を果たします。
  これ以外のサーバプロセスは(後述のmun_resolverを除き)mun_masterが起動していることが前提で動くことになりますので、
  必ず初めに起動させてください。

  また、mun_master のサーバプロセスを起動させるために、VisualStudio の sln ファイルを立ち上げますが、
  Visual Studio 2017, 2019, 2022 のいずれかによって、起動するソリューションファイルは異なります。
  事前に「現在インストールしているVisualStudio のバージョン」を調べておいてください。

  調べた上で、mun_master のソリューションファイルを起動しましょう。
  mun_master のソリューションファイルは cpp/mun_master 内に以下のように格納されていますので、
  お使いの Visual Studio のバージョンと合致する sln ファイルをダブルクリックして起動してください。
mun_server_x.x.x
  └ cpp
    └ mun_master
        ├ mun_master_vs2017.sln … VisualStudio 2017 で動作させる場合
        ├ mun_master_vs2019.sln … VisualStudio 2019 で動作させる場合
        └ mun_master_vs2022.sln … VisualStudio 2022 で動作させる場合



  mun_master サーバーのプロジェクトを起動させたら、VisualStudio 上で F5 キーを押すか、
  以下の赤枠内の再生ボタンを押して、ビルド&実行しましょう。

  ビルドを開始してしばらくすると mun_master が起動してコンソールが表示されます。
  以下のように "mun_master setup done." というメッセージが表示されていれば起動完了です。
  次に進めましょう。



  続けて、「mun_resolver」と呼ばれるサーバープロセスのプロジェクトを開きましょう。

  このプロセスは MUN クライアントが最初に接続するサーバで、
  後述する「ルーム未入室時のクライアントとの通信処理」を行なう mun_proxy サーバプロセスに対して
  「最も負荷の軽いサーバプロセスの接続情報」を渡します。

  mun_proxy のサーバプロセスを複数動作(スケール)させることにより、ルーム未入室時の対クライアント通信について
  動的かつ簡易的に負荷分散処理をさせることを可能にします。

  では mun_master と同様、mun_resolver のソリューションファイルを起動しましょう。
  mun_resolver のソリューションファイルは cpp/mun_resolver 内に以下のように格納されていますので、
  お使いの Visual Studio のバージョンと合致する sln ファイルをダブルクリックして起動してください。
server
  └ cpp
    └ mun_resolver 
        ├ mun_resolver_vs2017.sln … VisualStudio 2017 で動作させる場合
        ├ mun_resolver_vs2019.sln … VisualStudio 2019 で動作させる場合
        └ mun_resolver_vs2022.sln … VisualStudio 2022 で動作させる場合



  mun_resolver サーバーのプロジェクトを起動させたら、VisualStudio 上で F5 キーを押すか、
  以下の赤枠内の再生ボタンを押して、ビルド&実行しましょう。

  ビルドを開始してしばらくすると mun_resolver が起動してコンソールが表示されます。
  以下のように "mun_resolver setup done." というメッセージが表示されていれば起動完了です。
  次に進めましょう。



  続けて、「mun_proxy」と呼ばれるサーバプロセスのプロジェクトを開きましょう。

  前述の mun_resolver の説明で少し触れましたが。
  mun_proxy のサーバプロセスは、ルーム未入室の状態にあるMUNクライアントからの各種要求(問い合わせ)に対し
  適宜処理するためのサーバで、かつ mun_master に対するリレーサーバの役割を果たします。

  mun_proxy が行なう対MUNクライアントとの通信処理の中には、以下のようなものがあります。
・ 認証IDを伴うMUNサーバ接続チェック
・ MUNサーバのシステム全体に対しユニーク値を取る「MUNクライアントID」の発行手続き
・ ロビー入退室手続き
・ ルーム入室要求、および退室後のロビー再入室手続き
・ ロビーに属するルーム 一覧情報の取得手続き
・ 接続プレイヤー検索手続き
     (以上、代表的な部分を挙げており、これ以外の処理も存在します。)

  では mun_master, mun_resolver と同様、mun_proxy のソリューションファイルを起動しましょう。
  mun_proxy のソリューションファイルは cpp/mun_proxy 内に以下のように格納されていますので、
  お使いの Visual Studio のバージョンと合致する sln ファイルをダブルクリックして起動してください。
server
  └ cpp
    └ mun_proxy
        ├ mun_proxy_vs2017.sln … VisualStudio 2017 で動作させる場合
        ├ mun_proxy_vs2019.sln … VisualStudio 2019 で動作させる場合
        └ mun_proxy_vs2022.sln … VisualStudio 2022 で動作させる場合



  mun_proxy サーバーのプロジェクトを起動させたら、VisualStudio 上で F5 キーを押すか、
  以下の赤枠内の再生ボタンを押して、ビルド&実行しましょう。

  ビルドを開始してしばらくすると mun_proxy が起動してコンソールが表示されます。
  以下のように "mun_proxy setup done." というメッセージが表示されていれば起動完了です。
  次に進めましょう。



  最後に、「mun_room」と呼ばれるサーバプロセスのプロジェクトを開きましょう。

  mun_room のサーバプロセスは、mun_proxy とは異なり、こちらはルーム入室中の状態にあるMUNクライアントに関して
  各種要求(問い合わせ)に対し適宜処理するためのサーバです。
  mun_master に対するリレーサーバの役割を果たすこともありますが、ほとんどのルーム内メッセージについて自身で処理します。

  mun_room が行なう対MUNクライアントとの通信処理の中には、以下のようなものがあります。
・ オブジェクトの同期手続き
・ 各種RPCメッセージの送受信手続き
  他にも様々ありますが、代表的な部分では上記2点です。
  MUNクライアントに対する通信比重が最も高くなるのも mun_room の特徴です。

  では他の3つと同様、mun_room のソリューションファイルを起動しましょう。
  mun_room のソリューションファイルは cpp/mun_room 内に以下のように格納されていますので、
  お使いの Visual Studio のバージョンと合致する sln ファイルをダブルクリックして起動してください。
server
  └ cpp
    └ mun_room
        ├ mun_room_vs2017.sln … VisualStudio 2017 で動作させる場合
        ├ mun_room_vs2019.sln … VisualStudio 2019 で動作させる場合
        └ mun_room_vs2022.sln … VisualStudio 2022 で動作させる場合



  mun_room サーバーのプロジェクトを起動させたら、VisualStudio 上で F5 キーを押すか、
  以下の赤枠内の再生ボタンを押して、ビルド&実行しましょう。

  ビルドを開始してしばらくすると mun_room が起動してコンソールが表示されます。
  以下のように "mun_room setup done." というメッセージが表示されていれば起動完了です。
  以上4つのサーバープロセスを起動させれば準備完了です。


  Windows サーバ環境で C# 版 MUN サーバーを動かす場合、コマンドプロンプトから実行します。
  以下のパネルを順にクリックして、指示通りに進めてください。

  PowerShell または コマンドプロンプト上から、以下のコマンドを入力することで
  「DEBUGモード」でのビルドが可能です。
> cd [mun_dotnet_core.shのあるディレクトリ]
> .\mun_dotnet_core.bat debug

  コマンド入力後、ビルドログが表示されます。最終的に
成功しました
  の表記が5回なされれば成功です(ログがゆっくり流れますので、目視で確認できるかと思います)。

  ビルドに成功したら、続けて以下のコマンドを実行して MUN サーバーを起動してください。
> .\mun_dotnet_core.bat startd



  PowerShell または コマンドプロンプト上から、以下のコマンドを入力することで
  「RELEASEモード」でのビルドが可能です。
> cd [mun_dotnet_core.shのあるディレクトリ]
> .\mun_dotnet_core.bat release

  コマンド入力後、ビルドログが表示されます。最終的に
成功しました
  の表記が5回なされれば成功です(ログがゆっくり流れますので、目視で確認できるかと思います)。

  ビルドに成功したら、続けて以下のコマンドを実行して MUN サーバーを起動してください。
> .\mun_dotnet_core.bat startr