3. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
新書出ました!
JavaScriptの、最速クライアント用MVCフレームワークの本です!
⁃ 速いのが好きな人や、変化が多いブラウザ周辺技術に疲れた人に
オススメ
電子書籍のみです
表紙は黒ムツの仲間
⁃ 南オセアニアの深海魚
⁃ 最大75cm
⁃ 確認された最高齢は
100歳を超えるとか
4. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
マスタデータとは?
ゲームを支える要素
⁃ プログラム
⁃ アセット
• 画像とか2Dアニメーションとか3Dモデルとか音楽とか
⁃ マスタデータ
• プログラム・アセット以外
• シナリオ、テキスト、敵の強さなどのパラメータ
• レベルデザイン(3Dアクションのマップ)的なものはあまりマスターデータ
とは言わないかも・・・
5. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
マスタデータとは?
ゲームを支える要素
⁃ プログラム →プログラマ
⁃ アセット →アーティスト
• 画像とか2Dアニメーションとか3Dモデルとか音楽とか
⁃ マスタデータ→ゲームデザイナ
• プログラム・アセット以外
• シナリオ、テキスト、敵の強さなどのパラメータ
• レベルデザイン(3Dアクションのマップ)的なものはあまりマスターデータ
とは言わないかも・・・
6. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
マスターデータの役割
ユーザのプレイサイクルをデザインする
⁃ ユーザ体験のうち、UIとか画像とか音楽のような目や耳で感じる
以外のところ全般
• ステージクリアや、レベルアップのテンポだったり
• アイテムや必殺技、魔法などの種類とか性能だったり
• 敵の強さの調整だったり
• 会話やチュートリアルなどの説明だったり
モバイルのオンラインゲームでは特に大事
⁃ 新しいイベントやステージを(アプリ本体の更新なしに)追加したり
⁃ ユーザが挫折しやすいポイントがあれば、それを修正したり
7. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
マスターデータの役割
ユーザのプレイサイクルをデザインする
⁃ ユーザ体験のうち、UIとか画像とか音楽のような目や耳で感じる
以外のところ全般
• ステージクリアや、レベルアップのテンポだったり
• アイテムや必殺技、魔法などの種類とか性能だったり
• 敵の強さの調整だったり
• 会話やチュートリアルなどの説明だったり
モバイルのオンラインゲームでは特に大事
⁃ 新しいイベントやステージを(アプリ本体の更新なしに)追加したり
⁃ ユーザが挫折しやすいポイントがあれば、それを修正したり
今日は、比較的スポットのあたりにくい
マスターデータの運用改善の紹介をします
8. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Final Fantasy Record Keeper
DeNA社内でもっとも複雑※なマスターデータを持つゲーム
⁃ すでに確立された世界観を持つ
• 炎耐性とか、弱点属性とか、前後列、カウンター専用技、ボスの状態の変
化など、かなり複雑な要素が満載だが、ユーザはすでにFFの世界を熟知し
ているので、ほぼフルスペックのFFのメカニズムが実装されている
⁃ しかも、各シリーズの最小公倍数
• 元ネタがあるので、コンテンツ追加の速度は速い!
• スクウェアエニックス社様の大事なIPであるため、文言やアニメーション
の監修もきちんと行う体制になっている
⁃ 開発が並列
• イベントが常に数本走っている
• イベントの開発も常に数本並行で走っている
• 機能追加も並列で!
※ 何人かのチームメンバーにインタビューした結果
9. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
マスターデータ運用で悲鳴があがり始める前(2014/11ごろ)
Google Spreadsheetを使っている
⁃ 外部キー・主キーのような仕組みをGoogle Apps Scriptで実現
⁃ 社内でも実績のある仕組み
• かつてはExcelをリポジトリに入れてたりもしてたが、共同編集のしやすさ
から、今はGoogle Spreadsheetが主流
Jenkinsを使った運用の仕組みは整備されていた
⁃ マスタデータのcsvを所定の場所に置いてスクリプトを起動すると、
整合性チェックを行ってテストサーバに投入したり、問題なさそう
ならgithub:eにプルリクエストを送ったりできた
⁃ 将来必要だけど今はいらないデータを行ごとにフィルタする機能
10. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
外部キー・主キーのような仕組みの例
※なお、このシートはツールのテスト用に大分昔にコピーしたものなので
実際のゲーム内のデータとは異なります
わかりやすい名前で入力して、CSV生成時に主キーに置き換える仕組み
11. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
実際のマスターデータ
※シート間の関係を分析してみた結果
⁃ ゲームプレイに関わる部分のみ
⁃ 関連を複雑にする要素は一部抜いてます 10
12. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
FINAL FANTASY Record Keeperの開発の複雑さ
そもそもデータが複雑で量が多い
⁃ データだけで多くの調整ができるようになっている
• 味方や敵の強さの調整
• 演出の調整
• イベントの追加
• ダンジョンに出現する敵のセットの定義とか配置とか
同時にたくさんのチームが走る
⁃ 開発チームごとにスキーマを変更して追加のデータを増やしたい!
ということがよくおきる
28. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
補助機能(1): ブラウザでプレビュー機能
問題の追跡に使う
⁃ どのシートから出力されたか?ソースはどこファイルのどの行?
⁃ Relで設定した日本語の名前は何?
⁃ 出力設定はどのファイルから来たの?
29. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
補助機能(2): セル・文字単位のdiff表示機能
カラム数が多いシートもあるし、カラム追加などでは全行差分になって
しまうので、プルリクエストのページだと差分を確認しにくい
色はgithubに合わせた
30. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
補助機能(3): Google Spreadsheet用のblameコマンド
シートの行ごとに、最終編集者と変更日時を表示