#環境
Unity5.6.2f1
Windows10 Home
#概要
GoogleComputeEngine(AWSのEC2のようなの)上で、Linuxサーバのインスタンスを作成し、UNETのサーバプログラムを動かし、マルチ対戦します
#GoogleComputeEngineの常時無料枠
以下のUrlに記載されています
https://cloud.google.com/free/docs/always-free-usage-limits
https://cloud.google.com/compute/pricing
USリージョンの「f1-micro」インスタンスが1つ無料とあるようです(バージニア州北部を除く)
#インスタンスの作成
以下のページで詳しく解説されています
あぱーブログ
「Compute Engine インスタンスの作成」まで進める
コンソールで「外部IP 」を確認しておく。(例:104.198.168.72)
#GoogleCloudSDKのインストール
https://cloud.google.com/sdk/downloads?hl=ja
「対話型インストーラ」の記述に沿ってインストールします
#ログイン
すでにSDKをインストールしていて別のアカウントで使用していた場合、ログインが必要です
・「gcloud auth login」と入力
・アカウントを選択する
#サーバのポート開放
・「コマンドプロンプト」を開く
・「gcloud compute firewall-rules create VVV --allow tcp:0-10000,udp:0-10000」と打ち込みリターン
VVVはルール名(例:unet)
何番を開放すればよかったのかわからないので0から10000まで解放している
コンソールの「VPCネットワーク」>「ファイヤーウォールルール」で確認できる
https://console.cloud.google.com/networking/firewalls/list?project=heroic-passkey-178708&tab=INGRESS
#UNETプログラムの用意
ここにテスト用のUNETプログラムを用意しました
・「Download」を押してzipをダウンロード
・zip内に含まれる「Linux」内のものがサーバにアップするプログラム
・「WinApp」内のものはサーバと接続するクライアントプログラム、またはローカル確認用のサーバプログラムを兼ねる
#サーバにデプロイ(コピー)
・ダウンロードしたzipを展開する
・「コマンドプロンプト」を開き、「Linux」フォルダ内に移動する
・「gcloud compute copy-files *.* XXX@YYY:」と打ち込みリターン
XXXはユーザー名
YYYはインスタンス名
(例:gcloud compute copy-files *.* fukaken5050@test-instance:)
#sshでサーバに接続
・「コマンドプロンプト」を開き、「Linux」フォルダ内に移動する
・「gcloud compute --project "AAA" ssh --zone "BBB" "XXX@YYY"」と打ち込みリターン
AAAはプロジェクト名
BBBはインスタンスのリージョン
XXXはユーザー名
YYYはVMインスタンス名
(例:gcloud compute --project "testcomputeengine-171603" ssh --zone "us-central1-a" "fukaken5050@test-instance")
内部で「putty」が実行されてサーバのコマンドラインが入力できるようになる
#実行権限の付与
・「putty」上で「chmod u+x EEE」と打ち込みリターン
EEEはプログラム名(例:chmod u+x server.x86_64)
#サーバプログラムの実行
・「putty」上で「nohup ./EEE -logFile server.log &」と打ち込みリターン
EEEはプログラム名(例:nohup ./server.x86_64 -server -logFile server.log &)
-serverはUNETプログラム内部で使用している独自のパラメータ
・「Ctrl+C」でプロンプトに戻る
#テスト用クライアントプログラムの実行
・ダウンロードしたzipを展開する
・「WinApp」>「test.exe」を実行する
・「接続先」に外部IPを入力する(例:104.198.168.72)
・「設定」を押す
・「クライアント」を押す
サーバに接続される
・もう一つ「test.exe」を実行し、「クライアント」を押す
・片方は「募集」、もう一つは「参加」で対戦する
#プロセスの停止
・「putty」上で「ps x」と入力
実行されているプロセス一覧が表示される
・「Kill XXX」と入力
XXXはプロセスID
#プロセスを監視して再実行
サーバプログラムが落ちてしまった場合に、自動で再実行します
execServer.sh
・「nohup ./execServer.sh &」と入力
#!/bin/bash
while true
do
isAlive=`ps -ef | grep "server.x86_64" | grep -v grep | wc -l`
if [ $isAlive = 0 ]; then
echo "serverを実行します"
nohup ./server.x86_64 -server -logFile server.log &
fi
sleep 10
done