最初、自分が見た時には募集人数が80名だったにも関わらず、途中途中で増員され最終的には265名枠にまでなった大規模なUnity勉強会「第一回 渋谷Unity勉強会xコロプラUnity事例発表」に参加してきました。
【満員御礼/増員265名】第一回 渋谷Unity勉強会xコロプラUnity事例発表 : ATND
http://atnd.org/events/24279
「Unityとコロプラ 〜Unityとの出会い、開発手法、tipsについて〜」 株式会社コロプラ 代表取締役 馬場功淳様
- コロプラのユーザは現在、250万人
去年の飲み会にて
勉強方法
- コレを経営会議に持ち込み予算会議に
- 9月某日 「きらきらドロップ!」としてリリース
※Unityは8月に知った
App Store - きらきらドロップ![登録不要の無料コイン落としゲーム]
http://itunes.apple.com/jp/app//id472264781?mt=8
きらきらドロップ![登録不要の無料コイン落としゲーム] - Android マーケットのアプリ
https://market.android.com/details?id=jp.colopl.coin
- 月一でアプリを一本出そう
- 社長秘書、アライアンスチームに協力を頼む
- 入社したメンバーがUnityが出来た
- そんなこんなで10月
- 「月一でアプリを一本出そう」に承認が下りる
「タップサム!」リリース
App Store - タップサム! [登録不要の無料脳トレーニングゲーム]
http://itunes.apple.com/jp/app/id480588344?mt=8
タップサム![登録不要の無料脳トレーニングゲーム] - Android マーケットのアプリ
https://market.android.com/details?id=jp.colopl.tapsum&feature=search_result#?t=W251bGwsMSwxLDEsImpwLmNvbG9wbC50YXBzdW0iXQ..
12月「the射的!」リリース → Googleマーケットのトップに掲載された
App Store - the射的![登録不要の無料シューティングゲーム]
http://itunes.apple.com/jp/app//id486296879?mt=8
the射的![登録不要の無料シューティングゲーム] - Android マーケットのアプリ
https://market.android.com/details?id=jp.colopl.syateki&feature=search_result#?t=W251bGwsMSwxLDEsImpwLmNvbG9wbC5zeWF0ZWtpIl0.
3アプリで100万ダウンロード
コロプラ、スマートフォン向けゲームアプリが累計100万DL突破! 〜 「the射的!」はAndroid Marketゲームカテゴリで1位を獲得 〜 | 最新情報一覧 | 株式会社コロプラ【位置ゲーで毎日の移動を楽しく】
http://colopl.co.jp/news/pressrelease/2011122701.php
- 月3本のリリースを目指してチームをビルド中。現在8人。数ヶ月で30人体制に
絶賛メンバー募集中
- Unityを極めたいエンジニア方
- コンシューマーゲームプログラマーの方
- ゲームをデザインしたいグラフィッカーの方
- スマフォ大好きなプロデューサーの方
何よりゲーム大好きな方!
スマートフォンとUnityのTips
Draw Callを減らそう
- 30以下を目指そう
- 動かないものはstaticに
- モデルデータを分割しないように
- GUI Textureは出来るだけ使わない
- GUIを使うとDraw Callを沢山消費する
- EzGUIを使った
- 悪い所:Unityの良い所を全て潰してしまう
- 良い所:日本語を使える
メモリを節約しよう
- 国産端末、メモリが少ない
- AQUOS PHONEとか
- prefabの静的ひも付けに注意起動時にメモリ読み込みしちゃうよ → メモリを圧迫。起動が遅くなる
- 適時Resources.Loadに
「射的」ではクマがプライズ商品を置き直している時にロード処理を行なっている
- AQUOS PHONEではテストしておいた方が無難
サイズ削減
EditorLogはコンソールビューのここのボタンを押すと表示される
- アプリビルドをするとEditorLog同梱されるファイルのファイルサイズ情報が出る
- この情報を元にサイズの大きなものを重点的に最適化する
演出で工夫
- 射的ではクマが振り向いてプライズを隠して Resources.Load を呼ぶ
※クマが大きいためプライズを置きなおすタイミングでプライズが隠れる
- コインでプッシャーが引っ込んだタイミングでGCを呼ぶ → Androidを繋いで top コマンドで見たりすると確かに効果を実感出来た
- フォーラムではGCは毎フレーム呼べとの回答が付くことが多いがそこまで頻繁にする必要は無い
Q&A
Q : GUIツールを使った場合に問題点が多い。具体的には?
- ボタンが反応しない。3.4で発生、3.5だと出ないと言われたがベータ版なのでそれは無理。端末によって出たり出ない。ボタンを大きくして解決
- レジューム時、タイムスケールの問題 → EzGUIのフラグを使って解決。これも3.5だと出ない
Q : リソースロードのタイミング、消す方は
- 基本、消せない。Unityに任せるのがUnityのお作法
Q : 自社内で行ったモーションキャプチャーの方法
- とあるモーションキャプチャー可能なゲームコントローラを使って実現
「GGJ2012 ポストモータム 48時間でゲームはどこまで行けるのか5回目の挑戦と反省」 Unity Technologies 大前広樹様
Unityって何?
- 簡単に言うと、誰でも使える事を念頭に作られた
ホビイストからプロまで世界で75万人+が使用するオープンなゲーム開発環境
- コンソールゲームの開発者が積み上げた技術の粋を、手早く手軽に使えることに注力
- 沢山のプラットフォームに対して、同時にゲームを開発出来る
- リッチなゲームもシンプルなゲームも作れる
- エディター内でリアルタイムに動作を確認しながらコンテンツを開発できる
- ゲームを作るのと同じ文法で拡張可能なので、使い方にあわせて気軽にカスタマイズ可能
- バージョン管理システムとも連携、チーム開発もサポート
- 他の開発者が作ったデータやエディターの機能拡張をエディター内から直接検索・購入して、利用中のプロジェクトにすぐにインポートすることができる
- 自分で作ったモノも70/30ルール(※)でUnity Asset Storeにて販売
※利益のうち70%が制作者の取り分
- 2000アイテム以上すでに登録されており、Unityエディタから直ぐにゲットして使える状態になっている
- DeNA、GREE始め日本のプラットフォーム企業もUnityに対応、Facebookでもゲームをリリース可能
- 2011年、日本は売上ベースで世界2位に(約8000人のUnityユーザーが存在)、前年度比1500%成長、日本国内だけで300社以上が利用
GLOBAL GAME JAMとは
- Global Game Jamとは、毎年1月に行われるゲーム開発のお祭り
- 世界中で、同時、かつ同じテーマで、48時間という時間制限のなかゲームを企画・開発し、GGJのサーバーにアップロードする
- その場にいる(知らない)人と即席でチームを組んで、ゲームを作る
- つまり、基本的に事前準備不能
- 去年は全世界で3000人以上、今年度は6000人以上が参加したらしい
- 日本でも参加者が倍増、去年の200人弱に対して今年は400人以上が参加
- 開催場所も北海道、仙台、東京2カ所(一ツ橋、八王子)、京都、大阪、福岡と7カ所で開催された
- GGJ期間1週間前から全ての機能が使える期間限定ライセンスを提供(〜2/1)
- 世界全体で30%のプロジェクトがUnityを使用
- 日本でも昨年は4チーム程度だったのが、推定40チーム弱くらいが利用する状況に
- 習熟度の高い参加者が複数参加したことで、クオリティの高いゲームが散見
事前のモチベーション
- Jamは今回で5回目なので、そろそろ1回目で得た「勝ちパターン」でない作り方をしたい
- できれば、盛大に失敗するくらい、チャレンジしたい
ブレスト
- ウロボロスの円環
- グルグル回るのってよくね?すげー速度で回る!
- 円環ではなくて螺旋なのよ・・
- 美少女・・美少女をつくりたいです
- ロボ大好きなんです
- 中二っぽいのやりたい!
開発コンセプト
- 「中二病」「疾走感」「美少女」
- 前回のループの自分がライバルとなって現れる
- 前回の自分を使って今回の周をより速く進む
- 最高の速度でゴールすると、エンディングが見られる
>>>R.I.N.N.E>>> | The Global Game Jam
http://globalgamejam.org/2012/rinne
うまくいったこと
- 「中二病」「疾走感」というコンセプトが実現出来た
- それぞれが「やりたい」と思うことがそれなりに入った
- 疾走感のあるゲームや、「前回の自分と協力」というコンセプトのゲームをチームで動画等で共有し、コンセプトの実現に必要な要素を洗い出した
- 比較的早い段階でチーム各人の実力が概ね把握できた
- 得意なこと・できることに集中してもらい、出来無い事をあまりやらせない
- 48時間では今まで考えられなかった絵作りが出来た
- 演出的なところも含め、グラフィックはかなり良い出来に
- グラフィッカーの能力を最大限に活かすことに成功
- コースデザインとレベルデザインの分離
- 「同一コースで複数の難易度」という条件を綺麗に同時処理出来た
- SplitScene最高! マジ使える
- 勝ちパターンでない方法論で物作りが出来た
- 新たな教訓を得ることが出来た
うまくいかなかったこと
- ゲームロジックの詰めが甘すぎるまま開発に着手
- 途中(しかも日曜の深夜3時頃)で破錠、方針変更を余儀なくされる
- 入れるべきコンセプトの欠落
- 開発順序ミス
- 手っ取り早くプレイテストに行くはずが、カメラ制御等に気取られて大幅に遅れた
- キャラクターコントローラーの理解不足
- CharacterControllerと3rd Person cameraの挙動に関する理解不足で、無用な時間を使った
- チームのパワーを生かしきれなかった
- チームの成果が自分に向かってきてしまう作り方をしてしまった
コンセプト共有
- 類似のゲームをみんなで出し合い、YouTube等で動画をみたり、Flashゲームをプレイしたりしながら、やりたいことのコンセプトや細かい良い点を拾っていく
- Wipeout HD
- Cursor 10
- ただしコレには穴があり・・
チームの能力把握
- 最初のタイミングで手を挙げてもらったものについて、土曜日の昼くらいまでに一端全員の作業が上がるようにした結果、全員の能力がどのような物かが判断出来た
- 無理はさせない、出来る事をさせる、しかし本人がやりたいと思えることをしてもらう、という方向性に、ある程度持って行く事に成功
- ただし、チームメンバーは僕が思っていたり優秀だったので、後半大分もったいないことに
SPLIT SCENE最高!
- 今回のゲームは周回レースなので、コースデザインとゲームデザインが直結している
- ステージデザインは2名いたので、出来るだけ並行作業させたい
- 普通にやると同じシーンファイルをいじることになるので、並列作業出来ない
Unityプロジェクトを複数人で共同開発する方法の一案 - Radium Software
http://radiumsoftware.tumblr.com/post/6412707889
- ステージのシーンファイルを、
- コース
- コースの飾り付け(ディティール)
- 1〜3週目の障害物配置
- という形に分け、SplitSceneを使って編集
シーンファイルの作り
マージ処理を実行すると _overlay に合成したシーンが作成される
GUIパーツをタイミングよく表示する仕組みにはコリジョンボックスを準備し、そこに衝突したのをトリガーに動作
SPLIT SCENE最高!のつづき
- 作業時にSplitMergerがシーンのマージを行なってくれるので、過不足なく作業可能
- ゲームで使う時には、SplitMergerを動かないように細工
- SplitMergeCentinelというモノを作成
- これがヒエラルキーにある時はMergerが動作しないように
コンセプト共有の悪い点が
- 完成品のゲームを見ながら検証するという手段を取った事と、絵的な事をやりたいという意見が強かったため、ゲームロジックより演出面にばかり目が行く事に
- リーダーとしては多少危惧しつつも、今回は失敗上等なので「それでもいっか」と思っていたのですが・・
ロジックの詰め不足
- 結局ゴーストとどういう関係になったら面白いのか、エナジー制御をやるゲームなのか、認識の不統一や仕様の矛盾を詰めずに着手(まぁやりながらで!という方針)
- 早々にテストプレイ可能にするはずが、そこに遅れて大混乱、仕様確認出来ないまま進むことに
- 結局日曜の深夜に仕様をバッサリカット、まとめる方向に舵を切り直す
- この判断が遅かったので作業も結構ロスすることに
CHARACTER CONTROLLER
- 3rd personのデフォルトは、カメラ座標系で左右に曲がる処理になっているので、カメラ処理とキャラクターの移動を同時に作らないとならない
- アタリを取るためには、専用のMove関数で移動させる必要があるので、ベクトルの設定が不可欠
そもそもこんな速度で動かすために作ってない
向いてない!!
- ちょっとの修正でなんとかなるかな・・と思って色々試すも、全滅
- カメラ制御は結局全部書き直し
- それでもCharacterController自体、「やっぱり向いていない」
- 本質的には、「どういう制御系にしたかったのか」ということの僕自身の理解不足
コンセプトの欠落
- そもそもゲームになってない
- ゴーストの機能は作ってもらったが、入れ込む時間なし
- エナジー制御は頑張れば入ったのに息切れ
- 結果、ゲームではなくゲーム風の映像作品
(T-T)
身の程を知りました
- 切り分けが難しそうなコンセプト
- バラバラに作ってもらって、リーダー(メインPG)が組み上げるという形を取った
- チームメンバーのスペックが非常に高かったので、自分がボトルネックに
- パワーを使い切れないと、自分自身に跳ね返ってくる
- 何が何でも個々が作業をした結果がそのままプロジェクトに入る形を作る事が大事、でないとリーダーが死ぬ
本当に自分の実力がわかる
- エンジニアは何かを実現する時に「調査込みで」担当することが多い
- いわゆる「Google GETA(beta)」を履いている状態なので、素の状態での本当の自分の実力というのは案外わからない
- Game Jamでは「今できることしか出来ない」
- 技術、ゲームデザイン、チームマネジメント…今の自分の「身の程を知る」には、最高の機会
- 開発期間の長い・関わる人の多いプロジェクトでは、見えにくくなる(見たくない・見たい)部分が克明に見える
前向きに倒れるのも楽しい
- 48時間でチャレンジが終わるので、突き抜けても失敗しても得るモノが沢山有る
- チームリーダーになると、48時間は営業日換算で1週間分ということを聞いてくれるチームが無料で手に入る
- GGJはむしろ失敗するように仕掛けている(「1024人対戦」等、無茶な実績ばかり)
※実績とはテーマとは別に設けてあるそれをゲームに取り入れていると評価されるお題
- 普通ならやらないコンセプトに突っ込んでいく事が本当に来る
成功しよう!そして失敗しよう!
GGJ2011と比較して
- GGJ2011では、「僕以外大学生」チームで面白いゲームを開発することに成功し「ベスト(スペック)メンバー != ベストチーム」ということを強烈に学んだ
- GGJ2012では、「スペック高いメンバーばかり」チームでゲームとしてまとめあげる事に失敗し、「ベスト(スペック)メンバー != ベストチーム」ということをまたまた強烈に学んだ
リーダーにとってチームは武装そのもの
扱えない武器は何にもならないと心得よ!!
しかし、それでも自分で闘いたければ武装学べ! そして何度も闘え!
ゲームジャムには様々ないい事があるので、皆さんも参加したり、社内で開催したりするといいですよ!
その他のJAM(参考までに)
- 福島GameJam(夏)(30h)
- Unity Game Jam(2012/1/14-15)(30h)
- 次は夏にやるみたい
- Social Game Jam(2月にまた開催)(8〜30?)
- Summer Game Jam(夏)(100h)
懇親会
懇親会で大前さんに幾つか質問をしました。
Q : ゴースト機能を付ける予定との事でしたがその場合、動作の情報はどの様に準備するのですか?行列情報を全部保存だとかだとデータサイズ大きくなりますよね?
A : いや、行列を保存で問題無いでしょ。計算してみたら9KB程度だった
Q : Unity社内で開催する勉強会とかってやらないんですか?(ついでにUnityの社屋の様子も見れたり出来たら良いなぁ。との思いも込めてw)
A : 勉強会の要望が多くて他の会社に出向いてその会社の中で勉強会をやっててとても忙しくて、あとGDCに向けての準備なんかも有るのでちょっと無理
懇親会で色々な人の話を聞くと、今までは「これからUnityをやろと思ってるんですよねぇ」という人が多かったですが今日は「Unityのゲームリリース済みです」「Unityのゲーム、昨日申請出しました」などという話が多かったです(まぁ、たまたまそういう人達話したという可能性もありますが(^_^;))
それにしてもこれほどの人数が集まるとはUnityの人気を改めて実感する勉強会でした。