スマホネイティブゲーム 開発効率改善

  • View
    4.389

  • Download
    4

  • Category

    Software

Preview:

DESCRIPTION

第一回DeNAゲーム開発勉強会のスライドです。 https://atnd.org/events/56517

Citation preview

スマホネイティブゲーム開発効率改善

株式会社ディー・エヌ・エー Japanリージョンゲーム事業本部ゲーム開発四部第一グループ

エンジニア 佐藤 和尊

自己紹介エンジニア 佐藤 和尊(31)

経歴

- 学生時代にゲーム会社でアルバイト

- 組み込みエンジニアで就職

- PC オンラインゲーム・スマフォソーシャルゲーム・ PC ブラウザゲーム

- 現在は、スマートフォンゲーム開発をしています。

はじめに

市場の流れをみても

・アプリ開発の開発規模や工数が増えている

・クオリティを上げるための要素も増えている

→力技でやっていると、

 開発の本質部分に集中できない!

 

効率化が必要!

         

           お家帰れなくなりますしね

直近携わっているプロジェクトの事例

今自分がリードエンジニアをやってるプロジェクト

採用技術

● C++, Ruby (Java, Objective-C)● cocos2dx ● Sprite Studio● Texture Packer● CocosBuilder● TiledMapEditor● Jenkins、github タイトルに合ったソリューションを

比較検証して決めてます。

メンバー構成

エンジニア 

 5〜10人(ゲームロジック、UI、ライブラリなど

企画

 2 〜 4 人  (企画書・レベルデザイン・サウンドなど

デザイナー

 3 〜 4 人  ( UI、エフェクト、絵素材作成など

※ 人数は、プロジェクトの進行具合で変化

まずは

ビルド速度の向上

ビルド速度の向上

C++ での開発でビルド時間を短縮は、

とても重要です

結論から言いますと・・・

ビルド時間が

10分から3分

まで短縮されてます

一番効果てきめんなのは

今すぐ良いマシンに

交換しましょう!

UNITE JAPAN2014 ドラクエ 8 の話でも

> 結局もっとも効果のあった対策は、いい Macを買うことだったとのこと(笑)

http://app.famitsu.com/20140407_350527/

やっぱりそうですよね

こういう人が多かった

Mac Book Air or Pro

・Web エンジニアからアプリに転向している人が多い

・サーバー・クライアント兼任している人が多い

・運営中は何かと持ち運び便利な ノート PC が便利

最近の開発は

・開発規模も大きくなってきた

 →開発期間長くなった

・モジュール肥大化

 →ビルド時間が長くなった

みんなこれを機会にマシン変えよう!

人気のマシンは iMac

ビルドサーバー

・TestFlight のようなしくみを、社内で構築しています。

・各アプリのビルドは Jenkins でやってます

・Jenkins は他タイトルとシェアしている

ビルドが込み入ってる時の待ち時間は、

ディズニーランドのアトラクション並です

待っていられない!

Mac Pro 買ってもらった

めっちゃ早くなった

「ビルド始まったら、ひと休憩でコーヒーでも飲むかと・・・思ってたけど、できなくなりましたね」

C++ 使ってきた人でしたら、

このようなご経験あるのではないでしょうか

マシンを変えても遅いなら

xcode の設定確認する

設定や実装で高速化する

・ヘッダの依存関係減らす(PImpl とか)

・プリコンパイルヘッダー

・不要なヘッダ・ライブラリを含めない

・.dSYM の削除

    こまごま努力できることはあります。

思ってること

ほんとは分散ビルドできるといいんですが

スクリプト

スクリプト実行 窓口一本化

make をスクリプト実行の窓口に。

どのディレクトリで実行すればよかったっけ・・・などの問題がなくなる。

あとで、jenkins 化するときも便利

こんな感じ

                          

make help でコマンド一覧・説明も出ます。

データ作成の自動化

何も工夫してないと・・・

「エフェクト作りました。確認したいので、

取り込んでビルド作ってください」

「絵素材調整したので、実機で見え方を

 確認したいです! ビルド作ってください」

データ反映作業に追われてしまいます!

データ作成者がデータの完成までの作業を完結

でも

エンジニア以外の職種の人が、

スクリプトやツールの使い方を覚えるのは大変

そこで・・・

とりあえず Jenkins で実行できるようにしとこうという風潮

企画・デザイナー

デザイナー 作ったエフェクト・絵素材データを

 Jenkins から反映

企画 レベルデザインデータの反映をJenkins で ビルドを作って確認できるところまで。

ビルド

ビルドも、エンジニア以外が作成できる。

プランナー

 レベルデザイン変更→ 実機で試す

デザイナー

 エフェクト反映  → 実機で試す

             ということも可能

こんな感じ

データ反映 は pull request へ

※ エンジニアが問題ないか確認して merge

安定化

jenkins と Xcode

定期ビルド実行

普段は XCode で開発している。

定期ビルドすることで、

- Android のビルドエラーにすぐ気づける- 他のビルドターゲットに問題でていないか

 (デバッグ、リリース、マスタービルド)                   など

XCode の機能で安定化

Leaks メモリリークの発見

Xcode OpenGL ES Tools パフォーマンス・チューニング

Analyze 静的解析。うっかりミスはこれで阻止

タスク管理

目標管理大目標 α、β、リリース のマイルストン

中目標 週次目標の達成

小目標 1日の作業の進捗確認            ※ホントはもっと細かいけど

週次目標がカギ

なぜか?

1日、n ヶ月レベルではブレる

→週次目標の達成を大事にしている

週次目標を守ることで、

n ヶ月の目標も守れる・・・と信じている。

取り組み

・朝会 (15分以内) 

 週次目標達成のための、毎日の調整

・エンジニア週次定例(1h) 進捗確認・問題点の確認

・プロジェクト週次定例(1h)  - 動作するビルドで確認

  - 残り工数とベロシティの確認も行う

実作業に集中するためミーティング時間を

意識して減らしています

開発に時間をかけないといいものができあがらない

ただしアウトプットの確認は大事に

週次ビルド作成

 一週間の開発がすべて反映された、

  確実に動くビルドを作る時間を設けています

週次ビルドの動作確認

 チーム内で実際にプレイしての意見交換・問題点の把握を行ってます

   ※どんなに忙しくても全員プレイする!

タスク管理のツール

主に使っているのは

・google スプレッドシート

・github issue・JIRA・Confluence (wiki)

google スプレッドシート

・プロジェクト全体スケジュール・企画要件列挙(プロダクトバックログ)・エンジニアタスク列挙・エンジニアガント

いろいろ考えたけど、職種・部署問わず誰でも使えて、情報シェアする時に、URL をシェアするだけで良いので便利。

タスク管理専用ツールでないので、手の込んだ資料は作らない

github issueエンジニアの抱えている細かい問題はここにすべて書いておく

JIRA

QA は 品質管理部が担当。

品質管理部から起票してもらう不具合は

すべて JIRA で管理。

QA に入る前に、github issue はすべてクローズ(移行)する。

Confluence

プロジェクトに関わる

すべてのドキュメントへのリンクを置く

他にも、

・開発ドキュメント、議事録、メモ、

             なんでもここへ。

他にも

日々工夫している

github・pullreq によるソースコードレビュー

comm ( チャットアプリ ) LINE でもいいよ

・決定権のある上司とすぐ連絡がつく

大臣制

・難しい案件は大臣を立てる(iOS8 大臣とか)

             

あとは

みんなで遊ぶ

・バーベキュー

・チームメイトの家でマリオカート8

・ボルダリング

・美味しいものを食べに行く

・深夜焼き肉からの徹夜カラオケ

     仲良いとチームワークも良くなる!

           

       

他のソリューションからヒントを得る

・Visual Studio での 開発

・Unity ・組み込み開発

・Web 開発

・PC ゲーム開発

・スクラム         などなど。

           そのまま導入するのではなく、チームに合った方法で

まとめ

大事なのは

面倒と思ったら、効率化を検討しよう!

実施するかの判断基準

  - 工数対効果

- ゲームのクオリティに直結するか

- 喜ぶ人がいるなら良いじゃないか

Recommended