This article will walk you through several essential steps of launching room servers for your game via brianCloud. For the sake of simplicity and accessibility, we will deploy a website on a room server, instead of game logic with brainCloud S2S stuff.
Step 1: build your docker image
The only way that brainCloud deploys your custom game or business logic to the room servers is to load your Docker image and run that image container on the server. So, let's create one.
We will use Vue framework for the demo site. (you should already have docker and Vue installed on your machine).
Run this in your bash:
vue create docker-vue
build the package
yarn build
create a Dockfile
cd docker-vue && touch Dockerfile
create an Nginx config file
touch default.conf
write the following line to this
default.conf
file
server {
listen 80;
server_name localhost;
#charset koi8-r;
access_log /var/log/nginx/host.access.log main;
error_log /var/log/nginx/error.log error;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
open Dockfile and write the following content into it.
FROM nginx
COPY dist/ /usr/share/nginx/html/
COPY default.conf /etc/nginx/conf.d/default.conf
FROM nginx -- set the image will build based on nginx:latest image.
COPY dist/ /usr/share/nginx/html/ -- copy all the content from root dist folder to image folder /usr/share/nginx/html/
COPY default.conf /etc/nginx/conf.d/default.conf -- replace Nginx image config file with the one we created.
run docker build command to build an image via the current Dockfile.
docker build -t yourdockeraccount/docker-vue .
-t -- give the image a name.
. -- use the current folder which Dockfile located.
once docker builds the image successfully, we can check it by running:
docker image ls
now, we can run the image
docker run -d -p 3500:80 --name docker-vue yourdockeraccount/docker-vue
-d -- set the container in detached (background) mode.
-p -- map internal port to docker host port that would run the container.
--name -- give the container a name (here is: docker-vue)
check all the running containers by running:
docker ps -a
open your browser with
localhost:3500
to check the running web
open dashboard of Docker desktop, you will find the running container there.
now, time to ship your image to your docker hub.
docker push yourdockeraccount/docker-vue
you should find it from your docker hub repositories after shipping.
Step 2: Configure room server and lobby on brainCloud
In order to let brainCloud launching your image just like you run on your local machine from the above step, you need to tell brainCloud where to find your image and configure some parameters for your server and the server trigger -- lobby.
navigate to Design | My Servers | Cloud Code - My Servers Settings page create a new server and fill the fields as follows. (don't forget to add a region for your server on the Regions section)
browser to Design | Multiplayer | Configure Lobbies page, create a new lobby and set it link to the room server you just created.
Step 3: write test code
Chose a brainCloud supported language you prefer to write the code launching the room server. Basically, your code should include these key APIs:
RTTService.enableRTT
RTTService.registerRTTLobbyCallback
LobbyService.createLobby
...
_bc.RTTService.enableRTT(BrainCloud.RTTConnectionType.WEBSOCKET, rttConnectSuccess, rttConnectFailure);
public void rttConnectSuccess(response)
{
_bc.RTTService.registerRTTLobbyCallback(rttCallback);
String lobbyType = "wart";
int rating = 76;
String[] otherUserCxIds = response.data.cxId;
String settings = "{}";
boolean isReady = false;
String extraJson = "{}";
String teamCode = "all";
_bc.getLobbyService().createLobby(lobbyType, rating, otherUserCxIds, settings, isReady, extraJson, teamCode, this);
}
public void rttConnectFailure(String errorMessage)
{
System.out.print(String.format("Failed | %s", errorMessage));
}
...
Step 4: Test and debug
In order to better debugging your running room server, integrating the slack alert will be a good option, refer to this article for the detail of implementation. Give your test code a run, your slack will get a bunch of altering status message from the brainCloud hosting server.
From these return messages, you can get all the information about your running room server, such as instance running IP and port.
(for our example, it is running at 35.183.69.27:9000
, so you can visit the address from your browser to test it. )