【Unity道場京都スペシャル4】Game Server Services ではじめる サーバー開発運用しないゲーム開発

1.5K Views

January 27, 20

スライド概要

2020/1/25に開催されたUnity道場京都スペシャル4の講演スライドです。
講師:丹羽 一智(Game Server Services 株式会社)
Unityのイベント資料はこちらから:https://www.slideshare.net/UnityTechnologiesJapan/clipboards

profile-image

リアルタイム3Dコンテンツを制作・運用するための世界的にリードするプラットフォームである「Unity」の日本国内における販売、サポート、コミュニティ活動、研究開発、教育支援を行っています。ゲーム開発者からアーティスト、建築家、自動車デザイナー、映画製作者など、さまざまなクリエイターがUnityを使い想像力を発揮しています。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Game Server Services ではじめる サーバ開発運用しないゲーム開発

2.

自己紹介 代表取締役社長CEO 丹羽 一智 新卒で株式会社セガに入社、携帯電話向けのゲームおよびサーバ開発業 務に従事。約3年勤める 任天堂株式会社に入社、ニンテンドー3DSのOS開発や、ゲームサーバの 開発・運用。Nintendo Switchのサーバシステム設計などに従事。約7年 間勤める 2016年9月 Game Server Services 株式会社を設立

3.

会社概要 事業内容 ゲームサーバを、初期費用・運用費用など一切かからず利用出来るクラ ウドサービス。 パズドラ / モンスト のようなゲームをサーバ開発 / 運用 することなく リリース出来る。 代表的なゲーム関連企業の株主 DeNA KLab Venture Partners ワンダープラネット

4.

サービス利用料金 無料 月額1,000円 従量 APIリクエスト 1万/月 未満 10万/月 未満 無制限 0.02円/リクエスト リアルタイム対戦 1万分/月 未満 10万分/月 未満 無制限 ルームあたり0.04円/分~ CCU予約不要 課金通貨管理 売上10万円/月 未満 売上100万円/月 未満 無制限 レベシェア 3~10% 性能 秒間10万リクエスト以上 初期費用 無料 運用費用 無料

5.

なぜ GS2 が必要か

6.

コードを書くことには責任が伴う コードを書くことで責任が発生する バグがないか? 脆弱性がないか? スケールするか?

7.

ゲーム開発者の負うべき責任 ゲームを面白く ゲームを遊べる状態を維持

8.

構築から利用へ ゲームのコアバリューに関係のないものは責任を負って構築する のではなく、責任を他者に転嫁して利用するようにしましょう。 ゲームサーバの多くの要素は“当たり前に存在するもの”であり、 止まって怒られることはあれど、新たな価値を生み出しません。

9.

今のゲームサーバに足りないもの 汎用ゲームエンジンはゲーム開発 シーンで過去10年で最もイノベー ティブな存在でした。 開発効率を向上させ、ゲーム開発 の敷居を大幅に引き下げました。 ゲームサーバの分野には開発環境 の改善が不足しています。

10.

GS2 が提供する価値

11.

サーバダウンの恐怖から解放 GS2は AWS と GCP のハイブリッドクラウドで提供します。 秒間10万アクセスを超える負荷テストを実施しそれ以上のアク セスを受け入れられることを確認しました。 これはローンチ時に未曾有のアクセスが発生し、1,000台以上の サーバーを用意したというSINoALICEのピーク時のアクセスの2 倍以上※です。 ※ CEDEC 2018 公演より

12.

先行投資なし GS2 は初期費用無しで採用できます。 従来はゲームサーバの初期開発には開発リソースが必要で、外部 委託する場合は数百〜数千万円の初期投資が必要でした。 これらのコストはゲームを面白くするための開発に活用できます。

13.

運用費なし 通常、サーバの保守運用費として継続的に費用が発生します。 GS2は利用料金に運用費が含まれるため、追加の費用は発生しま せん。 GS2はフルサーバレスアーキテクチャを採用。 AWS スタートアップ アーキテクチャオブ・ザ・イヤー受賞 GS2の責任で動作しているサーバは1台もない アプリケーションコードより下のサーバに関する全ての責任は AWS/GCPが負っている 世界で最も優れた監視運用体制でGS2のインフラは提供される

14.

ゼロスケール GS2 はサーバのAPI呼び出し回数など利用状況に応じて料金が計 算されます。 GS2は大量のアクセスを捌くためのスケーリングは当然ながら、 ゲームサーバーを使用していないときには一切費用が発生ないゼ ロスケールまでをサービスとして提供します。

15.

ゲームのニーズに合わせてカスタマイズ GS2では、アカウント新規登録時、レベルアップ時、クエストク リア時など様々なイベントをトリガーとしてサーバサイドでスク リプトを実行できます。 この仕組みを使うことでゲームの特徴にあわせてゲームサーバー の動作を自由に拡張できます。

16.

クロスプラットフォーム対応 自宅ではコンソール機。外出先ではスマートデバイス。会社の昼 休みにはブラウザ。 ライフサイクルに適したデバイスで同じゲームを楽しめるように することで、プレイヤーにとってゲームはより身近な存在に。 GS2 は様々なプラットフォームから利用できるだけでなく、プ ラットフォームを跨いだ通信も可能。

17.

チート対策に頭を悩ませない GS2は不正行為に対して強固な設計になっています。 所持品や課金通貨の不正な入手など、あってはならない不具合を 生み出せないよう設計されています。 → 後ほど解説

18.

様々な言語向けSDKを提供 ゲームエンジン向けSDKを提供。 Unity, Unreal Engine4, cocos-2dx ゲーム内から利用するだけでなく独自の管理ツールを作りたい場 合は。各言語向けSDKも。 Java, PHP, Python, Ruby, Node.js(JavaScript), C#, C++

19.

GS2 の概念

20.

わかりやすいAPI Unity のゲームにアカウント機能を導入する場合は7種類のAPI を意識するだけでOK! Gs2Account.Create() アカウントの新規作成 – ユーザID/パスワードを発行 Gs2Account.Authentication() Gs2Account.AddTakeOverSetting() Gs2Account.ListTakeOverSettings() ユーザID/パスワードでアカウントを認証 データ引き継ぎ用 ID/パスワード を登録 データ引き継ぎ用 ID/パスワード の一覧を取得 Gs2Account.UpdateTakeOverSetting() データ引き継ぎ用 ID/パスワード を更新 Gs2Account.DeleteTakeOverSetting() データ引き継ぎ用 ID/パスワード を削除 Gs2Account.DoTakeOver() データ引き継ぎ用を実行

21.

わかりやすいAPI 管理用のAPI も提供。ゲーム向けAPIキーでは使用できないよう に設定可能。 管理用APIの例(一部) Gs2Account.DescribeAccounts() Gs2Account.DeleteAccount() Gs2Account.DescribeTakeOversByUserId() 存在するアカウントの一覧取得 アカウントの削除 ユーザIDを指定して引き継ぎ情報一覧取得

22.

必要な機能を組み合わせて実装 アカウント管理 経験値・ランク管理 プレゼントボックス 所持品管理 回数制限管理 抽選処理 マッチメイキング 課金通貨管理 クエスト管理 リアルタイム対戦 ミッション管理 イベントスケジュール管理 ゲーム内ストア管理 スタミナ管理 パーティ編成管理 テキストチャット フレンド管理 バージョン管理

23.

用例A アカウント管理

24.

用例B ゲーム内ストア イベント期間1回だけ 買える商品 イベント スケジュール管理 商品販売期間 課金通貨管理 回数制限管理 所持してる通貨量 商品購入回数 所持品管理 買った商品

25.

用例C サーバスクリプト クエスト管理 クエストの終端に 来たら進行状況を リセット 1日1回だけ 進行できるクエスト 回数制限管理 所持品管理 ログインボーナスシステム プレイヤーの所持品 イベント スケジュール管理 公開中のログボ 今日の クエスト進行回数

26.

GS2 の提供するサービスの紹介

27.

サービス紹介 アカウント管理 引き継ぎ 経験値・ランク管理 レベルキャップ・ユニットごとのキャップ引き上げ プレゼントボックス リソース入手時にあふれたリソースの保管 所持品管理 所持品枠の拡張・スタック上限・複数スタック作成可能か 回数制限管理 リセット間隔を「毎日」「毎週」「毎月」「なし」で設定

28.

サービス紹介 抽選処理 重みベースの確立設定(1:3=25%:75%)。複数段抽選 マッチメイキング 時間経過で条件を緩和。役割ベース 課金通貨管理 資金決済法対応。二次通貨にも対応。 クエスト管理 進行管理・クリア報酬の抽選

29.

サービス紹介 リアルタイム対戦 100人対戦・カスタムサーバロジックに対応 ミッション管理 同一カウンターを複数スコープで参照可能 イベントスケジュール管理 絶対期間・相対期間に対応。一部アカウントで時間をずらせる ゲーム内ストア管理 あらゆるリソースを対価・報酬に設定可能 スタミナ管理 2段階の上限値。回復量・回復間隔・最大値をレベルと連携

30.

サービス紹介 編成管理 パーティや装備枠 テキストチャット テキストベースのコミュニケーション フレンド管理 フレンド・フォロー。各1万人 バージョン管理 リジェクト・バージョンアップを促す2段階の閾値

31.

サービス紹介 データストア UGCコンテンツの交換やクラウドセーブ ニュース HTMLベースのお知らせ/イベント/メンテナンス情報配信

32.

GS2 のサービス連携と不正対策の仕組み

33.

スタンプシート GS2 内のサービス間を連携させる仕組みとして、スタンプシー トシステムを提供。 スタンプシートシステムは、稟議のようなもの。

34.

対価と報酬 スタンプシートには対価と報酬が設定されています。 たとえば、1回だけ100円で買える1,000個の課金通貨を購入する としましょう。 その場合のスタンプシートは以下のようになります。 報酬:課金通貨 1,000 個を入手する件 対価: 100円支払う 対価: 購入回数を 1回増やす

35.

対価を払うとスタンプがもらえる GS2-Money に スタンプシートと、AppStore や PlayStore で購 入したときに発行されるレシートを持っていきます。 すると、GS2-Money はレシートを検証して、スタンプシートに スタンプを押してくれます。 報酬:課金通貨 1,000 個を入手する件 対価: 100円支払う 対価: 購入回数を 1回増やす

36.

対価を払うとスタンプがもらえる 続けて、回数制限サービスにスタンプシートを持っていって、購 入回数のカウンターを増やしてもらい、スタンプをもらいます。 報酬:課金通貨 1,000 個を入手する件 対価: 100円支払う 対価: 購入回数を 1回増やす

37.

すべてのスタンプが揃ったら すべてのスタンプが揃ったら報酬を受け取りに行きます。 報酬を受け取るとスタンプシートは二度と使えないよう破棄され ます。 報酬:課金通貨 1,000 個を入手する件 対価: 100円支払う 対価: 購入回数を 1回増やす

38.

チート対策 GS2 内のリソースの増加は基本的にこのスタンプシートを通し て行います。 対価を払わなければ報酬がもらえない仕組みによって不正行為を 行えなくします。 まだスタンプ揃ってないけど、 報酬:課金通貨 1,000 個を入手する件 持っていくぜ 対価: 対価: 購入回数を 100円支払う これでは報酬は払えませんな 1回増やす

39.

チート対策 スタンプシートには改ざん検出機能があり、不正にスタンプシー トを改ざんしても報酬は払い出されません。 報酬:課金通貨 1,000,000,000,000,000 1,,000 個を入手する件 個を入手する件 対価: 100円支払う 内容を書き換えたろ 対価: 購入回数を 1回増やす 改ざんされてますな これでは報酬は払えませんな

40.

チート対策 対価を改ざんした場合も同様に、スタンプを押してもらえません。 えーい。なら対価を変えてやる 報酬:課金通貨 1,000 個を入手する件 対価: 1円支払う 対価: 購入回数を 1回増やす 改ざんされてます これではスタンプは押せません

41.

GS2 のマスターデータ管理

42.

マスターデータ管理 サービスごとにJSON形式でマスターデータ管理 ゲーム内ストアは 購入に必要なリソースのIDと数量 そして、入 手できるリソースのIDと数量 を設定。 リソースが何者かはしらない。 リソースのマスターデータは所持品管理のサービスなどに設定。 GS2の管理画面で登録してエクスポートもできるが、独自のツー ルで定められた形式のJSONファイルを出力してもOK。

43.

もちろん Excel でも Excel のマクロを使用して JSON 形式で出力すれば、Excel ベー スのマスターデータ管理も可能。

44.

GS2 を利用した開発・運営の流れ

45.

GS2-Deploy GS2 を利用した開発・運営をサポートするのが GS2-Deploy で す。 GS2-Deploy はGS2内で作成したいリソースを宣言的に記述する ことで、自動的に作成・更新・削除してくれる機能です。 この宣言ファイルのことをテンプレートと呼びます。

46.

自動的に環境を作成 テンプレートを GS2-Deploy にアップロードすると、自動的に 必要となるリソース(サーバの設定)が作成されます。 この機能は開発環境と製品環境で内容を揃えるときに活用できま す。 開発期間も、テンプレートさえ共有していれば、開発者ごとに別 の環境を利用することができます。 テンプレートは YAML形式のテキストファイルなので Git で管 理できます。

47.

GS2-Deploy を使ったイベント運営 テンプレートはアカウントに対して1つではなく、複数定義する ことができます。 ゲームを構成する基本的なテンプレートとは別にイベント開催用 のテンプレートを作成し、イベントが終わったらテンプレートを 削除することでイベント関連のリソースをまとめて削除できます。 復刻イベントを開催するときも過去のテンプレートを使えばすぐ に復刻できます。

48.

カスタマーサポート サポート業務に即した管理画面を用意したい場合があります。 GS2-SDK を使うと独自の管理画面を作成できます。 GS2の提供する管理画面もSDKを使用して開発されています。

49.

データ収集・分析

50.

ログ収集 GS2 は2種類のログを提供しています。 • アクセスログ • リクエスト内容 • レスポンス内容 • スタンプシートログ • スタンプシート発行ログ • スタンプシート実行ログ GS2で保管するだけでなく、お客様のBigQuery/Kinesisにお届け 可能

51.

ログ集計 GS2に預けたログは簡易的な集計機能を提供しています。 • アクセス数 • ユニークゲームプレイヤー数 など。順次 提供内容を拡大予定。

52.

メトリクス収集 GS2 はサービスごとに様々なメトリクスを提供しています。 • 状態 • APIごとのアクセス数 • 認証回数 • 総数 • アカウント数 • クエストのクリア回数 • チャットメッセージ数 • 分布 • アイテム所持数量 • 課金通貨の残高

53.

サンプルリポジトリ github.com/gs2io/gs2-sample

54.

アカウント登録・ログイン GS2 のアカウント機能を利用し、登録・ログインを実現するサ ンプル

55.

GS2-Deploy を使って初期設定

56.

GS2-Deploy を使って初期設定 設定値を宣言 GS2の管理ユーザを作成 GS2の管理ユーザに ゲームクライアント向け権限を付与 GS2の管理ユーザ相当でアクセスできる クレデンシャルを発行 クレデンシャルのクライアントIDと クライアントシークレットを保存

57.

GS2-Deploy を使って初期設定 デプロイの進行を確認可能

58.

GS2-Deploy を使って初期設定 ステータスを確認

59.

GS2-Deploy を使って初期設定 実行結果を確認

60.

アカウント登録・ログイン クレデンシャルを設定 アカウント管理関連の設定 コールバックの設定

61.

アカウント登録・ログイン GS2 のアカウント機能を利用し、登 録・ログインを実現するサンプル

62.

アカウント登録・ログイン GS2 のアカウント機能を利用し、登 録・ログインを実現するサンプル

63.

アカウントのロード ローカルストレージに登録されてい るアカウントをロードします。 ロードに成功したかどうかで分岐し ます。 失敗 成功

64.

アカウントの作成 アカウントの作成通信処理を実行し、 成功したかどうかで分岐 サンプルでは『アカウントを作成し ます』という確認画面を表示してい るが、不要であればこのステートを 削除してもらえばいい 失敗 成功

65.

アカウントのセーブ 作成されたアカウント情報をローカ ルストレージに保存 保存に成功したかで分岐 失敗 成功

66.

ログインメニュー ログインするか、ローカルストレー ジに作成されたアカウントを削除す るかを選択するメニュー画面 メニュー画面が不要であれば、この ステートを削除すればいい 削除 ログイン

67.

ログイン ログイン通信処理を実行し、成功し たかどうかで分岐 失敗 成功

68.

改変・商用利用フリー サンプルコードは自由に改変してゲームに組み込んでいただけ ます。開発の効率化にご活用ください。 https://github.com/gs2io/gs2-sample

69.

Cloud Weave (2020年提供開始予定)

70.

Cloud Weave Cloud Weave はGS2-Deployのテンプレートリポジトリです。 Unity Editor をはじめとした ゲームエンジンのIDE上のボタン 一つで GS2-Deploy にアップロードし反映できます。 Cloud Weave 検索/選択 テンプレート GS2-Deploy アップロード テンプレート

71.

機能特化の管理画面 テンプレートが提供する機能の視点でわかりやすい管理画面も含 むことで、より開発体験を良くしていきます。 ログインボーナスをインストール ログインボーナス管理 1日目の報酬 2日目の報酬 : 1日目の報酬は何にしようかな

72.

Good-bye, dedicated servers. https://gs2.io/