ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門
TRANSCRIPT
Copyright(C)DeNACo.,Ltd.AllRightsReserved.
マルチプレイのリアルタイム通信ゲーム開発⼊⾨
第7回DeNAゲーム開発勉強会×モノビットガールアックス
Dec17,2015
上野 裕介/うえちょこ[email protected]リージョンゲーム事業本部技術・編成部 開発基盤グループDeNACo.,Ltd.
Copyright(C)DeNACo.,Ltd.AllRightsReserved.
⾃⼰紹介
2
Copyright(C)DeNACo.,Ltd.AllRightsReserved.
⾃⼰紹介
n 上野 裕介(うえちょこ) / @uechocon DeNA 中途⼊社
n [mobage ブラウザ]n ONE PIECE グランドコレクション / リードエンジニアn 怪盗ロワイヤル / リードエンジニア・プロマネ
n [ネイティブ スマホアプリ]n みんなのデナレンジャー / エンジニア ※第5回発表n ガールアックス / リードエンジニア
n [汎⽤ゲームサーバー/クライアント]n Sakasho / エンジニア ※第4回発表
3
みんなのデナレンジャーについては、・第5回ゲーム開発勉強会DeNAの新しいネイティブ開発 hCp://www.slideshare.net/dena_study/de-na-47512627・第5回ゲーム開発勉強会 制作を⽀えたツール達 hCp://www.slideshare.net/dena_study/watanabe-20150428-47517631Sakashoについては、・第4回ゲーム開発勉強会Rubyで作るGameBackendasaService hCp://www.slideshare.net/dena_study/game-baas
Copyright(C)DeNACo.,Ltd.AllRightsReserved.
アジェンダ
n ガールアックスとは?n マルチプレイなリアルタイム通信ゲームの開発環境整備n Next Step...
4
Copyright(C)DeNACo.,Ltd.AllRightsReserved.
ガールアックスとは?
5
Copyright(C)DeNACo.,Ltd.AllRightsReserved.
5vs5対戦 カジュアルMOBAゲーム
n iOS / Android 向け
6
Copyright(C)DeNACo.,Ltd.AllRightsReserved.
デモムービー(1分程度)
n ガールアックス_デモ.mp4
7
Copyright(C)DeNACo.,Ltd.AllRightsReserved.
ガールアックスの主な技術(1/3)
n 内製のリアルタイム通信サーバー「IRIS」を使った1本⽬のタイトル
n リアルタイム通信サーバーの基本機能(ざっくり)n ルーム … 複数⼈が参加できるクローズドな部屋で通信しあうn リレー … Aさんの発⾏したメッセージをB,C,Dさんに伝えるn マッチング … 適切なルームが選ばれて参加する
n リアルタイム通信サーバーの製品n モノビットエンジンn Photon Cloud/Servern etc…
8
ガールアックスの制作話は「DeNACREATORBLOG」でも掲載しています!・武器を⼿に陣取りバトル!「ガールアックス」リリース! hCp://creator.dena.jp/archives/45144594.html
Copyright(C)DeNACo.,Ltd.AllRightsReserved.
ガールアックスの主な技術(2/3)
n 内製フレームワーク「Lift Engine」n cocos2d-x をベースとする2Dゲームエンジンn ⾼パフォーマンスn ⾼い表現⼒n アプリ開発を効率化するための各種機能n マルチスレッドによる各種⾮同期APIの実装n 内製サウンドエンジン「DeAL」n アプリケーション開発社はcocos2d-xを意識しないn ネイティブアプリ開発経験の少ない開発者のお⼿本としての実装
n ゲーム本体もC++で実装する
9
LiYEngineについては、・DeNA流cocos2d-xとの付き合い⽅ hCp://www.slideshare.net/dena_study/denacocos2d-x
デブサミ2015『DeNA流cocos2d-xとの付き合い⽅』
より引⽤
Copyright(C)DeNACo.,Ltd.AllRightsReserved.
ガールアックスの主な技術(3/3)
n 内製の汎⽤ゲームサーバー&クライアント「Sakasho」n Sakasho = Game Backend as a Service
n セーブデータ保存、マスターデータ配信、アセット配信n お知らせ、カスタマーサポートn etc…
n ゲームチームはサーバー開発ゼロn ゲームのクライアント開発だけに集中できる
10
Sakashoについては、・第4回ゲーム開発勉強会Rubyで作るGameBackendasaService hCp://www.slideshare.net/dena_study/game-baas
Copyright(C)DeNACo.,Ltd.AllRightsReserved.
マルチプレイなリアルタイム通信ゲームの開発環境整備
11
Copyright(C)DeNACo.,Ltd.AllRightsReserved.
環境整備(1/6)-マルチプレイを気軽に試せる開発環境
n スマートフォン向けゲームの開発ではPC上での開発は⼀般的n cocos2d-x なら iOS Simulator で実⾏n Unity なら Unity Editor 上で実⾏→ 開発効率重視 … 実機確認より⼿軽でかつ⾼速であることが多い
n マルチプレイのゲームでもPC上でマルチプレイ開発がオススメn ガールアックスは Win/Macアプリとしてビルドできる
n 複数アプリ起動してマルチプレイを⾼速実⾏n 速度⽐: Macアプリ複数実⾏ >>> iOS Simulator
n もちろん実機確認は適宜⾏う
12
Copyright(C)DeNACo.,Ltd.AllRightsReserved.
環境整備(1/6)-マルチプレイを気軽に試せる開発環境
13
Copyright(C)DeNACo.,Ltd.AllRightsReserved.
環境整備(2/6)–通信エンジンの切り替え機能
n ガールアックスは複数の通信エンジン(サーバー)に対応n オフライン(シングルプレイ)n IRISn 他社製品
n オフラインモードは便利n ブレークポイントデバッグができるn 通信周り以外を実装するときに、その部分に集中できる
n ガールアックスではn 通信の中間ロジック層でエンジンの違いを吸収するn ゲームのメインロジックからはエンジンの違いを意識しない
14
Copyright(C)DeNACo.,Ltd.AllRightsReserved.
環境整備(3/6)–通信遅延のシミュレーション機能
n スマートフォンの通信環境n Wi-Fi、LTE、3Gなどn クライアントA -> サーバー -> クライアントB の通信時間n 通信が不安定になることもある
n 通信遅延をシミュレーションする機能が必要n メッセージの送信を常にN秒前後遅延させて送信n 時たま、遅延の秒数を増やす(スパイクさせる)
15
Copyright(C)DeNACo.,Ltd.AllRightsReserved.
環境整備(4/6)–通信状況を表⽰する機能
n 通信の量、内容、品質の監視n 送受信しすぎていないか?n 通信品質が変動した時にゲームがどんな影響を受けているか?
n RTT(ラウンドトリップタイム)の監視n 対サーバー、対他クライアント
n 通信量や内容を常に画⾯に表⽰するデバッグ機能
n 通信の量、内容、品質に敏感になるn ゲーム処理に問題があるのかn 通信ロジックに問題があるのかn 通信環境に問題があるのかn サーバーに問題があるのか
16
Copyright(C)DeNACo.,Ltd.AllRightsReserved.
環境整備(5/6)–マッチング条件を変更する機能
n 特定のルームに参加させる機能n 開発中は⾃分専⽤のルームに参加し続けるn 他の開発者のルームに勝⼿に⼊らないn 品質検証(テスト)を並⾏して⾛らせられる
n ルームに特定の⼈数を集めての検証を複数同時に⾏える
n 通信ロジックが異なるクライアントをマッチさせないn 通信ロジックが異なる?
n アプリのVer1.1とVer1.2では、機能追加やバグ修正によって通信内容の互換性が失われた
n 通信ロジックをナンバリングしてマッチングの条件に加える
17
Copyright(C)DeNACo.,Ltd.AllRightsReserved.
環境整備(6/6)–通信ログを残す
n バグはどこにでも発⽣するn 通信に関するバグは追いにくいn ちゃんとログを残して調査できるように
n ロジック単位でログ出⼒をするn ロジック単位でログ出⼒の可否が変更できると調査しやすいこと
もあるn 通信サーバーとのログn クライアントの通信ロジック層のログn 遅延シミュレーションのログn ゲームのメインロジックのログn etc...
18
Copyright(C)DeNACo.,Ltd.AllRightsReserved.
NEXT STEP...
19
Copyright(C)DeNACo.,Ltd.AllRightsReserved.
NextStep…(1/2)
n リアルタイム通信ゲームの開発で意識しなければならないことはまだまだたくさんある
n どのクライアントがどの判定を⾏うかn ホストクライアントが全てを取り仕切る?n 近距離・遠距離攻撃の当たり判定はどのクライアントが⾏う?n ガールアックスでは攻撃種類によって当たり判定をするクライア
ントが違う
n メッセージの通信量や回数を削減できるか?n 通信=電池⾷うn 通信回数が少ないほうが⻑く遊べるn 通信回数が多いほうがよりリアルタイムな情報でゲームが進⾏するn トレードオフ
20
Copyright(C)DeNACo.,Ltd.AllRightsReserved.
NextStep…(2/2)
n リアルタイム通信ゲームの開発で意識しなければならないことはまだまだたくさんある
n チートを⾒抜くn わざと遅延させていないかn 通信内容を改ざんされていないかn etc …
n 遅延をいかに”ごまかす”かn クライアントA -> サーバー -> クライアントB の通信時間n ユーザーに遅延を感じさせないようにどう魅せるかが勝負n ガールアックスでも通信メッセージの遅延状況に応じて
様々な”ごまかし”処理を⼊れている
21
Copyright(C)DeNACo.,Ltd.AllRightsReserved.
まとめ
22
Copyright(C)DeNACo.,Ltd.AllRightsReserved.
まとめ
n リアルタイム通信ゲームの開発ならではの環境整備をしましょう
n 通信の量、内容、品質に敏感になろう
n ユーザーに遅延を感じさせないようにどう魅せるかが勝負
23
Copyright(C)DeNACo.,Ltd.AllRightsReserved.
ご清聴ありがとうございました!!
24