Pro Yearly is on sale from $80 to $50! »

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

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

62340514ee3033d54d79c9e7a3db68d5?s=128

Kazutomo Niwa

July 12, 2019
Tweet

Transcript

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

  2. ⾃⼰紹介 代表取締役社⻑CEO 丹⽻ ⼀智 新卒で株式会社セガに⼊社、携帯電話向けのゲームおよびサーバ開発業 務に従事。約3年勤める 任天堂株式会社に⼊社、ニンテンドー3DSのOS開発や、ゲームサーバの 開発・運⽤。Nintendo Switchのサーバシステム設計などに従事。約7年 間勤める

    2016年9⽉ Game Server Services 株式会社を設⽴
  3. 会社概要 事業内容 ゲームサーバを、初期費⽤・運⽤費⽤など⼀切かからず、サーバアクセ ス1回あたり 0.02円 で使⽤出来るクラウドサービス。 パズドラ / モンスト のようなゲームをサーバ開発

    / 運⽤ することなく リリース出来る。 代表的なゲーム関連企業の株主 DeNA KLab Venture Partners ワンダープラネット
  4. なぜ GS2 が必要か

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

  6. ゲーム開発者の負うべき責任 ゲームを⾯⽩く ゲームを遊べる状態を維持

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

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

  9. GS2 が提供する価値

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

    倍以上※です。 ※ CEDEC 2018 公演より
  11. 先⾏投資なし GS2 は初期費⽤無しで採⽤できます。 従来はゲームサーバの初期開発には開発リソースが必要で、外部 委託する場合は数百〜数千万円の初期投資が必要でした。 これらのコストはゲームを⾯⽩くするための開発に活⽤できます。

  12. 運⽤費なし 通常、サーバの保守運⽤費として継続的に費⽤が発⽣します。 GS2は利⽤料⾦に運⽤費が含まれるため、追加の費⽤は発⽣しま せん。 GS2はフルサーバレスアーキテクチャを採⽤。 AWS スタートアップ アーキテクチャオブ・ザ・イヤー受賞 GS2の責任で動作しているサーバは1台もない アプリケーションコードより下のサーバに関する全ての責任は

    AWS/GCPが負っている 世界で最も優れた監視運⽤体制でGS2のインフラは提供される
  13. ゼロスケール GS2 はサーバのAPI呼び出し回数など利⽤状況に応じて料⾦が計 算されます。 GS2は⼤量のアクセスを捌くためのスケーリングは当然ながら、 ゲームサーバーを使⽤していないときには⼀切費⽤が発⽣ないゼ ロスケールまでをサービスとして提供します。

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

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

  16. 様々な⾔語向けSDKを提供 ゲームエンジン向けSDKを提供。 Unity, Unreal Engine4, cocos-2dx ゲーム内から利⽤するだけでなく独⾃の管理ツールを作りたい場 合は。各⾔語向けSDKも。 Java, PHP,

    Python, Ruby, Node.js(JavaScript), C#, C++
  17. GS2 の概念

  18. わかりやすいAPI Unity のゲームにアカウント機能を導⼊する場合は7種類のAPI を意識するだけでOK! Gs2Account.Create() アカウントの新規作成 ‒ ユーザID/パスワードを発⾏ Gs2Account.Authentication() ユーザID/パスワードでアカウントを認証

    Gs2Account.AddTakeOverSetting() データ引き継ぎ⽤ ID/パスワード を登録 Gs2Account.ListTakeOverSettings() データ引き継ぎ⽤ ID/パスワード の⼀覧を取得 Gs2Account.UpdateTakeOverSetting() データ引き継ぎ⽤ ID/パスワード を更新 Gs2Account.DeleteTakeOverSetting() データ引き継ぎ⽤ ID/パスワード を削除 Gs2Account.DoTakeOver() データ引き継ぎ⽤を実⾏
  19. わかりやすいAPI 管理⽤のAPI も提供。ゲーム向けAPIキーでは使⽤できないよう に設定可能。 管理⽤APIの例(⼀部) Gs2Account.DescribeAccounts() 存在するアカウントの⼀覧取得 Gs2Account.DeleteAccount() アカウントの削除 Gs2Account.DescribeTakeOversByUserId()

    ユーザIDを指定して引き継ぎ情報⼀覧取得
  20. 必要な機能を組み合わせて実装 アカウント管理 経験値・ランク管理 プレゼントボックス 所持品管理 回数制限管理 抽選処理 マッチメイキング 課⾦通貨管理 クエスト管理

    リアルタイム対戦 ミッション管理 イベントスケジュール管理 ゲーム内ストア管理 スタミナ管理 パーティ編成管理 テキストチャット フレンド管理 バージョン管理
  21. ⽤例A GS2 が提供する機能をそのまま利⽤する。

  22. ⽤例A アカウント管理

  23. ⽤例A SDKが提供するAPIを呼び出すだけで実装できて、すぐにゲーム に導⼊可能。

  24. ⽤例B GS2 が提供する様々な機能を連携させて利⽤する。

  25. ⽤例B ゲーム内ストア イベント期間1回だけ 買える商品 イベント スケジュール管理 商品販売期間 回数制限管理 商品購⼊回数 所持品管理

    買った商品 課⾦通貨管理 所持してる通貨量
  26. ⽤例B 複雑な仕様を実現しようと思うと必要となるパターン。 GS2 ではこのパターンでの利⽤を前提に設計しており、多くの 場合は設定項⽬で連携するサービスのID※を指定するだけで連携 できる様になっている。 ※ イベントスケジュールのイベントID ストアに陳列した商品を購⼊するために必要なアイテムID 購⼊したら⼿に⼊るアイテムのID

  27. ⽤例C 全く新しい仕組みを作り出す。

  28. ⽤例C クエスト管理 1⽇1回だけ 進⾏できるクエスト 回数制限管理 今⽇の クエスト進⾏回数 所持品管理 プレイヤーの所持品 イベント

    スケジュール管理 公開中のログボ サーバスクリプト クエストの終端に 来たら進⾏状況を リセット ログインボーナスシステム
  29. ⽤例C GS2 が提供するコンポーネントを組み合わせることで、全く新 しいゲームサーバシステムが⽣まれます。

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

  31. アカウント管理 データの引き継ぎに対応 ID/パスワード ソーシャルアカウント ⾃社でアカウント管理の仕組みがある場合は使わなくても他の GS2の機能を利⽤可能

  32. 課⾦通貨管理 資⾦決済法の前払式⽀払⼿段(⾃家型)に対応 通貨の単価ごとに数量を管理 未使⽤残⾼が⾃動計算 ⼆次通貨の管理にも対応

  33. 経験値・ランク管理 ランクアップテーブルを登録するとランクを⾃動計算 単純なレベルだけでなく経験を積み上げてランクをあげる仕組 み全般で使⽤可能 信頼度 クエストを3回クリアするとスキップチケットが使えるようになる クリア回数を経験値とする ランク2になるとスキップチケットが使える

  34. プレゼントボックス 事前登録ボーナスを届ける お詫びの品を届ける 所持品管理サービスやスタミナ管理サービスと連携すれば溢れ たリソースを⾃動的にプレゼントボックスに届けることが可能

  35. 所持品管理 消費型アイテム ガチャチケット、スタミナドリンク 資産 キャラクター、ゲーム内通過 素材 強化素材、進化素材 : 様々なものを所持品として管理 所持品枠の拡張機能あり

  36. 回数制限管理 ⾏動回数のカウンター 商品の購⼊回数 クエストの挑戦回数 ガチャの抽選回数 リセット間隔を設定可能 毎⽇X時 毎週X曜⽇ X時 毎⽉X⽇

    X時 リセットしない
  37. 抽選処理 排出確率テーブルを設定するだけで利⽤可能 重みベースの確率設定 アイテムA(重み1), アイテムB(重み3)に設定すると アイテムA(25%), アイテムB(75%)と処理される 排出コンテンツに排出確率テーブルを指定可能 1段⽬ SSR/SR/R

    のようなレアリティ抽選 2段⽬ 各レアリティのコンテンツを抽選
  38. クエスト管理 進⾏管理・前提クエストのクリア判定などに対応 パーティメンバーに特定キャラが編成されているか? スクリプトによる判定処理の拡張で対応可能 クエストの報酬を抽選可能 レアモンスターの出現判定 クエスト開始時に乱数シードと⼊⼿可能なコンテンツの最⼤量 クエスト終了時に実際に⼊⼿したコンテンツの数量を報告

  39. ミッション管理 実績(トロフィー)に相当する機能 クエストのクリア報酬などでミッションのカウンターを操作 カウンターが閾値を超えたときにミッション達成 カウンターには「デイリー」「ウィークリー」といったスコー プを設定可能 ミッション達成時にサーバからプッシュ通知 ミッションの報酬受取、カウンターの操作に期間を設定可能

  40. イベントスケジュール管理 ゲーム内イベントの管理 絶対期間・相対期間のイベントに対応 相対期間の場合は開始トリガーを引く必要あり ログイン時のパラメータで時間のオフセットを指定できる QA担当は1⽇進んだ状態でプレイできる

  41. ゲーム内ストア管理 現⾦で課⾦通貨 / 現⾦で相対期間イベントのトリガー 課⾦通貨でガチャ / 課⾦通貨で所持品枠の拡張 ゲーム内通貨で進化素材 / ゲーム内通貨でスタミナ

    様々なリソースを IN/OUT に指定可能 販売期間の設定が可能 複数商品をグルーピング。購⼊条件を満たす最初の商品が陳列 ステップガチャ、購⼊するたび売価が⾼くなる商品
  42. スタミナ管理 時間経過で回復するスタミナ値の管理 ⼆段階の上限値を設定可能 50/100 の状態で 100回復アイテムを使うと 150/100 になる その場合でも 999/100

    を上限とする 999 を超えるとプレゼントボックス送り 回復間隔・回復量・最⼤値 は経験値ランク管理と連携可能 建築系ゲームの資源回収にも応⽤可能
  43. マッチメイキング 属性値の範囲で条件を設定 ゲームモード、レーティング、地域など ロールで条件を設定 盾役1、回復役1、攻撃役2 でマッチメイキング ホワイトリスト フレンドのみ参加できるルーム ブラックリスト このプレイヤーとは⼀緒に遊びたくない

  44. リアルタイム対戦 初期はパケットリレーサーバとして提供 サーバで動かすロジックを変更できるように サーバでロジックを動かせるとレイドバトルなどを実装できる ボスの体⼒をサーバで管理 サーバでダメージ計算 ボスが死んだら参加者に報告

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

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

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

    対価: 購⼊回数を 1回増やす
  48. 対価を払うとスタンプがもらえる GS2-Money に スタンプシートと、AppStore や PlayStore で購 ⼊したときに発⾏されるレシートを持っていきます。 すると、GS2-Money はレシートを検証して、スタンプシートに

    スタンプを押してくれます。 報酬:課⾦通貨 1,000 個を⼊⼿する件 対価: 100円⽀払う 対価: 購⼊回数を 1回増やす 済
  49. すべてのスタンプが揃ったら すべてのスタンプが揃ったら報酬を受け取りに⾏きます。 報酬を受け取るとスタンプシートは⼆度と使えないよう破棄され ます。 報酬:課⾦通貨 1,000 個を⼊⼿する件 対価: 100円⽀払う 対価:

    購⼊回数を 1回増やす 済 済
  50. チート対策 GS2 内のリソースの増加は基本的にこのスタンプシートを通し て⾏います。 対価を払わなければ報酬がもらえない仕組みによって不正⾏為を ⾏えなくします。 報酬:課⾦通貨 1,000 個を⼊⼿する件 対価:

    100円⽀払う 対価: 購⼊回数を 1回増やす まだスタンプ揃ってないけど、 持っていくぜ これでは報酬は払えませんな
  51. チート対策 スタンプシートには改ざん検出機能があり、不正にスタンプシー トを改ざんしても報酬は払い出されません。 対価: 100円⽀払う 対価: 購⼊回数を 1回増やす 済 済

    内容を書き換えたろ 報酬:課⾦通貨 1,,000 個を⼊⼿する件 改ざんされてますな これでは報酬は払えませんな 報酬:課⾦通貨 1,000,000,000,000,000 個を⼊⼿する件
  52. チート対策 対価を改ざんした場合も同様に、スタンプを押してもらえません。 対価: 1円⽀払う 対価: 購⼊回数を 1回増やす えーい。なら対価を変えてやる 報酬:課⾦通貨 1,000

    個を⼊⼿する件 改ざんされてます これではスタンプは押せません
  53. GS2 のマスターデータ管理

  54. マスターデータ管理 サービスごとにJSON形式でマスターデータ管理 ゲーム内ストアは 購⼊に必要なリソースのIDと数量 そして、⼊ ⼿できるリソースのIDと数量 を設定。 リソースが何者かはしらない。 リソースのマスターデータは所持品管理のサービスなどに設定。 GS2の管理画⾯で登録してエクスポートもできるが、独⾃のツー

    ルで定められた形式のJSONファイルを出⼒してもOK。
  55. もちろん Excel でも Excel のマクロを使⽤して JSON 形式で出⼒すれば、Excel ベー スのマスターデータ管理も可能。

  56. GS2 を利⽤した開発・運営の流れ

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

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

    YAML形式のテキストファイルなので Git で管 理できます。
  59. 環境の削除 アップロードしたテンプレートを削除するだけで、その定義に よって作成されたリソースがまとめて削除されます。

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

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

  62. ロードマップ

  63. 第⼆世代GS2 を来週⽕曜⽇公開 現在サービス中の第⼀世代GS2から更に発展した第⼆世代GS2が 今⽉β公開されます。(本公演の内容は第⼆世代の内容) β期間は提供されているすべての機能を無料で試していただくこ とができます。 フィードバックも受け付け、フィードバックいただいた内容は正 式サービス開始までに優先度をつけて対応していきます。

  64. 年内正式サービス開始 年内に正式サービスを開始します。 正式サービス開始で変わること - 99.99% のSLA - ⽇本リージョン以外に北⽶・欧州リージョンの提供開始 - 利⽤料が発⽣

    - 毎⽉2万円まで無料 (APIリクエスト100万回相当)
  65. 新発表 Cloud Weave

  66. Cloud Weave Cloud Weave はGS2-Deployのテンプレートリポジトリです。 Unity Editor をはじめとした ゲームエンジンのIDE上のボタン ⼀つで

    GS2-Deploy にアップロードし反映できます。 GS2-Deploy Cloud Weave テンプレート テンプレート 検索/選択 アップロード
  67. 機能特化の管理画⾯ テンプレートが提供する機能の視点でわかりやすい管理画⾯も含 むことで、より開発体験を良くしていきます。 ログインボーナスをインストール ログインボーナス管理 1⽇⽬の報酬 2⽇⽬の報酬 : 1⽇⽬の報酬は何にしようかな

  68. 最後に

  69. 会場にブースを出しています 詳しい説明を聞いてみたい!という場合はお⽴ち寄りください。 - ⼤阪会場 18 - 東京会場 26 Webサイトのお問い合わせページからも随時承っています。 https://gs2.io/

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