先日「第2回 京都インディーズゲームセミナー Unity入門講座」という催しに参加してきた。
ぼくはこれまでスーファミ、N64、GC、Wii、Wii U、GBA、NDS、3DS、PS2、PS3、PSP、PS Vitaを購入してきた程度にはゲームを嗜んでいるが、どちらかというとゲームよりも実用的なシステムの方への関心が強い。 しかし、使って楽しい、使って心地良いシステムを作るための考え方としてゲーム開発方面の知識を学びたい、といった動機で参加した。
Unityに関しては、知ってはいたけど使ったことはなかった。
「Unity 超入門 〜Unityって何だ?〜」
最初はUnityの高橋さんによるUnityについての説明で、ツールのデモ、アセットストアの紹介、Unityで作られたゲームの紹介がなされた。
Unityという開発環境
Unityのサンプルのプロジェクトを使い、Unityがどういう環境なのかということの解説がなされた。
具体的には、環境内でゲームを実行中に画像素材を外部のツールで編集すると更新された画像がゲーム中に反映されたり、新しいオブジェクトを投入してテクスチャを貼り付けたり、物理モデル化してプレイヤー攻撃によってぐらついたりするようになったりといったデモが行われた。 また、自動で銃を撃ち続けるようにスクリプトを修正すると、自動的にコンパイルが実行されて即時にゲームに反映されたりもした。
アイデアを手早く形にして試すのに非常に良い環境だということを強調されていた。
プロトタイプをUnityで作り、なんならそのままUnityで商品にしちゃえよ、的な。
アセットストア
ゲームで使用する素材を購入できるストア。 2Dゲームを作るためのツールキットとか、マルチプラットフォーム対応のデータ保存処理プラグインなんてのも売っているそうな。
ゲームの例
Bad Piggies
Angry Birdsの敵役のブタを主人公にしたゲームで、与えられた部品を組み合わせて乗り物を作るとそれが自動的に動き出し、うまく宝物にたどり着くとステージクリアというもの。 Angry Birdsとその後の作品ではUnityを使っていなかったが、プロトタイプ開発としてUnityを使い、そのまま商品になったらしい。
Jack Lumber
Jack Lumberという木こりのゲームを、開発者のエピソードを交えて紹介していた。 http://jacklumbergame.com/
「Unity ライブコーディング – 2D ゲームを作ってみよう!」
2コマ目のセッションはUnityを使ったゲーム開発のライブコーディングだった。 洞窟物語の作者天谷さんが企画、キャラクターデザイン、音楽を提供し、それを使ってUnityの山村さんがゲームを作成する。 ゲームの内容は、猫のキャラクターが飛んでくる魚を弓矢で狩るというものだ。 時間は50分。 山村さんが開発を進める横で、高橋さんと天谷さんが解説や雑談をするという形式で進められた。
作業はプレイヤーとなるキャラクター画像をスプライトに貼り付け、2コマのアニメーションで動きをつけるところからはじまった。 動作のアニメーションを左右と上向きそれぞれについて作成し、カーソルに反応して向きを変えるようにする。 向きごとに一つのコントローラが割り当てられ、コントローラを切り替えることで向きが変わる。
それから
- 弓を射ることができるようにする。
- 敵を作る
- 背景をつける
- 当たり判定をつける
- スコア表示をつける
といったステップをこなしてメインのゲーム部分が完成。
その後はタイトル画面、オープニングなどを追加して全体が完成。 これらは事前に作っておいたものを有効にしただけだった。
タイトルとかメインのゲーム部分の切り替えはどうするのかなと思ったが、Unity上でこれらの要素は「シーン」と呼ばれ、作成したシーン一式をドラッグアンドドロップでどこぞに放り込む操作をしていた。 ゲームを開始すると一番上のシーンがスタートして、その後のシーンの切り替えはスクリプトでやるのかな。
Unityでは2Dのゲームを作る場合も、3D空間にモデルを配置して、それを2Dに見えるようにするだけだったが、開発中はモデル群の配置を斜め上から見ることができたりするので、それはそれで構造が把握しやすくて便利だと思った。
途中、敵キャラが見えないという不具合にハマっていたが、光源がないと見えないパネルに敵キャラを置いていて、かつゲーム内の環境に光源がなかったためだった。2Dゲームでは光源のない環境でも表示される、Unlit/Transparentというシェーダーがよく使われるそうだ。
Q&A
最後はUnityのお二人と天谷さんをパネラーとしたQ&Aのセッションだった。 以下、実際のQ&Aに沿っていないけど、メモしたものを書き連ねたもの。
実務でUnityを使う上で気をつける点は
最初の開発は失敗するものなので、まずはひとつ作ってみて、そこからが本番だと思ってほしい。 デザイナー、音楽、プログラマーが同じ環境で作業できるのがいい。
Unityみたいなものが出てきたらプロのプログラマーはどうなるの?
今はインディーズが盛り上がってきてるけど、またゆり戻しがあったりして、落ち着くところに落ち着くんじゃないか、みたいな話。 プロのゲームプログラマーがなくなるってことはないだろう。
独自色のあるプログラマーってのは絵を描ける人が多い気がする。 自分は絵が描けないと決めつけないで、自分なりに絵を描いたり音楽やったりしてみれば?
モチベーションの保ち方
一人で開発するのはそれが難しい。 自宅で作業すると片付け始めちゃったり、ちょっと息抜きと思って始めたゲームで一日が潰れちゃったりするので、開発「しか」できない環境に身をおくのがいい。 インキュベーション施設を使ってみたら、これがすごく良かった。(天谷さん)
懇親会にて
イベント後の懇親会では数人で高橋さんを囲んで長々と直接お話しできる機会に恵まれた。 そこでいろいろ質問ができたので、それも書いておく。
C#とJSはどちらが主流?
C#のほうが多いらしい。 言語別の使用人口だとJSの方が圧倒的だと思うが、ゲームの世界ではそうでもないようだ。 JSの緩さが嫌われている?
ちなみにUnityのJSは型宣言があったりして、JSというよりActionScriptな感じ。
ゲーム以外の用途
軍事や警察の訓練シミュレーションや、NASAの何か(なんだったのか忘れてしまったが、観測データを視覚化するようなものかな)。 Webブラウザ向けのUnityプラグインはNASAの事例で普及が大きく進んだらしい。
アート系でもぼちぼち?
環境による出来・不出来はないの?
Titaniumを引き合いに、Unityはサポートしているプラットフォームによって出来の良し悪しってないの、と聞いてみた。 ゲームの場合、標準のUI部品などを使わないので、Titaniumとかがターゲットとするアプリと比べるとプラットフォームによる違いが少なくてマルチプラットフォーム対応はしやすいんじゃないのかな、という話だった。
Unityの日本法人
現在9人。
ゲーム業界事情
ブラウザ向けにソーシャルゲームを作っていたところが、パズドラショックで闇雲にネイティブアプリに手を出そうとする傾向が強まっているそうだ。 その手段としてUnityを使おうとするんだけれども、Unityがあれば素人でもゲームが作れるってわけじゃないんだよ! という話。
洞窟物語
洞窟物語の作者である天谷さんと少しお話することができた。 洞窟物語は何年か前に遊んでいたことがあって、その御礼を伝えることができてよかった。 聖域を結局クリアできずじまいですと伝えたところ、聖域はもともと存在していなかったが、天谷さんの友人にゲームが簡単だと言われ、だったらおまけで難しいステージ入れたるわい!と追加したステージだそうな。 それがいつしか「聖域をクリアしたらトゥルーエンド」という話になって広まっていったとのこと。 とは言っても存在するステージはクリアできないと敗北感がある。
ついでに「効果音ってどうやってつくってるんですか?」というなんとも素朴な疑問をぶつけてみたところ、自作のツールで正弦波、ノコギリ波、ノイズ等の基本パターンとなる波形を組み合わせて作っているらしい。
さいごに
見知った顔が全然なくて、Web系の人々とゲーム系の人々って分断されちゃってるのかなーという印象を受けた。