62
スマホネイティブゲーム 開発効率改善 株式会社ディー・エヌ・エー Japanリージョンゲーム事業本部ゲーム開発四部第一グループ エンジニア 佐藤 和尊

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

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

エンジニア 佐藤 和尊

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

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

経歴

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

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

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

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

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

はじめに

市場の流れをみても

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

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

→力技でやっていると、

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

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

 

効率化が必要!

         

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

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

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

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

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

採用技術

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

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

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

メンバー構成

エンジニア 

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

企画

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

デザイナー

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

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

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

まずは

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

ビルド速度の向上

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

ビルド速度の向上

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

とても重要です

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

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

ビルド時間が

10分から3分

まで短縮されてます

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

一番効果てきめんなのは

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

今すぐ良いマシンに

交換しましょう!

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

UNITE JAPAN2014 ドラクエ 8 の話でも

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

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

やっぱりそうですよね

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

こういう人が多かった

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

Mac Book Air or Pro

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

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

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

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

最近の開発は

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

 →開発期間長くなった

・モジュール肥大化

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

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

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

人気のマシンは iMac

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

ビルドサーバー

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

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

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

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

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

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

待っていられない!

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

Mac Pro 買ってもらった

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

めっちゃ早くなった

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

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

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

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

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

xcode の設定確認する

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

設定や実装で高速化する

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

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

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

・.dSYM の削除

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

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

思ってること

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

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

スクリプト

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

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

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

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

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

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

こんな感じ

                          

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

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

データ作成の自動化

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

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

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

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

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

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

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

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

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

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

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

でも

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

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

そこで・・・

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

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

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

企画・デザイナー

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

 Jenkins から反映

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

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

ビルド

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

プランナー

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

デザイナー

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

             ということも可能

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

こんな感じ

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

データ反映 は pull request へ

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

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

安定化

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

jenkins と Xcode

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

定期ビルド実行

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

定期ビルドすることで、

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

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

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

XCode の機能で安定化

Leaks メモリリークの発見

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

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

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

タスク管理

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

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

中目標 週次目標の達成

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

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

週次目標がカギ

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

なぜか?

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

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

週次目標を守ることで、

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

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

取り組み

・朝会 (15分以内) 

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

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

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

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

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

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

意識して減らしています

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

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

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

週次ビルド作成

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

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

週次ビルドの動作確認

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

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

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

タスク管理のツール

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

主に使っているのは

・google スプレッドシート

・github issue・JIRA・Confluence (wiki)

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

google スプレッドシート

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

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

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

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

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

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

JIRA

QA は 品質管理部が担当。

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

すべて JIRA で管理。

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

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

Confluence

プロジェクトに関わる

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

他にも、

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

             なんでもここへ。

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

他にも

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

日々工夫している

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

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

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

大臣制

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

             

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

あとは

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

みんなで遊ぶ

・バーベキュー

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

・ボルダリング

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

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

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

           

       

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

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

・Visual Studio での 開発

・Unity ・組み込み開発

・Web 開発

・PC ゲーム開発

・スクラム         などなど。

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

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

まとめ

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

大事なのは

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

実施するかの判断基準

  - 工数対効果

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

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