Upgrade to Pro — share decks privately, control downloads, hide ads and more …

アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜

gree_tech
PRO
November 11, 2021

アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜

GREE Tech Conference 2021 で発表された資料です。
https://techcon.gree.jp/2021/session/Session-7

gree_tech
PRO

November 11, 2021
Tweet

More Decks by gree_tech

Other Decks in Technology

Transcript

  1. 株式会社WFS リードエンジニア 梅木 隼
    株式会社WFS 森 雅希
    アナザーエデンPC版リリースへの道のり
    〜WFSにおけるマルチプラットフォーム対応の取り組み〜

    View Slide

  2. • 氏名
    • 梅木 隼
    • 経歴
    • 2014年から Wright Flyer Studios にて
    ネイティブゲームの開発運営を担当。
    • アナザーエデンでは、クライアント開発、
    ビルドパイプライン開発などに従事。
    (過去エンジニアマネージャー、
    メインプログラマーなども担当)
    自己紹介(1/2)
    2

    View Slide

  3. • 氏名
    • 森 雅希
    • 経歴
    • 2019年にグリー株式会社に新卒入社しアナ
    ザーエデンチームに配属。
    • クライアントエンジニアとしてクライアン
    ト開発から運用効率化まで幅広く担当。
    現在はビルドパイプラインを担当。
    自己紹介(2/2)
    3

    View Slide

  4. 1.Wright Flyer Studios における
    マルチプラットフォーム展開の取り組み
    2.アナザーエデンPC版開発における技術的課題
    セッション内容
    4

    View Slide

  5. 概要
    2014年2月21日グリーのスマートフォン向けアプリ開発を担う新スタジオと
    して株式会社Wright Flyer Studios(現 株式会社WFS)を設立。2020年7月
    よりグリーのゲーム事業内にあるWright Flyer Studios事業をWFSに移管。
    事業
    コンテンツ事業, デジタルソリューション事業, プラットフォーム事業
    ビジョン
    新しい驚きを、世界中の人へ。
    Wright Flyer Studios の紹介
    5

    View Slide

  6. アナザーエデンの紹介
    6
    ゲームジャンル
    シングルプレイ専用RPG
    リリース
    2017/04/12正式公開
    配信エリア
    日本, アジア(※), 北米, 欧州
    配信言語
    日本語, 英語, 韓国語, 中国語(繁体字, 簡体字)
    配信端末
    iOS, Android, Windows/Steam(海外),
    Windows/自社配信(国内・開発中)
    ※中国国内向けはX.D. Network Inc.より配信

    View Slide

  7. View Slide

  8. アナザーエデンPC版リリースの経緯
    8
    市場背景
    • モバイル向けゲーム
    • グラフィックのリッチ化
    • 開発の大規模化・開発費の高騰
    • PCゲーム配信PFの盛り上がり
    新たなユーザー獲得チャネルの開拓
    • 国内市場からグローバル市場へ
    • モバイル以外のプラットフォームへ

    View Slide

  9. アナザーエデンのこれまでの歩み
    アナザーエデンPC版リリースの経緯
    9
    2017年4月
    2021年3月
    2021年4Q
    2019年1月
    国内モバイル版サービス開始
    (iOS/Android)
    海外PC版サービス開始 (Windows/Steam)
    海外モバイル版サービス開始
    (iOS/Android, アジア※/北米/欧州) ※中国国内除く
    国内PC版 サービス開始予定
    (Windows/自社配信)

    View Slide

  10. 1.Wright Flyer Studios における
    マルチプラットフォーム展開の取り組み
    2.アナザーエデンPC版における技術的課題
    • アーキテクチャ・技術スタック
    • 技術的課題と解決手法
    セッション内容
    10

    View Slide

  11. • ゲームエンジン
    • Cocos2d-x + 独自拡張
    • C++
    • OpenGL
    • スクリプト
    • Lua
    アーキテクチャ・技術スタック/クライアント
    11
    • アニメーション
    • Spine
    • エフェクト
    • LWF(Lightweight SWF)
    ※GREE開発/オープンソースのアニメーションエンジン
    • ムービー
    • CRI Sofdec

    View Slide

  12. アーキテクチャ・技術スタック/サーバー
    12
    • 開発言語
    • PHP
    • インフラ環境
    • AWS
    • EC2
    • S3
    • Dynamo DB
    • 管理サイトフロントエンド
    • React

    View Slide

  13. アーキテクチャ・技術スタック/その他
    13
    ビルドパイプライン/CI
    ● Jenkins
    ● 開発言語
    • Python
    • Golang
    その他
    ● セットアップ自動化
    • Ansible
    ● 定形業務自動化
    • Google Apps Script

    View Slide

  14. PC版開発における技術的課題
    14
    1.ゲームエンジン・UI関連
    2.セキュリティ関連
    • アセット保護
    • アンチチート対応
    3.クラッシュレポート収集
    4.自社配信 (国内PC版・開発中)

    View Slide

  15. 1.Wright Flyer Studios における
    マルチプラットフォーム展開の取り組み
    2.アナザーエデンPC版開発における技術的課題
    • アーキテクチャ・技術スタック
    • 技術的課題と解決手法
    セッション内容
    15

    View Slide

  16. ゲームエンジン/Cocos2d-x
    16
    • Cocos2d-x 対応OS
    • iOS, Android, Win32, …
    • OpenGL & GLFW
    • キーボード対応
    • ウィンドウ管理
    • フルスクリーン対応
    • 必要なコードを最新バージョンからバックポート

    View Slide

  17. UI関連
    17
    • キーボード・マウスでの操作に対応
    • モバイル版でソフトウェアキーボード前提となっている箇所
    の対応
    iOS Windows

    View Slide

  18. セキュリティ対策/アセット保護
    18
    • アセット暗号化
    • 画像アセット
    • Luaスクリプト
    • サウンドアセット
    • フォント
    • etc...

    View Slide

  19. セキュリティ対策/アセット保護
    19
    • ファイル復号処理の負荷・遅延の対応が必要
    • PCはHDDなどディスクアクセスが遅い場合も
    • 元々、非同期読み込みに対応していた箇所は問題なし
    • 問題のある箇所を特定し個別にチューニング

    View Slide

  20. • 商用のアンチチート・クラッキング防止に対応した
    セキュリティ製品を導入
    • 実行ファイルへの静的解析の阻止
    • 実行ファイルの難読化・暗号化により改ざんを防止
    • メモリ解析など動的解析の阻止
    • デバッガ接続の阻止
    • 不正なメモリアクセスの阻止
    セキュリティ対策/アンチチートシステム

    View Slide

  21. • カーネルモードドライバにより堅牢性を強固に
    セキュリティ対策/アンチチートシステム
    Application
    Middleware
    User
    Mode
    Kernel Mode
    Driver
    Kernel
    Mode
    Hardware
    OS Kernel

    View Slide

  22. • 正式な配布元であることを証明
    • ファイルの改ざんを検出
    • ウイルス対策ソフトによる
    マルウェア誤検出の防止
    • アンチチートシステムによる
    実行ファイル難読化の弊害
    セキュリティ対策/コード署名
    22

    View Slide

  23. クラッシュ→再起動
    クラッシュログ集積サーバー
    • アプリケーションのクラッシュログ収集・分析
    • 品質改善のためには必須
    クラッシュレポート収集
    23
    アプリ実行時
    クラッシュダンプ
    エラーコード
    スタックトレース
    etc

    View Slide

  24. • モバイル版は App Center (元HockeyApp) を使用
    • PC版は Win32アプリ非対応
    → 別途対応が必要
    クラッシュレポート収集
    24

    View Slide

  25. • Sentry
    • エラーログ集積サービス
    • 多くのプラットフォームに対応
    • パフォーマンス情報の分析なども可能
    • アプリビルド時にシンボル情報を Sentry へ送信
    • クラッシュ時のメモリダンプ、サーバーへの送信処理
    • Google Breakpad (Minidump) + 独自実装
    クラッシュレポート収集
    25

    View Slide

  26. 共通基盤Gamelibによる決済システム
    26
    • ネイティブゲーム向け共通基盤 Gamelib SDK
    • Game Platformチームにて開発
    • 主な機能
    • ユーザー認証 / 課金 / SNS連携 / モデレーション etc...
    • 対応OS
    • iOS / Android / Windows
    • 対応ゲームエンジン
    • Cocos2d-x / Unity / Unreal Engine

    View Slide

  27. 共通基盤Gamelibによる決済システム
    27
    • 対応PF(課金)
    • App Store (Apple) / Google Play / Amazon Store
    • DMM GAMES / Steam
    ポケラボ
    DMM GAMES
    対応プロダクト

    View Slide

  28. • 自社配信
    • 国内PC版(開発中)にて対応
    • インストーラー
    • 公式サイトよりダウンロード
    • ランチャー
    • 自動アップデート機能
    自社配信
    28

    View Slide

  29. • Inno Setup を使用
    • 各コンポーネントのインストール
    • ランチャー(後述)
    • ランタイムライブラリ
    • アンチチートカーネルドライバ
    • exe ファイルとしてパッケージ化
    • S3へアップロード
    • 公式サイトから配布
    自社配信/インストーラー
    29

    View Slide

  30. • ランチャーの役割
    • 初回のゲーム本体インストール
    • 自動アップデート
    • ゲーム本体
    • ランチャー自身
    • ゲーム本体とは別アプリ
    • .NET5 + WPF を使用
    自社配信/ランチャー
    30

    View Slide

  31. 自社配信/ランチャー
    31
    ランチャー起動
    アップデート
    要否
    ランチャー/ゲーム本体
    アップデート
    ゲーム本体起動
    必要 不要
    • 自動アップデート
    • ユーザーにはできる限りランチャーの存在を意識させない

    View Slide

  32. • PC版としての課題への対応
    • 既存プラットフォームに頼っている箇所は意外と多い
    • 一つ一つの対応は細かいものだが、技術の積み上げが重要
    • 今回の知見を活かして、今後も
    グローバル対応/マルチプラットフォーム対応を推進
    PC版対応の技術的課題/おわりに
    32

    View Slide

  33. 33

    View Slide

  34. 34

    View Slide

  35. 35

    View Slide

  36. 36

    View Slide