【Unity】「サイバーエージェント×Unity×デザイン塾」レポート その１

* [【Unity】「サイバーエージェント×Unity×デザイン塾」レポート その１](http://qiita.com/baba_s/items/b32b2684355768f66a73)
* [【Unity】「サイバーエージェント×Unity×デザイン塾」レポート その２](http://qiita.com/baba_s/items/86ef52eb26c44d526133)

# サイバーエージェント×Unity×デザイン塾

http://www.creativevillage.ne.jp/lp/cyberagent/

# Unity開発者が見たウチ姫誕生の瞬間

アメーバ事業部 ウチ姫開発チーム クリエイター
新井隆祥 様

## 自己紹介

### 経歴

* 2005年までは団体職員
* 2006年からはシステム会社のWebディレクター
* 2008年からはWeb制作プロダクション
* 2011年にCAに入社してcocosd2 for iPhoneでカジュアルゲームを開発

### 開発されたアプリ

#### つりポン！

* http://app-liv.jp/473532809/
* カジュアルゲーム
* ガチャ画面やUI画面の作成を担当

#### おさかなホイホイ！

* http://app-liv.jp/508444905/
* カジュアルゲーム
* モチーフのみ決まっていた
* ゲームの企画、実装、デザインディレクションを担当
* 約4か月で作成

## ウチ姫リリースまでの流れ

### 2012年6月

キックオフブレスト

* モチーフ
	* 舞踏会
	* よい大奥を作る
	* クエストはナンパ
	* クエストに姫を入れない

* バトル
	* 封印された戦士を助ける
	* ボーリングで対戦する
	* かわいい女の子探し

* 主人公
	* 二枚目
	* 自信過剰な自由人の王子様
	* 次男坊

* 姫
	* シンデレラストーリー
	* お姫様不思議力
	* 女の子同士の絡みがある

* ゲームの仕様についてミーティングしながらモックを作成
	* 横スクロールタイミングタップバトルやピンボールなどのモックを作成
	* Unityの経験がなかったのでここで一通り覚えた

* 最終的な着点
	* 3投式のボーリングバトル
　
* ルール
	* 画面の奥に行くとターン終了（1投終了）
	* 敵は貫通する

### 2012年11月

* ウチ姫クライシス
	* 悪い事情がいくつか重なり、今まで進めていたものを一度すべて白紙に
	* チーム離散、少人数体制に

### 2013年2月

* 雪解け
	* 様々な事象を乗り越え離散したメンバーが戻ってくる

### 2013年8月13日

* リリース

* リリース後
	* リーダスキル導入
	* BGMなどを刷新
	* Android版リリース
	* ボイス導入
	* アビリティ
	* ボススキル
	* 2015年にはアノ機能が登場

* 現在のウチ姫
	* 400万ダウンロード
	* トップセールス最高5位

## Unityエンジニアの立ち位置

* まずは仕様通りに実装する
	* ウチ姫のゲームロジックの仕様は下記の通り
		* プレイヤーを引いて
		* 角度をつけて離して
		* 敵を倒す
		* 以上
	* さらに以下を意識して作ってほしいと言われた
		* 誰でも直感的にできる
		* 毎日やっても飽きない
（面白すぎない、ゲーム部分そのものにハマりすぎない）

* 爽快であることを自分の一番のこだわりにした

* 直観的かどうかの試行錯誤
	* ゲームをあまりやらない女性社員にプレイしてもらってその手元を上から録画し
	* どのようにプレイして
	* どのようなことをしゃべり
	* どのようなことでつまづき
	* どのように集中力を切らすかを確認
	* チュートリアルは連打して読み飛ばすことがわかった

* 手触り感の試行錯誤
	* カエルのスピード
	* ヒットした間隔
	* 滞在時間
	* カメラの動き、角度
	* 減速する、しない
	* ジャンプするボタン
	* transformの反転
	* 引いた距離で移動距離がわかるなど
	* 思いつくものは大体試した
	* テスト用のIPAを毎週作って週末にプレイして感想を教えてもらっていた

* まとめ
	* デペロッパー側にある程度の裁量を持たせてもらっている
	* ある程度こうしたいということはプランナーやディレクターから聞くが  
最終的には開発者側でイメージを膨らませてる

## 実装で注意したこと


* `Find`系メソッドはなるべく使わない
	* `transform.Find`、`GameObject.Find`など
	* prefabの構造や名前を変えたら、実行時にゲームが落ちるため

* `GameObject`ではなくコンポーネントで`SerializeField`する
	* アクセスする手間を省略するため

```cs
[SerializeField]
private GameObject damageArea;
```

↓

```cs
[SerializeField]
private DamageArea damageArea;
```

* prefab名とクラス名を同じ名前にする
	* 違う場合、実装者以外の人が処理を探すのが地味に大変で非効率

* `SendMessage`はなるべくつかわない
	* 便利だけど文字列指定だとソースが追いづらくなるしデバッグもしづらい
	* Find references in sceneなどエディタが持っている便利機能の恩恵を受けられず  
結果、全検索してダブルクリックの繰り返しになってしまう

* まとめ
	* 小規模だとまだいいが、運用が重なって規模が大きくなるとかなり厄介
	* 特に新しい人が入ってきたときや古くからいる人が抜けたときに混乱が起きやすい
	* 仕様や構造を変えることを恐れない設計を心がける

## 使用している自作ツールの紹介

* 配置エディタ
* エフェクトチェック
* デバッグ用パネル

* デモを見せて頂きました
	* デバッグ用パネルで攻撃力などのパラメータを変更できる
	* 演出の速度調整のためにタイムスケールも変えられるようにしてある

## 最後に

* ウチ姫今後の展望
	* マルチプレイの実装
	* ジョブシステム（カエルの姿が変わる）

## 質疑応答

* 3Dのエフェクトはどのように作っているか
	* 3DのエフェクトはShurikenで作っている
* 端末ごとの解像度に対するUI周りのサイズの調整はいつごろやったか
	* 最初からやっている
* バランス調整にどれくらいの人が関わっているか
	* ステージを配置する人だけで3,4人
	* ステージだけをつくる人もいる
* UIや2D演出の実装にツールやアセットを使っているか
	* TweenはHOTweenを使っている
		* iTweenは文字列指定のため使いづらい
	* ガチャなどの2D演出も全部Shuriken
	* UIの演出は手作業でHOTweenで作っている
	* UIはNGUI
* Unityのバージョンは常に最新のものにしているかどうか
	* もともとは3.5で開発が始まった
	* 去年の9月に4.xに上げた
	* 4.6とか5に関しては検討中
* マルチプレイに関してどのように開発を進めているか
	* 基盤を社内で作っている
	* サーバーでは管理しない
	* クライアント1人をホストにするやり方
* 新人がアサインされても大丈夫なように工夫していることはあるか
	* 社内Wikiでスターティングガイドを用意している
* チート対策はどのように行っているか
	* クライアント側では特にやっていない
	* クエスト終了時などにサーバーで検出している
* サウンドの実装で工夫した点はあるか
	* BGMの同時再生は1つまで
	* SEの同時再生は8つまでの制限を設けた
* 課金回りでアセットを使用しているか
	* 最初はprime[31]を使用していた
	* 今は完全に社内のものを使用している
* iOSの64bit対応はどのように行っているか
	* 対応し始めた所
	* Unity4.6にして対応する予定
* 運営中にスキルや敵の強さなどのレベルデザインを間違えたら大変なことになるが工夫されていることはあるか
	* 最終的な決定権はプランナーが持っている
	* 強すぎ弱すぎはどうしても発生してしまう
	* あらかじめ告知を出すようにしている
* 課金回りでprime[31]を使わなくなった経緯はどのようなものか
	* 去年の11月くらいにAmebaの認証をやめたタイミングでそういった方向性になった
* ユーザーからの反応をどのように収集しているか
	* Twitter
	* 2ch
	* カスタマーサポート