CEDEC 2010「ネットワークゲーム開発における構成管理ソフトの活用方法」

今回はSEGAさんのPERFORCEの導入事例のセッションをレポートします。

ネットワークゲームのデータ管理の複雑さと、PERFORCEとその他のソフト(静的解析・BTS・自動ビルド)との連携などなかなか興味深かったです。

ではレポートです。

概要

ファンタシースターシリーズでのPERFORCEの導入と、その他のソフトとの連携

  • なぜ構成管理ソフトを導入するのか?
  • PERFORCEを採用した理由

はじめに

セッション最後の質疑応答であった、PERFORCEと連動しているツールです。レポートに出てくる各種ツールは以下のものになると思います。

連動しているツール

なぜ構成管理ソフトを導入するのか?

導入のきっかけ
構成管理ソフトとは?
  • バージョン管理ソフトと、構成管理ソフトとどこが違うのか?
    • 成果物の制御や変更管理・ワークフロー管理なども行う
    • ビルド環境の構築のコアとなるツール
      • プログラムのソース・デザインデータ・企画パラメーターなども一括管理
      • デイリービルドも行える
    • 成果物の状態を把握し、任意のバージョンを再現可能とする
      • 日付を指定しての再現・バグのない状態への巻き戻りも容易にできる
通常のゲームのタイムライン

ネットワーク開発において
  • ゴールは一つではない(運営が終了するまで)
  • しかも同時に別の道を走らなければならない
  • しかも、同時に別の道を走らなければ
  • それも"全力疾走で"
ネットワークゲームのタイムライン

ネットワークゲームで不具合が発生した場合


  • 並列に複数のバージョンを作成する環境の構築
  • 緊急事態への迅速な対処方法の確率
  • 取得・サーバアップなどの処理時間の軽減
  • チェックの効率アップやバグの減少
構成管理ソフトの再検討
  • 継続的なインテグレーション環境
    • ビルドとテストを自動で行う環境の構築
  • バグを減らすためのツールの導入
  • 作業タスクの把握と変更管理
  • チェック体制の見直しとツールでの補完
要求
  • ブランチとマージ機能の充実
  • 修正項目の把握と管理ができる
  • 速くて軽くて簡単に扱える
  • 他のツールとの連動ができる
    • BTS・静的解析・タスク管理ソフトとの連携
選定候補
  • PERFORCE
  • AlienBrain
    • データが大きくなりがち
    • 全体的に処理が重い
    • ブランチ・マージの機能が求めるレベルではなかった
    • アーティストが使うデータ(画像など)のビューアが充実している
      • アーティスト間のデータのやり取りには使われている
  • Subversion
    • データが増えると重くなる
    • バイナリデータの扱いが苦手
    • ブランチの機能が弱い
      • ファイルを丸々コピーしてしまう
    • ".svn"フォルダが生成されてしまう
      • そのまま360のデータフォルダに入って問題になったことも
  • Git/Mercurial/Bazaar(分散バージョン管理)
    • Linuxベース
    • Windows GUIが用意されていない
    • 日本語対応※
    • プランナ・アーティストに使ってもらうには、使いづらい
  • ココの比較記事も分かりやすいです
  • ※セッション後に聞いた話では、Gitなどでもビューアや、GUIツールが対応されれば、全然使えるような事も言われていました。

PERFORCE 決定理由

  • 軽い・速い
    • 採用理由の大半がここ
    • 40GBのデータを1回でコミット出来たのは、PERFORCEだけ
      • 他のソフトは途中で止まる
      • 分割してコミットするなどして、対応しないといけない
  • Linuxでも、Windowsでも使える
  • サーバのセッティングと管理が楽
  • ブランチの機能が強力
  • GUIのクライアントが存在する
  • ソースとデータを同一に管理できる
  • 日本語対応されている
  • サポートが受けられる
    • 社内でサポートする必要が減る
運用
  • ソース・データともにPERFORCE
    • リポジトリにアップするようにした
    • プランナ・アーティストにも直接サブミットをしてもらう
    • チェンジリストで作業を管理する
    • マイルストーンごとにブランチを作成
    • 2〜3のブランチを同時並列で開発
活用
  • 並列作業となるパッチ作成に活用
  • ローカライズ対応
  • 他機種への移植
  • ゲームショーなどのプレゼンROMの対応
Tips
  • サブミットする単位は一つの変更毎に行う
  • サブミットコメントのフォーマットを揃える
  • ブランチするタイミングを見極める
  • ブランチのブランチは作らない(メインラインパターン)
  • Excelとの差分が取れないので、インハウスツールを作って対応する
利点
  • プラグインが充実
    • googleでも採用している
    • WEBで検索すれば結構出てくる
  • 補完機能が便利
  • オフライン機能を使うと、簡易分散型のような使い方もできる
  • リビジョングラフが、分かりやすくて便利
  • ラベルが速くて軽い
    • ほぼ一瞬
    • 容量も1KBくらい
    • 自動ビルド作成時、毎回ラベリング
要望
  • 日本語対応P4V(GUIツール)のバージョンアップを速くしてほしい
    • 日本語のリリースが、英語版と比べて半年程度遅れる
  • コマンドラインの機能すべてをGUIツールがサポートしていない
  • 他の構成管理ソフトとの操作の違いをフォローして欲しい
開発環境の紹介
  • Hudsonを使って、継続的インテグレーション環境の構築
    • 日本語環境に対応している
    • PERFORCEのプラグインがあった
  • 常時サブミットを監視してビルドを行う
    • 専用PCを設置、自動ビルドを行う
    • 出来たものは成果物として、サーバにアップする
  • バージョンを指定しての成果物作成が可能
    • 以前のバージョン・日付を指定して再現することが出来る
  • IRCを使ってビルドの要求と結果の通知
    • 各職制でIRCのチャンネルを持っていて連絡・質問などを行える
    • 自動ビルドの結果はそこに通知される
      • またIRCにコマンドを入れることで、自動ビルド環境のコントロールも出来る
  • 静的解析ツールとの連動
    • 毎晩、静的解析ツールを回している
    • 毎朝、引っかかった部分は各自の所に結果が届く
  • タスク管理システムやBTSとの連動
    • サブミットのコメントに、BTSやタスク管理システムにリンクを貼る
    • PERFORCEのチェンジリストの番号を、BTSのタグを貼ったりできる

まとめ

  • リリースに必要なファイルは全て管理しよう
  • アーティスト・プランナにも使いやすい環境を整備しよう
  • 変更管理をしっかりしよう
  • 様々なツールを連動させよう
  • より良い環境になるように、みんなで工夫しよう

ひとまず、これでニュースサイトに上がっていないセッションのレポートは、いくつか補完できたでしょうか。もうそろそろCEDECアーカイブが公開されるはず(?)なので、それまでの繋ぎ情報になると思いますが、活用していただけるとありがたいです。

あとマズい情報など載っけてしまった時は、お手数ですがご連絡ください。すぐに対処させていただきます。

では。