SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
FINAL FANTASY Record Keeper の作り方
Report
dena_study
Follow
Nov. 11, 2014
•
0 likes
•
154,227 views
1
of
38
FINAL FANTASY Record Keeper の作り方
Nov. 11, 2014
•
0 likes
•
154,227 views
Download Now
Download to read offline
Report
Software
第二回DeNAゲーム開発勉強会のスライドです https://atnd.org/events/58433
dena_study
Follow
Recommended
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
Tokoroten Nakayama
121.4K views
•
99 slides
Unified JVM Logging
Yuji Kubota
12.9K views
•
77 slides
ビジネスパーソンのためのDX入門講座エッセンス版
Tokoroten Nakayama
52.4K views
•
26 slides
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
22.9K views
•
40 slides
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
Yoshiki Hayama
53.2K views
•
243 slides
ドメイン駆動設計をゲーム開発に活かす
増田 亨
4.7K views
•
45 slides
More Related Content
What's hot
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
47.9K views
•
89 slides
本当は恐ろしい分散システムの話
Kumazaki Hiroki
677.6K views
•
70 slides
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
48.1K views
•
65 slides
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
25.1K views
•
176 slides
データ活用をするための組織
Kon Yuichi
856 views
•
38 slides
ユーザーストーリー駆動開発で行こう。
toshihiro ichitani
117.7K views
•
66 slides
What's hot
(20)
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
•
47.9K views
本当は恐ろしい分散システムの話
Kumazaki Hiroki
•
677.6K views
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
•
48.1K views
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
•
25.1K views
データ活用をするための組織
Kon Yuichi
•
856 views
ユーザーストーリー駆動開発で行こう。
toshihiro ichitani
•
117.7K views
Riderはいいぞ!
UnityTechnologiesJapan002
•
14K views
世界一わかりやすいClean Architecture
Atsushi Nakamura
•
46.4K views
マイクロにしすぎた結果がこれだよ!
mosa siru
•
132K views
O/Rマッパーによるトラブルを未然に防ぐ
kwatch
•
48.4K views
Twitterのsnowflakeについて
moai kids
•
24.6K views
分散システムについて語らせてくれ
Kumazaki Hiroki
•
119K views
ドメイン駆動で開発する ラフスケッチから実装まで
増田 亨
•
15.6K views
PHP7の内部実装から学ぶ性能改善テクニック
Yoshio Hanawa
•
17.6K views
なぜコンピュータを学ばなければならないのか 21世紀の君主論
Tokoroten Nakayama
•
91.8K views
TDD のこころ @ OSH2014
Takuto Wada
•
15.8K views
開発速度が速い #とは(LayerX社内資料)
mosa siru
•
60K views
Unityでオニオンアーキテクチャ
torisoup
•
9.7K views
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
Tokoroten Nakayama
•
164.5K views
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
•
104.4K views
Viewers also liked
DeNA流cocos2d xとの付き合い方
dena_study
18.1K views
•
44 slides
モバイル用Webフレームワーク最前線
アシアル株式会社
3.2K views
•
35 slides
Html5/JSモバイルアプリ最前線
アシアル株式会社
2.1K views
•
42 slides
医療データ解析界隈から見たICLR2017
RIKEN, Medical Sciences Innovation Hub Program (MIH)
33.9K views
•
16 slides
[ICLR2017読み会 @ DeNA] ICLR2017紹介
Takeru Miyato
26.1K views
•
23 slides
言葉のもつ広がりを、モデルの学習に活かそう -one-hot to distribution in language modeling-
Takahiro Kubo
37.9K views
•
33 slides
Viewers also liked
(11)
DeNA流cocos2d xとの付き合い方
dena_study
•
18.1K views
モバイル用Webフレームワーク最前線
アシアル株式会社
•
3.2K views
Html5/JSモバイルアプリ最前線
アシアル株式会社
•
2.1K views
医療データ解析界隈から見たICLR2017
RIKEN, Medical Sciences Innovation Hub Program (MIH)
•
33.9K views
[ICLR2017読み会 @ DeNA] ICLR2017紹介
Takeru Miyato
•
26.1K views
言葉のもつ広がりを、モデルの学習に活かそう -one-hot to distribution in language modeling-
Takahiro Kubo
•
37.9K views
ICLR読み会 奥村純 20170617
Jun Okumura
•
33.9K views
ICLR2017読み会 Data Noising as Smoothing in Neural Network Language Models @Dena
Takanori Nakai
•
33.5K views
Semi-Supervised Classification with Graph Convolutional Networks @ICLR2017読み会
Eiji Sekiya
•
34.1K views
170614 iclr reading-public
Katsuhiko Ishiguro
•
34.1K views
Q prop
Reiji Hatsugai
•
33.3K views
Similar to FINAL FANTASY Record Keeper の作り方
[141004] cedec 2014 참관기 & 강연 리뷰 #1
MinGeun Park
1.8K views
•
444 slides
FFRKを支えるWebアプリケーションフレームワークの技術
dena_study
12.2K views
•
31 slides
Zerto 9.5徹底解説! Linux版リリースで脱Windowsでも簡単VMレプリケーション
株式会社クライム
258 views
•
35 slides
シンラ・テクノロジー第2回クラウドゲーム開発者会議
Shinra_Technologies
3.4K views
•
56 slides
スマートフォン勉強会 関東 19
Kenji Daikoku
2.3K views
•
17 slides
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
gree_tech
10.4K views
•
26 slides
Similar to FINAL FANTASY Record Keeper の作り方
(20)
[141004] cedec 2014 참관기 & 강연 리뷰 #1
MinGeun Park
•
1.8K views
FFRKを支えるWebアプリケーションフレームワークの技術
dena_study
•
12.2K views
Zerto 9.5徹底解説! Linux版リリースで脱Windowsでも簡単VMレプリケーション
株式会社クライム
•
258 views
シンラ・テクノロジー第2回クラウドゲーム開発者会議
Shinra_Technologies
•
3.4K views
スマートフォン勉強会 関東 19
Kenji Daikoku
•
2.3K views
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
gree_tech
•
10.4K views
クリエイター魂を刺激する!シンラが提案する「ゲームの超進化」ロードマップ
Shinra_Technologies
•
1.4K views
Firefox mobile for android internals
Makoto Kato
•
1.4K views
Windows 8 Developers カンファレンス
Kaoru NAKAMURA
•
2.1K views
Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容
Tomokazu Kizawa
•
1.3K views
Firefox Mobile
Makoto Kato
•
925 views
消滅都市 Cocos2d-xでの演出・UIあれこれ
Shun Noguchi
•
12K views
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
Kentaro Matsumae
•
19.4K views
Windows 10 RS4 Insider Preview
Tomokazu Kizawa
•
131 views
Unity * スマートフォン開発で学んだこと
Katsutoshi Makino
•
15.6K views
Cerebro for VFX / Animation Japan
CineSoft
•
921 views
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
Web Technology Corp.
•
6.4K views
リモート・スマホ・レンタル(第2回 Androidテスト祭り)
NTT Resonant Technology Inc.
•
1.8K views
CMSI計算科学技術特論B(15) インテル Xeon Phi コプロセッサー向け最適化、並列化概要 1
Computational Materials Science Initiative
•
3.8K views
Game Development and Automation @ Agile Sapporo 2018 #1
Michael Tedder
•
566 views
More from dena_study
ガールアックス:リアルタイム通信処理の効率的な実装
dena_study
5.1K views
•
31 slides
ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門
dena_study
3.5K views
•
24 slides
Unityで本格戦国シュミレーションRPG 開発
dena_study
14.2K views
•
27 slides
FINAL FANTASY Record Keeperのマスターデータを支える技術
dena_study
85.5K views
•
33 slides
制作を支えたツール達 (パズル戦隊デナレンジャー)
dena_study
6.2K views
•
23 slides
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
dena_study
8.3K views
•
39 slides
More from dena_study
(11)
ガールアックス:リアルタイム通信処理の効率的な実装
dena_study
•
5.1K views
ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門
dena_study
•
3.5K views
Unityで本格戦国シュミレーションRPG 開発
dena_study
•
14.2K views
FINAL FANTASY Record Keeperのマスターデータを支える技術
dena_study
•
85.5K views
制作を支えたツール達 (パズル戦隊デナレンジャー)
dena_study
•
6.2K views
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
dena_study
•
8.3K views
Game BaaS Implemented in Ruby
dena_study
•
7.5K views
FFRK cocos2d xレイヤーの最適化
dena_study
•
19.7K views
Effective web performance tuning for smartphone
dena_study
•
64.8K views
FINAL FANTASY Record Keeper 演出データについて
dena_study
•
21.6K views
スマホネイティブゲーム 開発効率改善
dena_study
•
7.2K views
FINAL FANTASY Record Keeper の作り方
1.
FINAL FANTASY Record
Keeper の作り方 株式会社ディー・エヌ・エー Japan リージョン ゲーム事業本部 新井 英資 eisuke.arai@dena.com ©2014 SQUARE ENIX CO.,LTD / DeNA Co.,Ltd. All Rights Reserved.
2.
自己紹介 • 新井
英資 • FINAL FANTASY Record Keeper (FFRK) リードエンジニア • 2011年入社 4年目 • 以前はアルバイトでiOSアプリを作ったり • インフラやミドルウェアとチームを繋ぐ人 • 出来ないことを出来るようにします
3.
今日お話すること • FFRKというゲームを作ってみた話
• FFRKのアーキテクチャの話 • FFRKの運用周りの小話
4.
FFRK というゲームを作ってみた話
5.
FFRKについて • iOS/Android™向けにリリース(2014/09/25)
• 株式会社スクウェア・エニックスとの共同開発タイトル • 全FFシリーズのバトルをドット絵で再現 • 懐かしくて新しいFINAL FANTASY • システム開発はDeNA • おかげ様でとても好評
6.
デモ • 実際の本番アプリの動画を再生します
7.
開発当初の要件 • アプリで作りたい
– リッチなアニメーションを再生 • コンテンツ更新をコントロールしたい – アプリ更新無しでのイベントリリース • これまでの既存リソースを使いたい – Kickmotor(D.O.T.、三国志ロワイヤル) – ブラウザゲー用の内製フレームワーク
8.
ハイブリッドアプリ • WebViewレイヤとOpenGLレイヤの2層構造
– リッチな表現はOpenGLで描画 • WebViewBridge – WebView上のJSからネイティブの関数を実行 WWeebbVViieeww OOppeennGGLL
9.
ここはWebView
10.
ここはOpenGL
11.
WebView上のJS実装 • MVCフレームワークの導入
– フロントもきちんと構造化して実装 • Backbone.js + RequireJS – 利用実績を考慮 • Underscore template – JSTにコンパイルして使う
12.
バトルの実装 • FFのATBを再現するには…
– 待機、詠唱、攻撃、などの状態制御 • JSでステートマシンを実装 – ネイティブアニメ描画とバトルロジックを分離 • アニメーションはDeferredチェーン – ネイティブからの描画コールバックを待って次へ • ボス毎にステートマップを作成 – 多彩なボスの行動制御
13.
FFRKを作ったぞ! よしリリースだ!
14.
リリース1ヶ月前の出来事 • CBTの結果
–重い –熱い • 10fpsを切るもっさりバトル • スクロール出来ないアイテムリスト • 充電しながらプレイしても電池が減る
15.
orz
16.
パフォチュー祭り WebView編 •
Chromeでのプロファイリング –無駄な処理を徹底的に洗い出す –レイアウト構造からの見直し • ネイティブと同等のレベルへ
17.
これが
18.
こう
19.
これが
20.
こう
21.
パフォチュー祭り ネイティブ編 •
各OpenGL描画APIのコールスタックを精査 • 無駄な描画APIコールを減らす – 頂点数0での描画 – 無駄に広い描画領域 • 同じテクスチャを参照する描画をまとめる • Android2.X系でも30fps出るように – ドローコールは4分の1まで削減
22.
これが
23.
こう
24.
ハイブリッドで作るメリット • イベントドリブンなゲーム運用が出来る
– クライアント申請期間に左右されない – 究極的にはJSを変えれば全く別のゲームを作れる • ChromeやSafariでデバッグ出来る – ビルドをし直す必要が無くて便利
25.
とはいえ • アクション性の高い要素は難しい
– WebViewBridgeでのレイテンシ • 所詮はWebView – HTMLテンプレート読み込み途中で止まったり – ひっそりと再読み込みボタンを置く悲しみ • OSバージョンによる挙動の違い – 主にAndroid™ – 主にAndroid™
26.
FFRK のアーキテクチャの話
27.
ざっくり概要
28.
クライアント構成
29.
ネイティブアニメーション • アニメーションプレイヤー
– 内製ツールで作成したアニメデータを Cocos2d-xで再生する • 細かなアニメ制御 – データでの制御 – マスタでの制御 – JSでの制御
30.
ネイティブキャッシュ(図解) キキャャッッシシュュ機機構構 デディィレレククトトリリ
hhttttppdd ダダウウンンロローーダダ WebView 持っていないアセットのみ をサーバからとってくる
31.
ネイティブキャッシュ • WebViewからもネイティブからも透過的にアクセス
– Mongoose を使いアプリ内部でプロキシサーバを立てる – http://127.0.0.1:12345/hoge?url=file&ver=abcde – キャッシュが無ければサーバから取得(cURL) • キャッシュさせるもの – 大体何でも • cssについては少し工夫 – 保存時に画像URLを置換してキャッシュサーバを向ける • ビルドに抱き込むアセットも同様にアクセス可能
32.
FFRKの運用周りの小話
33.
高負荷対策 • リリース後わりとすぐにTVCM開始
– 急増するユーザ(現在:登録者数300万人超) – 荒ぶるWebサーバ • 迅速な負荷対応 – シャードDBを追加投入 – Webサーバを順次投入 – 参照をslaveに逃がせる所は逃がす • サービス停止すること無く乗り切りました
34.
マスタ管理 • Google
Spreadsheet で一括管理 • Google Apps Script – マスタ間での値のマッピング – csvでの吐き出し • マスタ作成フロー – 開発環境でロード – マスタのテスト – Jenkins経由でgithub:EにPull-Request
35.
ChatOps • IRC
+ Jenkins + Hubot – Jenkinsが失敗していると全員怒られる • Hubotが管理するもの – Jenkinsでのビルド状況 – 検証環境の状態 – その他余計な機能多数
36.
まとめ • FFRKはハイブリッドアプリ
– WebViewとネイティブの両レイヤで最適化 • FFRKの特徴的機構 – アニメーションプレイヤー – ネイティブキャッシュ • FFRKの運用は終わりなき改善の旅 – 高負荷対応 – マスタ管理 – ChatOps
37.
突然の謝辞 • たくさんのエンジニアにご協力頂きました
– インフラチームの皆さん – ミドルウェアチームの皆さん – パフォーマンスチューナーの皆さん – 開発チームの皆さん • ありがとうございました!!
38.
ご静聴ありがとうございました
Editor's Notes
----- 会議メモ (2014/11/07 19:01) ----- CPUの処理時間も入れる
----- 会議メモ (2014/11/07 19:01) ----- mongoose