【目次】
概要
フォルダ構成
サーバを立てる
クライアントの接続
本サンプルは MonobitEngine による最もシンプルなプログラムで、
エコー処理(サーバに送信したものをそのまま受信して表示する)を行います。
MonobitEngine の基本原理の1つである、
『サーバとクライアントによる同時平行駆動型の処理エンジン』の基礎を学べます。
このサンプルプロジェクトを触っていただくことで、
「MonobitEngine はどんな仕組みで動いているの?」
「サーバとクライアントとの間で、どうやって情報のやり取りをするの?」
「どういう手順でプログラム(スクリプト)を構築していけばいいの?」
といった、おそらく開発者の皆さんが最初に思う疑問への答えが見えてくるはずです。

フォルダ構成▲
フォルダ構成は以下のようになります。
echo_sample_lite
├ client … echo_sample クライアントプロジェクト
├ server … echo_sample サーバプロジェクト
└ tools … RPCスタブ環境一式
■ client
Unity4.x / 5.x 向けに作られた、クライアントプロジェクトが入っています。
開発者の方にカスタマイズしていただける部分は以下のファイルになります。
☆ Unity4.x の場合
・ client/unity4/Assets/MainExecute.cs
☆ Unity5.x の場合
・ client/unity5/Assets/MainExecute.cs
なお、上記ファイル以外はライブラリとして用意しているものですので、
不用意に触らないようにしてください。
■ server
Linux向けに作られた、各種サーバプロジェクトが入っています。
開発者の方にカスタマイズしていただける部分は以下のファイルになります。
・server/echo_sample/src/MainExecute.cpp
なお、上記ファイル以外はライブラリとして用意しているものですので、
不用意に触らないようにしてください。
■ tools
RPCのコードに展開する元のRubyコードが入っています。
RPCにつきましては、後述のRPC編にて触れていきます。
サーバを立てる▲
■ サーバを立てる前に
サーバを起動する前に、サーバプログラム側のシェルスクリプトを
それぞれのサーバ環境に合わせて変更する必要があります。
先に、Linuxサーバの root 権限から ifconfig コマンドを実行し、
イーサネットのIPアドレスを調べてください。
# ifconfig
その後、サーバの実行シェルスクリプトを開き、以下の太字の部分を
該当するサーバのIPアドレスに合わせて書き換えてください。
◎ server/echo_sample/echo_sample.sh の中身
./echo_sample -f 7000 -F 127.0.0.1 -c 6200 -C 127.0.0.1 -n 0x4000000 -N 0x4ffffff
■ server のビルド
server 内のデータを任意のディレクトリに配置後、以下のコマンドを実行して
ビルド用シェルの実行権限を割り当ててください。
$ bash ./setup.sh
続けて、Linux上の適切なディレクトリ上に配置し、server のディレクトリから
以下のコマンドを実行してください。
$ ./server.sh debug
■ server の起動
最後に以下のコマンドを実行して、server を起動させましょう
$ ./server.sh start
すると以下の表示がなされ、server が起動します。
Starting Server:
sync start
relay start
echo_sample start
クライアントの接続▲
■ Unity クライアントの起動
/client/unity4/Assets/echo_sample.unity もしくは /client/unity5/Assets/echo_sample.unity
を開き、
Unity クライアントを起動させてください。
■ シーン実行前に
シーンを実行する前に、クライアントから接続するサーバのアドレスを調べます。
一旦Linuxサーバに戻り、先の方法と同じく root 権限から ifconfig コマンドを実行し、
イーサネットのIPアドレスを調べてください。
# ifconfig
ネットワークアドレスを調べたら Unity に戻り、Hierarchyビューから MainExecute を選択し、
Inspector の中にある Main Execute(Script) > Target Addr の項目を書き換えてください。

■ シーンの実行
Unity の実行再生ボタンを押下し、シーンを起動します。
正常に起動すると、Game画面に以下の表示がなされます。

■ 画面をクリックすると、エコー送受信が実行される。
この状態でGame画面をクリックすると、エコー送受信が実行され、以下のように表示が切り替わります。

■ エコー送受信する文字列を変更する。
更に、Inspector にある Main Execute(Script) > Send String の中身を変えてGame画面をクリックすると、
帰ってくるエコーの情報が変わります。

■ サーバを停止し、エコー送受信が動かないことを確認する。
ここでサーバを停止してみましょう。
Linuxサーバに戻り、以下のコマンドを実行してください。
$ ./server.sh stop
これでサーバが停止します。
サーバが停止した状態で画面をクリックしても、送信に失敗する旨が表示されるだけになります。
