🐡
[書き散らし]Unity Headlessでビルドしたものを AWS EC2上のDockerで動かす
Unity Headless Server&Client実装サンプル & Build設定
Server&Client間はENETというC#ライブラリを使っているよう。
localでサンプルを確認
Server側設定
- GameObjectを作成し、"Server"をアタッチ。
- portを適当(8000)に設定する
- Run
Client側設定
- GameObjectを作成し、"Client.cs"をアタッチ
- PacketLabel, ErrorLabel用のTextを作成。
- IPを"127.0.0.1", portをserver側で指定したもの, listenをTrueに指定。
- Run
LinuxビルドしたものをLocalでDockerから起動してみる
myserver = Linuxビルドしたディレクトリ
Dockerfile
FROM ubuntu
EXPOSE 8000
COPY ./myserver /shared
WORKDIR /shared
CMD ./myserver.x86_64 -batchmode -logfile output.log & touch output.log ; tail -f output.log
Dockerビルド
$ docker build -t unitytest/myserver -f Dockerfile .
Docker-compose
version: '2'
services:
server:
image: unitytest/myserver
ports:
- "8000:8000"
$ docker-compose up
Starting unity_server_1 ... done
Attaching to unity_server_1
server_1 | Vendor: Unity Technologies
server_1 | Begin MonoManager ReloadAssembly
server_1 | - Completed reload, in 0.034 seconds
server_1 | The referenced script on this Behaviour (Game Object '<null>') is missing!
server_1 | (Filename: Line: 334)
server_1 |
server_1 | The referenced script on this Behaviour (Game Object '<null>') is missing!
server_1 | (Filename: Line: 334)
server_1 |
server_1 | UnloadTime: 0.350000 ms
server_1 | Set current directory to /shared
server_1 | Found path: /shared/myserver.x86_64
headlessビルドしたものが動いてはいるよう。
AWSのEC2(elastic-ip付)にDocker, Docker-composeをインストール
EC2上でDockerイメージを動かす
EC2にファイルをコピーする。
Headlessビルドしたディレクトリ, Dockerfile, docker-compose.ymlをEC2にファイルをコピーする。Localでおこなったように、Dockerイメージビルド、docker-compose up を行う。
EC2 SG設定
EC2のSG設定で、UDPポートを開けておく。
ClientからEC2に接続してみる。
Clientでipをelastic-ipを指定し、Runする。
Discussion