コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【第5回DeNAゲーム開発勉強会】「パズル戦隊デナレンジャー:ゲーム制作を支えたツール達」メモ

https://atnd.org/events/65071

https://itunes.apple.com/jp/app/pazuru-zhan-duidenarenja/id866017188?mt=8&uo=4&at=10l8JW&ct=hatenablog

ツール

  • クラッシュレポートとシューティング
    • Crittercism & LiftEngine
  • ステージデータの制作
    • Tiled Map Editor
  • アニメーション・エフェクトの制作
    • SpriteStudio

クラッシュレポートとシューティング

  • Crittercism
    • http://www.crittercism.com/
    • Mobile Application Performance Management
    • クラッシュレポーティングに限らない
      • アプリケーションの利用分析
      • APIアクセスなどのパフォーマンス分析
      • 現時点ではクラッシュレポータとしてのみ利用
    • 特に役に立ったもの
      • スタックトレースの自動Symbolicate
      • ゲームのユーザIDとの紐づけ
      • クラッシュ数推移の集計
  • LiftEngineによるデバッグ支援
    • 独自のメモリアロケータ
      • 解放するメモリ領域を特定パターンで塗りつぶす
    • 遅延解放
      • deleteされたら、塗りつぶしだけしておき
        実際のメモリ解放は少し待ってから行う
      • 解放するとき、内容が書き換わっていないかチェック
  • クラッシュ対応そのほかの取り組み
    • PCに接続したスマートフォンを使用してQA
    • Xcodeでデバッガ起動した状態でQA
      • QAメンバに端末ログ採取を徹底
    • 長時間の耐久プレイテスト
    • クローズドベータテストおけるクラッシュ調査
      • 頻度の低いクラッシュの推移を調査

ステージデータの制作

  • Tiled Map Editor
    • http://www.mapeditor.org/
    • 座標ごとにタイルを置いてマップデータを作る
      • レイヤーを複数持てる
      • プロパティだけ持つレイヤーも
        • 必要スコアなどの設定値を保持するために利用
    • Cocos2d-x用のローダーがある
    • イマイチだったところも
      • 座標ごとに持てるデータはタイルのIDのみ
        • 座標ごとに構造体を持ちたいケースには不適切
    • マップデータと描画情報が密結合している
      • 本当は2次元配列のマップデータだけでよかった
      • Cocos2d-x用のローダーが、画像のロードまで行っている
    • 編集時にバリデーションが効かない
    • 開発期間の折り合いがつけば、専用に作ってもよかった

アニメーション・エフェクトの制作

  • 選定条件
    • データの量産に向いているか
      • 制作を担当するデザイナーの視点で
    • 導入実績が豊富か
      • 制作を外注しやすい
    • 再生用ライブラリの品質
      • オープンソースであれば手を入れることも可能
  • 検討
  • SpriteStudioを採用
    • http://www.webtech.co.jp/spritestudio/
    • コンシューマでの採用実績もあり、パフォーマンスにも期待
    • ところが
      • Cocos2d-x用の標準プレイヤーが遅すぎる
      • 出力されるデータの中身に無駄が多い
        • 無駄なロードが大量に発生
        • 使っていない画像の参照情報をツールで一括削除
      • エンジニアが頑張ることが多かった
        • SpriteStudioのデータに、ゲーム中のSpriteや
          他のアニメーションをアタッチしたい場合など
      • パーティクルを使えない
        • なので、簡易パーティクルを実装
        • (SpriteStudioの最新バージョンではサポート済み)
  • 反省を活かして