読者です 読者をやめる 読者になる 読者になる

うしろぐ

作ってあそぶよ

GGJ2017札幌、ひとりでできるかな?

3DCGのお話

GlobalGameJam2017

早いものでもうGGJ参加6年目です。

今年は学生の参加が多く、私のチームも私以外は皆学生さんでした。

ABCDチームに分けて、そのなかで3~4チーム作る方式。我々Dチームにはデザイナー3人しかおらず、各チームのグラフィックは一人で担当する感じ。

 

チームの制作は学生さん主体にやっていただいて、軌道修正する程度。話し合いつつ、グラフィックの負担に余裕があるよう企画し、2日目には全ての素材を仕上げました。

 

企画内容は、厄介な間取りでのスピーカーセッティング。ステレオサウンドをバッチリ決めるべく「左もう1cm前、角度もうちょっとだけ内振りに…」とかやるオーヲタシミュレーターです。バッチリ決まるとサラウンドのように音が後ろに回るので、この辺をうまくヘッドホンで再現してオーディオ沼に引きずり込もうという感じ。プランナーも音楽大好きだし、プログラマも「難しいけど挑戦してみたい」ということで。

 

作ったもの紹介。

・まず部屋とスピーカー。実在の間取りをわりと正確に再現。スピーカーは実在モデル無しの、よくある2wayバスレフ型。円形にポリゴン割いたけど、ちゃんとワンスキンモデル。チーム用モデルはスタンドと一体化して扱いやすい感じに。

f:id:lightwave:20170125014222p:plain

・リスニングポジションの人。彼はZBrushの有料プラグインHumanZBuilderを使用してSDiv1でエクスポート後、Blenderのスカルプトで筋肉ディテールにスムースかけて白単色で使用。記号化。

f:id:lightwave:20170125015114p:plain

・ボーン、IK、アニメーション入れて、ソファに座らせる。音楽聞いてノッてる感じを20フレームループで作りました。

f:id:lightwave:20170125020039p:plain

・アイコン画像。InkScapeでパス作ってsvgblenderへ読み込み、レンダリングしたものをコンポジットノードでアレンジ。これは陰陽じゃなくって、ステレオサウンドをイメージしてデザインしたもの。

f:id:lightwave:20170125022307p:plain

以上、お仕事終わり!

余裕があるので他のチームの様子を見に行きます。教えている学生もたくさん参加しているので、どんなの作ってるのか見てみたら、皆すげぇ気合入ったモデル作ってて驚きました。ほとんど1年生なのに、ちゃんとUVテクスチャー入れて、リギングしてアニメーションつけて。

こりゃ俺も何かしないと先生カッコつかないぞと。しかし3日目にモデルやテクスチャ増やしたところで実装されないのは予想がつきます。そこで、少しずつ読み進めていたUnity5の教科書を片手に、自分のゲームを作ってみることにしました。

ひとりゲームジャム開始!

この本最高で、変数とか関数とかクラスとか何それ?っていう、初歩のHTMLしかできない私にスクリプトの基礎から教えてくれる超良書。でも持ち歩くには重いので自宅で少し試してみました。

仕込み企画のなかに、アストロロボ・ササみたいな無重力2Dゲームがあったので、これを3Dでやってみることに。無重力空間でスピーカーをスピーカースタンドに載せたらクリアです。映画ゼロ・グラビティみたいにプシュって噴射するイメージ。本で学んだ2Dの応用が利いて、無重力設定とスピーカーが上下するまでは出来たのですが、無限に時間が溶けそうなので会場へGO!あとは検索でなんとかします。

考える。

地下鉄移動中に、どうやって実現するか考えます。回転のさせ方、ゲームクリアをどう判定とるか、ひとつうまく行かなかったときのために、別の方法も考えて。

f:id:lightwave:20170125023353p:plain

物理演算で動いているので、回転するには外部の力が必要だろうと思い、押すためのパーツを配置してみたけれど、これが全くうまく行かない。スピーカーだけすっ飛んでいくorパーツだけ飛んでいく。両方を空のゲームオブジェクトの子にしてもダメ、親子階層を作ってもダメ。あれぇー?パーツ組み立てて物理演算たのしむ系ゲームってどうやって作ってるの。。

あきらめてローカル回転の方法を探ったのですが、クォータニオンとなんちゃらがうんにゃら・・そういうのはまだ無理!なのでtransform.rotateの各方向へキー操作に応じて数値を入れました。結果、いちど回りだすと思い通りに操作できない謎の動作に。思い通りにならない事こそ無重力ゲーの魅力だよねー。

…半年後くらいには解決できる技術力が身についていることを祈ります。

そして完成へ…

f:id:lightwave:20170125024615p:plain

あとはゲームクリアの条件を作ります。当初、四隅に判定取って、スピーカーが正しい向きで着地したときゴールにしようと考えていました。しかしそんな器用な操作できるゲームじゃなくなっていたので、底が一瞬でも触れあえばOK!なゲーム難易度に変更です。衝突判定のオブジェクトも大きめに。こういう、他所で起こった出来事を別の場所の動作条件にする感じ、まだ慣れませんね。難しい。でもなんとか出来ました。バッチリGGJ時間内に完成です。

 

今回、Unityで自作ゲームという夢をGGJ6年目にして叶えることが出来ました! 大収穫!限られた時間のイベントは経験値がでかい。GGJがなかったら自作ゲームはまだまだ何年先だったことか。

 

しかもこれ、自分でテストプレイしてなかなか面白く感じました。ラジコンヘリを飛ばす楽しさに似ています。

 チームのゲームは惜しかった…

最低限の動作はプログラム出来ていたけれど、解決できないエラーに阻まれて時間切れになってしまったそうな。プログラムってエラーの解決がほんと大変ですね。エラー出たらまったく動作しないところとか、警告出てるところが原因とは限らない感じとか。

未完成残念です、こっちも遊んでみたかった。

懇親会で遊んでもらい、Twitterで配布。

f:id:lightwave:20170123164956j:plain

私のひとりGGJは公式サイトに載せる場がないオマケなので、懇親会で遊んでもらいました。ゲームの操作と達成目標を書いたテクスチャをプレーンに貼って少しわかりやすくしましたが、皆一度はスピーカーを画面外まで飛ばしてしまう初見殺しです。しかもゲームオーバーとか最初に戻るとか作れないので、Alt+F4で終了(笑)

後にTwitterで公開しましたが、遊んでもらえるのは嬉しいものです。マイニンテンドーストアのゴジラでユルゲー作る人達の気持ちが超わかります。私にもう少し技術が身についたらきっとゲーム作っちゃいますね。

初々しいゲーム、遊んでくださいな。

Windows:https://

https://app.box.com/s/a0g3wil3hk62zqpq5r58uihjm3x69skr

Mac:https://

https://app.box.com/s/id8xks0f68cx4gxdy9nnkn2ojs3u56e6

ついでにGGJ2016定山渓会場HTMLゲーも公開しよう。

プログラマー不在チームで詰んだ思い出、そしてHTMLで乗り切った崖っぷち発想力。これだからGGJは油断ならない。

・on-sen https://app.box.com/s/q2ztsxqzxjlys76z6tvrllv5t40bvbvi

 

3DCGの勉強がしたい?

これは一冊持ってて間違いないね!(著者)