GREE Tech Conference 2021 で発表された資料です。 https://techcon.gree.jp/2021/session/Session-7
株式会社WFS リードエンジニア 梅木 隼株式会社WFS 森 雅希アナザーエデンPC版リリースへの道のり〜WFSにおけるマルチプラットフォーム対応の取り組み〜
View Slide
• 氏名• 梅木 隼• 経歴• 2014年から Wright Flyer Studios にてネイティブゲームの開発運営を担当。• アナザーエデンでは、クライアント開発、ビルドパイプライン開発などに従事。(過去エンジニアマネージャー、メインプログラマーなども担当)自己紹介(1/2)2
• 氏名• 森 雅希• 経歴• 2019年にグリー株式会社に新卒入社しアナザーエデンチームに配属。• クライアントエンジニアとしてクライアント開発から運用効率化まで幅広く担当。現在はビルドパイプラインを担当。自己紹介(2/2)3
1.Wright Flyer Studios におけるマルチプラットフォーム展開の取り組み2.アナザーエデンPC版開発における技術的課題セッション内容4
概要2014年2月21日グリーのスマートフォン向けアプリ開発を担う新スタジオとして株式会社Wright Flyer Studios(現 株式会社WFS)を設立。2020年7月よりグリーのゲーム事業内にあるWright Flyer Studios事業をWFSに移管。事業コンテンツ事業, デジタルソリューション事業, プラットフォーム事業ビジョン新しい驚きを、世界中の人へ。Wright Flyer Studios の紹介5
アナザーエデンの紹介6ゲームジャンルシングルプレイ専用RPGリリース2017/04/12正式公開配信エリア日本, アジア(※), 北米, 欧州配信言語日本語, 英語, 韓国語, 中国語(繁体字, 簡体字)配信端末iOS, Android, Windows/Steam(海外),Windows/自社配信(国内・開発中)※中国国内向けはX.D. Network Inc.より配信
アナザーエデンPC版リリースの経緯8市場背景• モバイル向けゲーム• グラフィックのリッチ化• 開発の大規模化・開発費の高騰• PCゲーム配信PFの盛り上がり新たなユーザー獲得チャネルの開拓• 国内市場からグローバル市場へ• モバイル以外のプラットフォームへ
アナザーエデンのこれまでの歩みアナザーエデンPC版リリースの経緯92017年4月2021年3月2021年4Q2019年1月国内モバイル版サービス開始(iOS/Android)海外PC版サービス開始 (Windows/Steam)海外モバイル版サービス開始(iOS/Android, アジア※/北米/欧州) ※中国国内除く国内PC版 サービス開始予定(Windows/自社配信)
1.Wright Flyer Studios におけるマルチプラットフォーム展開の取り組み2.アナザーエデンPC版における技術的課題• アーキテクチャ・技術スタック• 技術的課題と解決手法セッション内容10
• ゲームエンジン• Cocos2d-x + 独自拡張• C++• OpenGL• スクリプト• Luaアーキテクチャ・技術スタック/クライアント11• アニメーション• Spine• エフェクト• LWF(Lightweight SWF)※GREE開発/オープンソースのアニメーションエンジン• ムービー• CRI Sofdec
アーキテクチャ・技術スタック/サーバー12• 開発言語• PHP• インフラ環境• AWS• EC2• S3• Dynamo DB• 管理サイトフロントエンド• React
アーキテクチャ・技術スタック/その他13ビルドパイプライン/CI● Jenkins● 開発言語• Python• Golangその他● セットアップ自動化• Ansible● 定形業務自動化• Google Apps Script
PC版開発における技術的課題141.ゲームエンジン・UI関連2.セキュリティ関連• アセット保護• アンチチート対応3.クラッシュレポート収集4.自社配信 (国内PC版・開発中)
1.Wright Flyer Studios におけるマルチプラットフォーム展開の取り組み2.アナザーエデンPC版開発における技術的課題• アーキテクチャ・技術スタック• 技術的課題と解決手法セッション内容15
ゲームエンジン/Cocos2d-x16• Cocos2d-x 対応OS• iOS, Android, Win32, …• OpenGL & GLFW• キーボード対応• ウィンドウ管理• フルスクリーン対応• 必要なコードを最新バージョンからバックポート
UI関連17• キーボード・マウスでの操作に対応• モバイル版でソフトウェアキーボード前提となっている箇所の対応iOS Windows
セキュリティ対策/アセット保護18• アセット暗号化• 画像アセット• Luaスクリプト• サウンドアセット• フォント• etc...
セキュリティ対策/アセット保護19• ファイル復号処理の負荷・遅延の対応が必要• PCはHDDなどディスクアクセスが遅い場合も• 元々、非同期読み込みに対応していた箇所は問題なし• 問題のある箇所を特定し個別にチューニング
• 商用のアンチチート・クラッキング防止に対応したセキュリティ製品を導入• 実行ファイルへの静的解析の阻止• 実行ファイルの難読化・暗号化により改ざんを防止• メモリ解析など動的解析の阻止• デバッガ接続の阻止• 不正なメモリアクセスの阻止セキュリティ対策/アンチチートシステム
• カーネルモードドライバにより堅牢性を強固にセキュリティ対策/アンチチートシステムApplicationMiddlewareUserModeKernel ModeDriverKernelModeHardwareOS Kernel
• 正式な配布元であることを証明• ファイルの改ざんを検出• ウイルス対策ソフトによるマルウェア誤検出の防止• アンチチートシステムによる実行ファイル難読化の弊害セキュリティ対策/コード署名22
クラッシュ→再起動クラッシュログ集積サーバー• アプリケーションのクラッシュログ収集・分析• 品質改善のためには必須クラッシュレポート収集23アプリ実行時クラッシュダンプエラーコードスタックトレースetc
• モバイル版は App Center (元HockeyApp) を使用• PC版は Win32アプリ非対応→ 別途対応が必要クラッシュレポート収集24
• Sentry• エラーログ集積サービス• 多くのプラットフォームに対応• パフォーマンス情報の分析なども可能• アプリビルド時にシンボル情報を Sentry へ送信• クラッシュ時のメモリダンプ、サーバーへの送信処理• Google Breakpad (Minidump) + 独自実装クラッシュレポート収集25
共通基盤Gamelibによる決済システム26• ネイティブゲーム向け共通基盤 Gamelib SDK• Game Platformチームにて開発• 主な機能• ユーザー認証 / 課金 / SNS連携 / モデレーション etc...• 対応OS• iOS / Android / Windows• 対応ゲームエンジン• Cocos2d-x / Unity / Unreal Engine
共通基盤Gamelibによる決済システム27• 対応PF(課金)• App Store (Apple) / Google Play / Amazon Store• DMM GAMES / SteamポケラボDMM GAMES対応プロダクト
• 自社配信• 国内PC版(開発中)にて対応• インストーラー• 公式サイトよりダウンロード• ランチャー• 自動アップデート機能自社配信28
• Inno Setup を使用• 各コンポーネントのインストール• ランチャー(後述)• ランタイムライブラリ• アンチチートカーネルドライバ• exe ファイルとしてパッケージ化• S3へアップロード• 公式サイトから配布自社配信/インストーラー29
• ランチャーの役割• 初回のゲーム本体インストール• 自動アップデート• ゲーム本体• ランチャー自身• ゲーム本体とは別アプリ• .NET5 + WPF を使用自社配信/ランチャー30
自社配信/ランチャー31ランチャー起動アップデート要否ランチャー/ゲーム本体アップデートゲーム本体起動必要 不要• 自動アップデート• ユーザーにはできる限りランチャーの存在を意識させない
• PC版としての課題への対応• 既存プラットフォームに頼っている箇所は意外と多い• 一つ一つの対応は細かいものだが、技術の積み上げが重要• 今回の知見を活かして、今後もグローバル対応/マルチプラットフォーム対応を推進PC版対応の技術的課題/おわりに32
33
34
35
36