Aiming 開発ゲームの裏側

株式会社 Aiming
リードソフトウェアエンジニア
牧野 克俊
今日のテーマ

幻塔戦記グリフォンが
どう作られているかざっと話しつ
つ
振り返ってみる
目次
1.
2.
3.
4.
5.
6.

プロジェクトの概要
グラフィック
メモリ使用量
ユーザインターフェイス
リソースのダウンロード
Unity への要望
1. プロジェクトの概要
プロジェクトの概要
• オンラインアクションゲームの開発
• スマートフォン(iOS,Android)で遊べる
– 動作端末の目安は iPhone4S 程度

• 開発期間は約1年2ヶ月(リリースま
で)
メンバー構成
• MMORPG やブラウザゲームの開発経験が
あるメンバーが中心
• 人数
– 企画:6人
– プログラマ:9人
• クライアント5人、サーバ4人

– グラフィッカー:10人 + α
2. グラフィック
基本ルール
• 最初に決めたルール
– Drawcall は 50 を目安
– リアルタイムライティングなし
– テクスチャは可能な限り小さく
グラフィック(キャラクター)
• パーツをプログラムで結合
– 髪の毛、顔、上半身、下半身、右手武器、左
手武器

• テクスチャは 1024 * 1024 を 1 枚
– 結合後に収まるようにパーツを割り振る

• ポリゴン数は約 2000
– パーツによっては増減有り
グラフィック(キャラクター)
グラフィック(モンスター)
• ボス
– テクスチャサイズは 512 * 512
– ポリゴン数は約 3000

• ザコ
– テクスチャサイズは 128 * 128
– ポリゴン数は約 500 〜 1500
– 一度に十数体出現する
グラフィック(モンスター)
グラフィック(背景)
• テクスチャ
– 1024 * 1024 を約 2 枚
– 1024 * 1024 ライトマップ 1 枚
– 512 * 512 マップ上のオブジェクト用

• ポリゴンは数千程度
– 基本的に板です

• 可能な限り α で抜かない
グラフィック(背景)
グラフィック(エフェクト)
• パーティクルで作成

• テクスチャは複数のエフェクト間で使い
回している
• 半透明、加算がやっぱりきつい
グラフィック(エフェクト)
グラフィックを振り返って
• 描画速度は良好
• キャラクター構築の負荷が高い
• スキニングの負荷が高い
– ポリゴン数が多いと特に顕著

• エフェクトの描画負荷
– 数が多いのでカリングをした

• エフェクトのロードタイミング
– 初めてエフェクトが発生するときに読み込ん
でいるがいまいち
3. メモリ使用量
メモリ使用量
• 全体の使用量目安
– 200 MB 程度

• おおよその内訳
– メッシュ: 3 MB
– テクスチャ: 40 MB
– アニメーション: 10 MB
– サウンド: 10 MB
メモリ使用量を振り返って
• ガベージコレクト
– プレイ中に関しては問題になっていない
– シーン切り替え時や大量のリソースをアン
ロードしたときには結構時間がかかる

• Animation.AddClip でもりもりメモリ使われ
た
– 登録してある Animation 自体を複製
4. ユーザインターフェイス
ユーザインターフェイス
• NGUI を使用
• 基本ルール
– 位置はアンカーを使って指定
– 縦の比率を基準にスケール
ユーザインターフェイス
ユーザインターフェイス
• ワークフロー
– プログラマがモック作成(機能のみ入ったも
の)
– グラフィッカーが見た目、位置等修正

• スクリーンサイズによって重ならないよ
うにするのはグラフィッカー頼み
• 日本語はビットマップフォントを使用
ユーザインターフェイスを振り
返って
• NGUI はまあまあ良い
• パネル間の優先順位付け
• ビットマップフォントでは文字数が足り
ない
– チャット、掲示板等自由入力以外は問題ない
– ダイナミックフォントにしたい
5. リソースのダウンロード
リソースのダウンロード
• アセットバンドルを使用
– 現在総ファイル数約 2000!

• LoadFromCacheOrDownload を使用
• 設定ファイルはアセットバンドル化して
いない
• Editor 上では Resources.LoadAssetAtPath を
使うようにしている
リソースのダウンロード
• AssetBundle の分け方
– 背景:クエスト単位
– モンスター:1体
– 装備:1個
– アニメーション:職業
– サウンド:1曲(SE はまとめている)
– エフェクト:同テクスチャ
– UI:アトラス単位
リソースのダウンロードを振り
返って
• ダウンロード時間が長い
– エリア解放等のタイミングに合わせる形で分
割してはいるものの・・・

• アセットの更新判断
– 限りなく自己申告に近い・・・
– テクスチャからどのプレハブで使われている
かが探しにくい
6. Unity への要望
「こうなったらうれしいなー」
Unity への要望
• Mono のバージョン上げて欲しい!
– 非同期処理関係の強化

• アセットバンドルを再設計しませんか?
– バージョンごとの互換性
– キャッシュの仕組み
– もともとあくまで WebPlayer 用
ご清聴ありがとうございました!

Aiming 開発ゲームの裏側