Upload
nobuhiko-sasaki
View
1.099
Download
3
Embed Size (px)
Citation preview
『作って壊す』を繰り返せ! Unity スパイラル開発テクニック
(カジュアルゲーム)
株式会社ポケット・クエリーズ 代表取締役
佐々木 宣彦
Unite Japan (2013年4月16日) 講演資料
自己紹介
本日の講演ストーリ
Unityの特性を生かしたスパイラル開発とは? 短期間(3ヶ月間)で 大幅作り直しを行う為には何が必要か? カジュアルゲーム製作実例を題材に細かなTipsを共有します。
アジェンダ
1. 動く企画書を作りまくれ ! (簡易サンプル製作による操作感・爽快感の検証事例)
2. 小さく作って使い回せ! (スクリプト、アセット等の製作・利用単位と工夫)
3. 本番仕様のゲームロジック製作事例 (Unityでのゲーム構造実例、作って初めてわかる事)
1. 動く企画書を作りまくれ ! (簡易サンプル製作による操作感・爽快感の検証事例)
最終的に完成するふたつのゲーム
開発全体の流れ
開発全体の流れ
サーバ 連携実装
GUIデザイン 全面見直し
プロト 製作
企画策定
操作特性 の策定
実装・実装・実装
ゲーム 主要部 の別案作成
ゲーム 主要部の 新案プロト 作成
迷いが生じる。。。
1.5ヶ月 0.5ヶ月 1ヶ月
ちょっと延伸中。。。
操作特性の実機検証 を重要視した期間
やっぱり作ってみると 色々あるなぁ期間
根本的に話が変わって 大きく作り直し期間
色んな検証サンプル製作
を通じて ベース部品を蓄積
ポイント①
ベース部品を活用しつつ 更に小分けに部品を蓄積
ポイント② ゲーム部新案実装時 かなり楽できた
企画の方向性をよく考える 企画の発端: ボルダリングのゲームを作って entag!( )にて展開 自社(MTI様)ゲーム
プラットフォーム
企画の方向性をよく考えよう LINE POPを始めとするカジュアルゲーム王道パターン
スタートはランキング から
(競争心を煽る)
競争意欲に火がつく。 パワーアップ アイテム購入
あとX回プレイで レベルアップ!
(まだまだやりたい)
やり込み結果を自慢 -> 気持ち良い
(プレイヤー拡大)
どの状態(画面)からでもゲームプレイ権(ハート)が購入・入手(おねだり、友達招待)可能
著作権等を考慮し、 ゲーム画面はマスクしました。
企画の方向性をよく考えよう カジュアルゲームのトレンド と 方向性の決定
-> シンプル、短時間プレイ -> とは言え、やり込み要素が必要 -> 爽快さ、がちゃがちゃ操作する感じ -> 友達との競争 -> もちろんフリーミアムモデル、ゲーム有利化アイテムで課金 -> パズル要素か? 結局は昔からヒットしているゲームロジック
ゲームテーマ =『フラッシュパズル』
基本は上の概念に習う。 ただ、なんとか新しいゲーム要素を作り出したい
テーマは確定、ゲーム部の基本特性を決めよう 実装を進めた後で後悔しない為に。。。
・企画段階で動くサンプルを沢山作って、メンバー(企画・開発・デザイン)共有 -‐> 特にスマホ実機での操作イメージ確認が重要 -‐> 単純なサンプルをとにかく沢山つくる ・爽快さ と ボルダリング感 って相反するもの?
じっくり型のサンプル がちゃがちゃ操作型のサンプル
テーマは確定、ゲーム部の基本特性を決めよう 操作の気持ち良さをサンプルで確認
(上下スクロールの仕組み、パズルフリック当てはめ操作)
サンプルレベルで ドンドン作り直し
(=プログラム部品蓄積)
-> フリックでパズルを当てはめる案に決定 -> プロトイメージ製作へ
テーマは確定、ゲーム部の基本特性を決めよう ゲーム部分はほぼ完成してきた、この路線で良いのか? -> ゲーム主要部のロジックを作り直し (パズルピース入れ替え型へ変更)
見た目の変更度合いは少ないが、 ゲーム個別ロジックの作り直しのため、
結構日数がかかった
ゲーム完成、AppStore審査完了! 3月1日、リリースの準備は全て整った。 が、話が急展開。カカオゲーム採用の話が舞い込む フラッシュパズルはじっくり型。 ゲームのテンポが悪いので、作り直し!
パズルゲーム アクションゲーム
2. 小さく作って使い回せ! (スクリプト、アセット等の製作・利用単位と工夫)
Unityの特性と目指すべき方向性
・エディターでの編集 ・アセットという概念での流用
社内のUnity開発資産(プログラム)を整理してみた Unityで良く使用するプログラム処理(ゲーム・ユーティリティアプリ)を整理
ゲーム 処理 GUI 処理 外部・ネィティブ連携
- 画面タッチ操作系 - オブジェクト出現・破棄 - オブジェクト移動系 - 見た目の変更系 - アニメーション発動 - サウンド発動 - mecanimアニメーション
- ポップアップ画面 - GUISkinでの 定型画面部品表示 - NGUIでの複雑処理 (スクロールなど)
- JSONパース - SNS連携 - Asset Bundle
- 課金処理 (AppStore、 Google Play、 Amazon)
- ローカルデータ管理
貼付け レベル 流用
- 独自サーバAPI との通信 (HTTP、WebSocket)
一品 物
加工 流用
- 個別の ゲームロジック
- 新規の デザイン画面
社内のUnity開発資産(プログラム)を整理してみた よく使うプログラム部品 ー いつでも使える仕掛け化
細分化整理と Editor拡張による ポン付け容易化
座標データから GUI.XXXX系の スクリプト生成
Adobe PhotShop (レイヤ整理と座標抽出
マクロ作成)
テンプレート化 コピーして都度改修
その他 プログラム以外の面での工夫
・チェックリスト・手順書作成も重要 例: GUI担当デザイナが考慮すべき事項を整理・共有 ・画像部品の切り出し単位。 テクスチャサイズに影響 ・16bit活用 = グラデーションはNG ・モデルやGUI部品などのデザイン系部品は、 実装本格化前に仕上げたい -> 実際問題として難しい部分多い -> 開発企画早期段階でプログラマの手が空かない様にするため プログラマが作成できるモデルはUnity内で作成させる (GameDrawの活用。 モデルの再インポート時の問題も削減)
その他 GameDrawについて Unityエディター内で 3Dモデルの作成編集を可能にするアセット
・メッシュ作成・編集 ・テクスチャUV編集
etc.
3. 本番仕様のゲームロジック 構造説明 (Unityでのゲーム構造実例、作って初めてわかる事)
Unityでのゲーム構造 (①ひらめきボルダリング) 背景スクロールロジック
【コントローラ】 BgObjController.cs が各ブロックを統合制御 (Instantiate、Move指示)
【ブロックオブジェクト】 BgObjMove.cs が自分のブロックをMove InitPuzzleHole.cs がパズルを初期化、パズルデータ保持
Unityでのゲーム構造 (①ひらめきボルダリング) パズル(アタッチ側・ピース側)出現ロジック
壁の特定行のパズル(アタッチ側)の 組み合わせから一つだけ正解ピースを 選択ピース側に並べる必要がある
アタッチ側
選択ピース側 2行分の選択肢を出す
2行分の選択肢ピース情報
Unityでのゲーム構造 (①ひらめきボルダリング) パズル当てはめ操作ロジック
TouchController.cs 選択ピースの判定と フリック移動処理を実施
PuzzleMoveController.cs フリック終了時の パズル当てはめ正解判定、 ピース移動時のピヨピヨエフェクト
SendMessage()
Unityでのゲーム構造 (①ひらめきボルダリング) パズル当てはめ操作ロジック
IKCtrl.cs キャラクターの手と顔の向きを、 フリック操作に合わせて 『 IK制御 』
ゴール時のガッツポーズもIK制御。 ダミーオブジェクトを Animationにて移動
IK制御用 ダミーオブジェクト
Unityでのゲーム構造 (②ひたすらボルダリング) ブロック出現ロジック
【ブロックオブジェクト】 BgObjMove.cs が自分のブロックをMove (ひらめきと同じ) InitWallBlockContinuous.cs がブロックの見栄え、仕掛けの 初期化制御
Unityでのゲーム構造 (②ひたすらボルダリング) ブロック出現ロジック
【ブロックオブジェクト】 色んな物が隠れています。 これもInitWallBlockContinuous.cs が制御。
Unityでのゲーム構造 (②ひたすらボルダリング) 当たり判定
キャラクターの頭部に コライダーあり
穴に落ちたかどうかの 判定用コライダー
突起に衝突したかどうか の判定用コライダー
キャラ頭部コライダーと 穴・突起のコライダーの衝突で ゲームOK・NG判断 3D空間を斜め視点で遊ぶため ユーザとって自然な当たり判定に なる様にコライダの大きさ位置を微調整
Unityでのゲーム構造 (②ひたすらボルダリング) コイン一括取得、デコボコ一括フラットロジック
GetCoin.cs コイン取得時、一括取得時の スコアカウント及び デストロイ(+アニメ)制御用
GameObject.FindGameObjectsWithTagの 取得順序はInstantiate順(内部ID順)?
その他: 開発時の注意事項(ボルダリングゲーム開発例にて説明)
実機確認は頻繁にすべし!いつのまにか重くなってる。①
【チェックポイント】
DrawCall -‐> どうしても大量オブジェクトを 表示したい場合があるので FPSほどは気にしていない メモリ使用量、ファイルサイズ (エディタログにて確認)
その他: 開発時の注意事項(ボルダリングゲーム開発例にて説明)
実機確認は頻繁にすべし!いつのまにか重くなってる。
【チェックポイント】
-> FPS (ひたすらボルダリング) -> 見落としがちな、Planeオブジェクト UnityのPlaneは ポリ数大きい ボルダリングでは40個出現するため 8ポリ版に変更するとFPS = 5 程度変化 Unityで作成
Mayaで作成
200 ポリ
8 ポリ
iPhone 5
iPhone 4S Kindle Fire HD iPod Touch (最新)
Galexy Tab
55 - 60
35 ‒ 45
45 - 55
端末 FPS値
その他: 開発時の注意事項(ボルダリングゲーム開発例にて説明)
プラグイン、アセットって良いな! -> entag!SDK Unityプラグイン - ひらめきボルダリングにて採用 自前サーバ不要のユーザ管理(Friend、Score、Ranking、独自データ) 連携部処理の実装が実質3日程度
- 『ひたすらボルダリング』ではカカオトーク連携として同様の機能を自前製作。 2週間程度(サーバAPI+DB、カカオiOS/AndroidネイティブSDK連携プラグイン開発)
-> Prime31の課金プラグイン - ノンコンシューマブルタイプの課金処理を実装。 iOS、Android、それぞれ1日程度で実装~テスト完 -> FingerGesture - フリック検出の為に採用。 以前開発したゲームでは自前でフリックロジック(ジェスチャ)を実装。 気持ちのよい操作感実現の為にかなりの時間を費やした。 今回は、単純なフリック方向検出のみの為に採用したが、 検出まではほぼノンコーディング。