33
『作って壊す』を繰り返せ! Unity スパイラル開発テクニック (カジュアルゲーム) 株式会社ポケット・クエリーズ 代表取締役 佐々木 宣彦 Unite Japan (2013年4月16日) 講演資料

Unite Japan Presentation (Pocket Queries, Inc.)

Embed Size (px)

Citation preview

Page 1: Unite Japan Presentation (Pocket Queries, Inc.)

『作って壊す』を繰り返せ! Unity スパイラル開発テクニック

(カジュアルゲーム)

株式会社ポケット・クエリーズ 代表取締役

佐々木 宣彦

Unite Japan (2013年4月16日) 講演資料

Page 2: Unite Japan Presentation (Pocket Queries, Inc.)

自己紹介

Page 3: Unite Japan Presentation (Pocket Queries, Inc.)

本日の講演ストーリ

Unityの特性を生かしたスパイラル開発とは? 短期間(3ヶ月間)で 大幅作り直しを行う為には何が必要か? カジュアルゲーム製作実例を題材に細かなTipsを共有します。

Page 4: Unite Japan Presentation (Pocket Queries, Inc.)

アジェンダ

1. 動く企画書を作りまくれ !   (簡易サンプル製作による操作感・爽快感の検証事例)

2. 小さく作って使い回せ!    (スクリプト、アセット等の製作・利用単位と工夫)

3. 本番仕様のゲームロジック製作事例    (Unityでのゲーム構造実例、作って初めてわかる事)

Page 5: Unite Japan Presentation (Pocket Queries, Inc.)

1. 動く企画書を作りまくれ !   (簡易サンプル製作による操作感・爽快感の検証事例)

Page 6: Unite Japan Presentation (Pocket Queries, Inc.)

最終的に完成するふたつのゲーム

開発全体の流れ

Page 7: Unite Japan Presentation (Pocket Queries, Inc.)

開発全体の流れ

 サーバ   連携実装  

GUIデザイン  全面見直し

  プロト     製作  

企画策定    

操作特性  の策定

実装・実装・実装

ゲーム  主要部  の別案作成

ゲーム  主要部の  新案プロト  作成

迷いが生じる。。。  

1.5ヶ月 0.5ヶ月 1ヶ月

ちょっと延伸中。。。  

操作特性の実機検証  を重要視した期間

やっぱり作ってみると  色々あるなぁ期間

根本的に話が変わって  大きく作り直し期間

 色んな検証サンプル製作

を通じて  ベース部品を蓄積

ポイント①  

ベース部品を活用しつつ  更に小分けに部品を蓄積

ポイント② ゲーム部新案実装時  かなり楽できた

Page 8: Unite Japan Presentation (Pocket Queries, Inc.)

企画の方向性をよく考える 企画の発端: ボルダリングのゲームを作って         entag!(       )にて展開 自社(MTI様)ゲーム

 プラットフォーム

Page 9: Unite Japan Presentation (Pocket Queries, Inc.)

企画の方向性をよく考えよう LINE POPを始めとするカジュアルゲーム王道パターン

スタートはランキング から

(競争心を煽る)

競争意欲に火がつく。 パワーアップ    アイテム購入

あとX回プレイで レベルアップ!

(まだまだやりたい)

やり込み結果を自慢 -> 気持ち良い

(プレイヤー拡大)

どの状態(画面)からでもゲームプレイ権(ハート)が購入・入手(おねだり、友達招待)可能

著作権等を考慮し、  ゲーム画面はマスクしました。

Page 10: Unite Japan Presentation (Pocket Queries, Inc.)

企画の方向性をよく考えよう カジュアルゲームのトレンド と 方向性の決定

-> シンプル、短時間プレイ -> とは言え、やり込み要素が必要 -> 爽快さ、がちゃがちゃ操作する感じ -> 友達との競争 -> もちろんフリーミアムモデル、ゲーム有利化アイテムで課金 -> パズル要素か? 結局は昔からヒットしているゲームロジック

ゲームテーマ =『フラッシュパズル』

基本は上の概念に習う。 ただ、なんとか新しいゲーム要素を作り出したい

Page 11: Unite Japan Presentation (Pocket Queries, Inc.)

テーマは確定、ゲーム部の基本特性を決めよう 実装を進めた後で後悔しない為に。。。

・企画段階で動くサンプルを沢山作って、メンバー(企画・開発・デザイン)共有    -­‐> 特にスマホ実機での操作イメージ確認が重要     -­‐> 単純なサンプルをとにかく沢山つくる    ・爽快さ と ボルダリング感 って相反するもの?

じっくり型のサンプル がちゃがちゃ操作型のサンプル

Page 12: Unite Japan Presentation (Pocket Queries, Inc.)

テーマは確定、ゲーム部の基本特性を決めよう 操作の気持ち良さをサンプルで確認

(上下スクロールの仕組み、パズルフリック当てはめ操作)

サンプルレベルで  ドンドン作り直し  

(=プログラム部品蓄積)

  -> フリックでパズルを当てはめる案に決定   -> プロトイメージ製作へ

Page 13: Unite Japan Presentation (Pocket Queries, Inc.)

テーマは確定、ゲーム部の基本特性を決めよう ゲーム部分はほぼ完成してきた、この路線で良いのか?   -> ゲーム主要部のロジックを作り直し     (パズルピース入れ替え型へ変更)

見た目の変更度合いは少ないが、  ゲーム個別ロジックの作り直しのため、  

結構日数がかかった

Page 14: Unite Japan Presentation (Pocket Queries, Inc.)

ゲーム完成、AppStore審査完了! 3月1日、リリースの準備は全て整った。 が、話が急展開。カカオゲーム採用の話が舞い込む フラッシュパズルはじっくり型。 ゲームのテンポが悪いので、作り直し!

パズルゲーム アクションゲーム

Page 15: Unite Japan Presentation (Pocket Queries, Inc.)

2. 小さく作って使い回せ!   (スクリプト、アセット等の製作・利用単位と工夫)

Page 16: Unite Japan Presentation (Pocket Queries, Inc.)

Unityの特性と目指すべき方向性

・エディターでの編集    ・アセットという概念での流用

Page 17: Unite Japan Presentation (Pocket Queries, Inc.)

社内のUnity開発資産(プログラム)を整理してみた Unityで良く使用するプログラム処理(ゲーム・ユーティリティアプリ)を整理

ゲーム 処理 GUI  処理 外部・ネィティブ連携

 - 画面タッチ操作系  - オブジェクト出現・破棄  - オブジェクト移動系  - 見た目の変更系  - アニメーション発動  - サウンド発動  - mecanimアニメーション

 - ポップアップ画面  - GUISkinでの    定型画面部品表示  - NGUIでの複雑処理    (スクロールなど)

 - JSONパース  - SNS連携  - Asset Bundle

 - 課金処理   (AppStore、     Google Play、      Amazon)

 - ローカルデータ管理

貼付け  レベル  流用

 - 独自サーバAPI との通信   (HTTP、WebSocket)

一品    物  

加工    流用  

 - 個別の   ゲームロジック

 - 新規の    デザイン画面

Page 18: Unite Japan Presentation (Pocket Queries, Inc.)

社内のUnity開発資産(プログラム)を整理してみた よく使うプログラム部品 ー いつでも使える仕掛け化

細分化整理と  Editor拡張による  ポン付け容易化

座標データから  GUI.XXXX系の  スクリプト生成

Adobe    PhotShop  (レイヤ整理と座標抽出  

マクロ作成)

テンプレート化  コピーして都度改修

Page 19: Unite Japan Presentation (Pocket Queries, Inc.)

その他 プログラム以外の面での工夫

・チェックリスト・手順書作成も重要   例: GUI担当デザイナが考慮すべき事項を整理・共有      ・画像部品の切り出し単位。        テクスチャサイズに影響      ・16bit活用 = グラデーションはNG ・モデルやGUI部品などのデザイン系部品は、   実装本格化前に仕上げたい    -> 実際問題として難しい部分多い    -> 開発企画早期段階でプログラマの手が空かない様にするため      プログラマが作成できるモデルはUnity内で作成させる      (GameDrawの活用。 モデルの再インポート時の問題も削減)

Page 20: Unite Japan Presentation (Pocket Queries, Inc.)

その他 GameDrawについて Unityエディター内で 3Dモデルの作成編集を可能にするアセット

・メッシュ作成・編集  ・テクスチャUV編集  

    etc.  

Page 21: Unite Japan Presentation (Pocket Queries, Inc.)

3. 本番仕様のゲームロジック 構造説明   (Unityでのゲーム構造実例、作って初めてわかる事)

Page 22: Unite Japan Presentation (Pocket Queries, Inc.)

Unityでのゲーム構造 (①ひらめきボルダリング) 背景スクロールロジック

【コントローラ】    BgObjController.cs    が各ブロックを統合制御    (Instantiate、Move指示)

【ブロックオブジェクト】    BgObjMove.cs    が自分のブロックをMove      InitPuzzleHole.cs    がパズルを初期化、パズルデータ保持  

Page 23: Unite Japan Presentation (Pocket Queries, Inc.)

Unityでのゲーム構造 (①ひらめきボルダリング) パズル(アタッチ側・ピース側)出現ロジック

壁の特定行のパズル(アタッチ側)の  組み合わせから一つだけ正解ピースを  選択ピース側に並べる必要がある

アタッチ側

選択ピース側 2行分の選択肢を出す

2行分の選択肢ピース情報

Page 24: Unite Japan Presentation (Pocket Queries, Inc.)

Unityでのゲーム構造 (①ひらめきボルダリング) パズル当てはめ操作ロジック

TouchController.cs  選択ピースの判定と  フリック移動処理を実施

PuzzleMoveController.cs  フリック終了時の  パズル当てはめ正解判定、  ピース移動時のピヨピヨエフェクト  

SendMessage()

Page 25: Unite Japan Presentation (Pocket Queries, Inc.)

Unityでのゲーム構造 (①ひらめきボルダリング) パズル当てはめ操作ロジック

IKCtrl.cs  キャラクターの手と顔の向きを、  フリック操作に合わせて 『  IK制御  』  

ゴール時のガッツポーズもIK制御。  ダミーオブジェクトを  Animationにて移動  

IK制御用  ダミーオブジェクト  

Page 26: Unite Japan Presentation (Pocket Queries, Inc.)

Unityでのゲーム構造 (②ひたすらボルダリング) ブロック出現ロジック

【ブロックオブジェクト】    BgObjMove.cs    が自分のブロックをMove    (ひらめきと同じ)      InitWallBlockContinuous.cs    がブロックの見栄え、仕掛けの    初期化制御  

Page 27: Unite Japan Presentation (Pocket Queries, Inc.)

Unityでのゲーム構造 (②ひたすらボルダリング) ブロック出現ロジック

【ブロックオブジェクト】    色んな物が隠れています。    これもInitWallBlockContinuous.cs    が制御。  

Page 28: Unite Japan Presentation (Pocket Queries, Inc.)

Unityでのゲーム構造 (②ひたすらボルダリング) 当たり判定

キャラクターの頭部に  コライダーあり

穴に落ちたかどうかの  判定用コライダー

突起に衝突したかどうか  の判定用コライダー

キャラ頭部コライダーと  穴・突起のコライダーの衝突で  ゲームOK・NG判断    3D空間を斜め視点で遊ぶため  ユーザとって自然な当たり判定に  なる様にコライダの大きさ位置を微調整  

Page 29: Unite Japan Presentation (Pocket Queries, Inc.)

Unityでのゲーム構造 (②ひたすらボルダリング) コイン一括取得、デコボコ一括フラットロジック

GetCoin.cs  コイン取得時、一括取得時の  スコアカウント及び  デストロイ(+アニメ)制御用  

GameObject.FindGameObjectsWithTagの 取得順序はInstantiate順(内部ID順)?

Page 30: Unite Japan Presentation (Pocket Queries, Inc.)

その他: 開発時の注意事項(ボルダリングゲーム開発例にて説明)

実機確認は頻繁にすべし!いつのまにか重くなってる。①

【チェックポイント】

DrawCall      -­‐> どうしても大量オブジェクトを      表示したい場合があるので      FPSほどは気にしていない      メモリ使用量、ファイルサイズ   (エディタログにて確認)            

Page 31: Unite Japan Presentation (Pocket Queries, Inc.)

その他: 開発時の注意事項(ボルダリングゲーム開発例にて説明)

実機確認は頻繁にすべし!いつのまにか重くなってる。

【チェックポイント】

-> 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値

Page 32: Unite Japan Presentation (Pocket Queries, Inc.)

その他: 開発時の注意事項(ボルダリングゲーム開発例にて説明)

プラグイン、アセットって良いな! -> entag!SDK Unityプラグイン    - ひらめきボルダリングにて採用      自前サーバ不要のユーザ管理(Friend、Score、Ranking、独自データ)      連携部処理の実装が実質3日程度

   - 『ひたすらボルダリング』ではカカオトーク連携として同様の機能を自前製作。      2週間程度(サーバAPI+DB、カカオiOS/AndroidネイティブSDK連携プラグイン開発)

-> Prime31の課金プラグイン    - ノンコンシューマブルタイプの課金処理を実装。      iOS、Android、それぞれ1日程度で実装~テスト完 -> FingerGesture    - フリック検出の為に採用。      以前開発したゲームでは自前でフリックロジック(ジェスチャ)を実装。      気持ちのよい操作感実現の為にかなりの時間を費やした。      今回は、単純なフリック方向検出のみの為に採用したが、      検出まではほぼノンコーディング。

Page 33: Unite Japan Presentation (Pocket Queries, Inc.)

最後に

技術交流、ビジネス交流、大歓迎です。

[email protected]

本セッションに関するお問合せは こちらまで