CEDEC SAPPORO 2019

「CEDEC+SAPPORO 2019」に行ってきました
ゲーム開発者向け技術交流会の「CEDEC+SAPPORO 2019」に参加してきました。とても刺激がありましたよー
atuweb 開発ブログ

でセッションに参加して、

純粋に「これはすごい」と感じたのが GS2 です。

セッションの中でサンプルについての紹介があり、トライしてみました。

ゲームサーバーエンジン GS2

GS2 は、 Game Server Services という ゲームサーバーエンジン サービスの略称で、 個人からプロまで使えるゲームサーバー を提供されています。

Game Server Services (GS2)
Game Server Services (GS2)
Game Server Services (GS2)
https://gs2.io

「ゲームエンジン」ではなく、「ゲームサーバーエンジン」なんです。

それも、 絶対に落ちない のが特徴で、2019年 9月 に発生した AWS の障害でも影響がなかったといいますからすごいですよね。

内部的では Amazon AWS や Google GCP を使っているようです。


ゲームを作る上で、ある程度必要なもはけっこう決まっていて、たとえばアプリでいうとサウンドや物理演算だったりするのですが、それをすべてのゲームでイチから作るのは非効率なため、Unity のようなゲームエンジンがたくさん開発されてます。

けれども、サーバ側にはそういうものがなかった。

ならやりましょう、ということでできたのが GS2 のようです。

私も、何度も経験しているのですが、新規プロジェクトのキックオフとかで、「あのプロジェクトを下敷きにして、使いまわせるところを使いまわして工数削ろう」という話がとりあえずあるのですが、実は使い回そうと思ってもそんなに工数減らないよね、みたいなのがあって、 GS2 はこの状況を確実に変えていくサービスだと感じました。

サンプルの実装

GS2 では Unity に組み込むサンプルを公開しており、当記事ではこの GS2 のサンプルより、最初の「アカウントの作成・ログイン」を実装します。

事前準備

GitHub より、 gs2-sample の ZIP ファイルをダウンロードし、適当なディレクトリに解凍します。

gs2io/gs2-sample
https://github.com/gs2io/gs2-sample

Unity をインストールしていなければ済ませます。

Unity
https://unity.com/ja

Unity と PC はこんな感じです。

  • macOS Catalina
  • Unity 2019.2.10f1

最初何も考えずに Unity をインストールしたら LTS の Unity 2018.4.11f1 が入りましたが、このバージョンだとエラーが結構出てしまって NG でした。

GS2 での作業

では GS2 側の作業をこなしていきます。

やることのフローはこちらです。

  • アカウント登録
  • プロジェクトを登録
  • GS2-Deploy にスタックを登録

アカウント登録

はじめに、アカウントを登録します。

Game Server Services (GS2)
https://gs2.io

GS2 のトップページの下部に登録フォームがありますので、

  • メール
  • 名前
  • 会社名 (省略可)
  • パスワード

を入力し、届いたメールからアドレスを認証すれば登録完了です。


アカウント登録が済んだら、マネジメントコンソールにサインインします。

GS2 マネージメントコンソール
https://app.gs2.io/

プロジェクトを登録

GS2 コンソール プロジェクトの選択
GS2 コンソール プロジェクトの選択

プロジェクトの選択画面より、まずはプロジェクトを作成します。

プロジェクトの新規作成 ボタンをクリックして、作成フォームに移動し、

  • プロジェクト名
  • プロジェクトの説明

を入力します。

今回は雑に、test にしました。

GS2-Deploy にスタックを登録

次に、GS2-Deploy にスタックを登録します。

GS2-Deploy は、テンプレートをから多様なリソースを自動的に作成・更新・削除するという高性能なツールです。

サンプルでも、クライアントとの認証情報などを GS2-Deploy を使って作成するようになっていました。


プロジェクトに左側にある プロジェクトの管理 をクリックします

GS2 コンソール プロジェクトの選択
GS2 コンソール プロジェクトの選択

すると、プロジェクトのダッシュボードに移動しますので、この画面の左メニューより、 GS2-Deploy に遷移します。

GS2 プロジェクトダッシュボードより GS2-Deployへ
GS2 プロジェクトダッシュボードより GS2-Deployへ

スタックの選択、画面に遷移したら、 スタックの新規作成 ボタンより、テンプレートをアップロードします。

GS2 プロジェクトダッシュボードより GS2-Deploy スタックの選択
GS2 プロジェクトダッシュボードより GS2-Deploy スタックの選択

gs2io/gs2-sample でダウンロードしたファイルから 2 点をアップロードします。

  • gs2-sample/unity/core/initialize_credential_template.yaml
  • gs2-sample/unity/account-registration-login/initialize_account_template.yaml

このスタックは、それぞれ名前を次としました。

  • Credential
  • Account
GS2 プロジェクトダッシュボードより GS2-Deploy スタックの作成
GS2 プロジェクトダッシュボードより GS2-Deploy スタックの作成

アップロード後の画面です。

実行状態が、はじめ CREATE_PROCESSING となっていますが、少し待つと CREATE_COMPLETE なります。

すると、アウトプットタブに、このスタックで作成されたリソースが掲載されます。

GS2 プロジェクトダッシュボードより GS2-Deploy スタックのアウトプット
GS2 プロジェクトダッシュボードより GS2-Deploy スタックのアウトプット

スタックのアウトプットは Unity に入力するため、後でまたこの画面に戻ってきますよ。

Unity

次に Unity の作業です。

プロジェクトの設定

Unity で、 gs2-sample/unity/account-registration-login をプロジェクトとして開きます。

Unity プロジェクトを開く
Unity プロジェクトを開く

画面左下 Assets > Scenes より Run シーンを開き、画面左、Hierarchy より Gs2Settings を選択し、次に画面右、Inspector に、 GS2-Deploy で作成したリソースの情報を登録します。

スクリプトファイル 対応するスタック
Gs2Settings Credential
Gs2AccountSettings Account

また、 BuildSettings を開いて、

  • Scenes/Run
  • Scenes/AccountRegistrationLogin

を scenes in build に追加します。

これで準備完了です。

Run する

プロジェクトをビルドします。

お、シーンが動きました。

GS2 サンプルを起動 初期状態
GS2 サンプルを起動 初期状態

起動直後はアカウントがなく、 アカウント作成メニューが表示されます。

GS2 サンプルを起動 アカウントを作成
GS2 サンプルを起動 アカウントを作成

アカウントの作成が成功し、UserId が表示されましあた。

GS2 サンプルを起動 ログイン
GS2 サンプルを起動 ログイン

問題なくログインできました。

GS2 サンプルを起動 アカウント作成後の起動
GS2 サンプルを起動 アカウント作成後の起動

一度落として再度立ち上げると、先程作ったアカウントが維持されています。

GS2 サンプルを起動 アカウントを削除
GS2 サンプルを起動 アカウントを削除

アカウントを削除すると、アカウント作成メニューに戻りました。

感想

私は Unity に触るのが久々だったため、割と手間取ってしまいました。
慣れている方なら 30 分かからずにサンプルを動かすことができそう、というくらいのかんたんさでした。

今回はアカウントを作成してログインする、というところのサンプルですが、絶対にゲームに必要な機能 で、かつ まともにゼロ作るとなると、けっこうな工数がかかる ぶぶんであるため、うまく GS2 を利用することで、工数をおさえ、かわりにゲーム部のメイン分にガッツリ割り当てていくことができるようになるはずですね。

テンプレートをチームで共有できる GS2-Deploy もとても便利だとかんじました。
さらには、ストアがあって、多様なテンプレートが展開されているそうです。

2019 年中は無料 で利用できるようなので、個人開発のアプリでも、プロの現場でも、感触を見てみると良いと思います。