「Unreal Engine 4」で“ゲームを完成させる”にはどうすればいいのか?1か月で3Dアクションを作り上げたヒストリアと、Epic Gamesに訊く 第2回
ゲームエンジンの無料化にともない、ゲームを作り始めることは簡単になった昨今。しかし少人数の開発チームや初心者が最後まで“ゲームを完成させる”ことはけっしてたやすく無い。AUTOMATONはゲームエンジン「Unreal Engine 4」の専門開発会社である「株式会社ヒストリア」と、国内でUnreal Engine 4を展開する「Epic Games Japan」に取材し、1人のデザイナーがわずか1か月で完成させたという3Dアクションゲーム『ダンジョン&バーグラー』の誕生秘話についてお聞きした。
今回はアセットを利用してブループリントでプロトタイプを組み立てていった第1回に続き、仕様を決定せずにゲームのアイディアを試行錯誤しつつ搭載してゆく開発中盤のお話をお届けする。特にステージ制のアクションゲームを作ろうと考えている開発者にとっては、レベルデザインに打ち込むためにどんな準備をしておけばよいのかを、ぜひ参考にしてほしい。
「Unreal Engine 4」で“ゲームを完成させる”にはどうすればいいのか?1か月で3Dアクションを作り上げたヒストリアと、Epic Gamesに訊く 第1回
ブループリントで“すぐに誰でもアイディアを試せる”
――プロトタイプが形になったあとも、仕様を決めずに開発を進めていったとのことですが。
我妻氏:
仕様書は無かったですね。「まっすぐ進んで壁に当たったら跳ね返ってくるだけの敵」とか、「決めたルートを巡回して歩く敵」とか、あと「一定時間で消えて当たり判定が無くなる敵」とか、アイディアレベルのものはありました。そういったベースのアイディアだけを決めておいて、あとは本当にブループリントでさくっと作ってしまい、動かしてみてはたしてちゃんと遊びになるのかという検証をしていきました。
――好奇心で聞きますが、現在の製品版のバージョンには入っていないボツアイディアはありますか?
我妻氏:
けっこうシンプルなところから始めたので、作った後にボツにというのはなかったのですが、最初のアイディアレベルから形が変わっていったものはいくつかあるかもしれないです。作ってみるとこっちの方がよかったなと変えたりだとか。そうですね……。
――前回の記事で出た「燃料の概念」はボツアイディアの1つですよね。
我妻氏:
ああ、そうですね。実際にやってみて、これはつらいからとやめました。
――組み込んだアイディアというのは、簡単に外せるものなんでしょうか。
我妻氏:
その辺りは、Unreal Engine 4の「ブループリント」の手軽さのおかげだと思いますね。まずブループリントの良さとして、僕みたいなアーティストでも、アイディアをプログラムとして組めてしまうというところがあります。通常ゲームを作ろうと思うと、まずプランナーが企画を考えて仕様書を作り、次にプログラマーがその動きを実装して、さらにその後プランナーが細かく調整して、そのあと見た目をデザイナーやアーティストが付けるという行程になるんです。そこを色々と飛ばして、まず考えたアイディアをベースになんとなく見た目を入れて動かす段階までが、1人でできてしまう。駄目だったらそこでカットすればいいだけなんです。普通に作る場合だと、仕様を考えてある程度時間をかけて、その後にプログラマが作ってというところで、1回自分の手を離れてしまうので、なんというか“なかなか戻りにくくなる”んですよね。あとは意図が伝わらなかったりとか、伝えるために事細かに仕様書を作る必要がでてくる。その辺の工程をさっとカットできるっていうのは、すごく良いところなのかと思います。
――前回、河崎さんがおっしゃってましたが、とりあえず作ってみる、動かしてみるというやり方が、Unreal Engine 4のブループリントにはあるわけですね。
河崎氏:
これはデベロッパーとしてのEpic Gmaesのポリシーで、いろんなところでいろんな人が言ってるんですけども、“fail often fail early”という言葉があります。「頻繁に失敗しろ、しかも早い段階で失敗しろ」っていうのが、うちがゲームを作る時のポリシーなんです。開発の後半になってから何か変えようとすると、そこまで積み重ねてきた多くのものが無駄になってしまい、ダメージが大きいんですね。開発の初期の段階でいろいろなことを試してみて、沢山失敗してたくさん潰していけば、良いものが残るからクオリティが上がるっていう。先にそのポリシーがあって、それをじゃあどう実現するかっていうところで、ブループリントとかはできている感じですね。
いま我妻さんおっしゃったように、普通のようなやり方だとプログラマがボトルネックになっちゃうんですよ。みんなプログラマが実装してくれるのを待ってて、できたらそれを見てまたプログラマに戻してっていう、全部プログラマ待ちになって。プログラマは企画とかアーティストがわけわかんないことを言ってくるのを、いちいち相手にしなきゃいけない。
一同:
(笑)
河崎氏:
そこをプログラマを解放してあげて、アーティストが自分たちで自分のアイディアを試せるようにっていうのが、ブループリントの設計思想というか、そもそものコンセプトですね。
――ブループリントはもともと大規模なゲーム開発で活用するために作られたものだと。
河崎氏:
大型になるほどチーム内の依存関係とか、誰かがなにかをやんないと次に進めないっていうプロセスが複雑になって、イテレーション、トライ&エラーを回すのに時間もかかる。たとえば今日なにかをやってもらおうと思っていたプログラマが休みになっちゃうと、もう作業そこで止まってしまうわけじゃないですか。でもアーティストが1人で全部できるなら、手の空いた時間に好きなだけ試せるしっていうところで、規模が上がるほどに効率の効果も上がると思います。
佐々木氏:
いま制作しているもう少し規模の大きなプロジェクトは、すごく面白いワークフローですよ。我妻が先にブループリントでギミックを作って、それが面白かったらプログラマがプログラム的に正しく清書する。Unreal Engine 4だからこそできる新しい世代のワークフローだと思いますね。
河崎氏:
実際、うちで作っている『Paragon』とか『Fortnite』でも、ブループリントはバリバリに使ってます。これはけっこう我々自身にとっても意外だったんですけど、Epic Gamesの中のプログラマにブループリントのファンがすごく多いですね。うちで日本のサポートやってる者もブループリント大好きです。やっぱりプログラマは、そんなのC++でコード書いた方が早いじゃんってみんな最初は言うんですけど、いざ触ってみるとこんなにいいものはないと気に入ってくれることが多いです。
佐々木氏:
自分も一緒です。数年前に初めてUnreal Engine 4のデモを見た時に「いや絶対こんなんじゃやりきれないでしょ」と思ってたんですよ。自分がむかし好きだった「Unreal Script」がなくなって、それでブループリントですと言われても、いやいや無理でしょうと思ってたんですけど、今ではもうブループリントの大ファンですね(笑)
――あらためてブループリントの魅力はどこにあると思いますか?
佐々木氏:
プログラマにとっては、ブループリントってビジュアライズされているだけで、オブジェクト思考というC++と同じタイプの言語なんですね。プログラマが一行一行書いているものが1つのノードになっていて、順番に上の行から処理されるのが横になっているだけで、実はあれプログラムなんですよ。こういう風にプログラマにはプログラムとして受け入れられるし、そのための機能も実は結構揃っている。一方でアーティストにとっては、ノードを順番に繋げば動くという、ブロック的な扱いができる、と説明することが多いです。つまり、同じブループリントを見ているんですけど、全然違う角度から見えているんですよね。プログラマからも馴染むんですよ。
――やはりプログラムを習うにはいい教材と言えますね。
佐々木氏:
いいと思います。やっぱりものが動いて楽しいし、処理が流れて見えてるのがいいよね。
我妻氏:
ですね。どうして動いていないかがわかるっていうのが本当に大事で。僕もプログラムでなにかゲームとか作りたいなと挑戦してみるんですけど、まあなぜ動かないのかがわからない。調べてみたら、1文字だけ間違ってたとか、書く順番を間違ってたとか。そういう感じで、あっという間に挫折するのを何度か繰り返しています。ブループリントではどうして動いてないかがわかるし、ちゃんと動かすことができて、すごいよかったですね。
ブループリントを先に用意して“ツクール化”してしまう
――ブループリントでアイディアを試しながら開発を進められたとのことですが、具体的にはどう進んでいきましたか?
我妻氏:
ギミックや敵を作りながらステージを作っていくという進め方をしました。その際、まず1個のギミックを作ったら、それをプレイヤーに「学習」させるレベルを作っていこうと考えていました。チュートリアルに近いような、このギミックはこういう動きをするというのを理解させて、プレイヤーにどういう動きをしたらいいのかをイメージさせるというものが1つ。それと、その作ったギミックを2つ以上出して1つのレベルを作るという「応用」のステージ。最後にそのギミックとすでに作ったギミックを「複合」させるというステージ。「学習」と「応用」と「複合」という分類に自分のなかで分けて、それで3つぐらいステージを作っていく。全体的には複合のものがすごく多くなるので、後半になればなるほど開発は楽になっていきます。少ないギミックの数でも、これとこれを組み合わせれば、科学反応というかこういう遊びも生まれるなあとか、という感じですね。
我妻氏:
このコウモリも元となるブループリントがあって、それを画面に配置すればそこで動き始めます。
――箱(ノード)の画面にわざわざ戻る必要はないんですね。
我妻氏:
戻らなくていいですね。ある動きをし続けるコウモリとか、弾を吐き続けるパンプキンとか、そういうものを個別に作っておくんです。それをさっと配置するだけで動作するようにブループリントを組む。そうするとステージを作るときに、それらの敵を配置して、向きや攻撃の方向を決めたりといった部分に集中できます。また敵だけでなくコインを取るとスコアがプラスされていく機能があるんですが、それも先ほどの敵と同じように事前にコインのブループリントを作ります。あとはレベルデザインの時に配置をしただけでコインとして機能するようになっています。このように置けば動くっていう状態に早めに持っていければ、量産はすごくしやすいかなと思います。
――こう表現していいのかわかりませんが、まるでツクール系のゲームみたいですね(笑)
我妻氏:
そうですね。まさに(笑)
佐々木氏:
ツクール系になるように自分で作るんですね。
我妻氏:
コンテントブラウザー上で見ると、敵やコインのブループリントが個別に作ってあって。それをステージに置けば機能するように作ってあります。
我妻氏:
中にコウモリの動いている3Dモデルがあって、そのコリジョンを判定するスフィアがあります。歩き方とか動き方とか、キャラクターにぶつかった時の挙動とか、そういうのを定義してあげて。後は配置すれば、壁にぶつかったら戻ってくるし、プレイヤーに当たったらプレイヤーを殺すっていう処理が行われます。
――たとえばの質問ですが、これブループリントがないとなると、どれほど大変な作業になりますか。
佐々木氏:
なにで作るか次第だね。
我妻氏:
こういう作り方はすると思うんですけど……。
佐々木氏:
プログラムコードでエンジン使わずに自前で作るとしたら、どこまで元があるか次第ですけど……。まあでも、プログラマがいないと無理ですよね。
我妻氏:
処理自体は単純なので、プログラマがいればすぐに作れてはしまうんですが。
佐々木氏:
たとえばコウモリのモデルを使うとかするとなったら、モデルを読み込んで表示させてアニメーションを流し込むっていう部分が必要になります。ここがもうUnreal Engineなら用意されているけども、自分で作るとなると、どこまで過去に作った処理が流用できるかっていうのを確認するところからですね。でもそういう部分は、ゲームエンジンがありがたくも全般的に整えてくれるので、本当、なにで作るか次第ですね。
レベルデザインしやすいようにしておく
――製品版『ダンジョン&バーグラー』には30ステージが収録されていますが、当初は40ステージを制作しようとしていたそうですね。
我妻氏:
最初は目標値として40ステージっていうのを決めていたんですが、一通りできたタイミングで社内の何人かに遊んでもらうと、難しすぎるとかすぐ死ぬとかいろんな意見が出まして。プレイしてもらうとちょっと長いだろうという意見が多かったので、30ステージに削りました。この期間でも作りすぎるぐらい作れて、さらにある程度削れてっていうのは、けっこうすごいことなのかなと。ステージはたしか40ではなくて50ぐらいは作っていて、そこからあとで順番を変えたり、不必要なものを省いたり。これもエディター内で組み換えを簡単にできるように作っておきました。
――ステージ作りにはどれくらいの期間をかけられましたか?
我妻氏:
このプロジェクトが完成させられるかどうかは、ステージを作る期間をいかに取るか、にかかっていました。なのでもっとも時間をかけていて、3週間はいってないかもしれないですけど、2週間から3週間ぐらいかけたと思いますね。
――2、3週間で50ステージを作るというのは、個人的にとてもすごいペースだと思えます。1日2ステージ以上のペースです。
我妻氏:
そうできるような作り方にしたということですね。1つ新しいギミックを作ったら、置いてみて動かして、さっき言った学習するためのステージと、2体以上を組み合わせるステージをベースに作って、だったらこういうのも作れるじゃん!って思いついたら、またパパッと新しいステージを作っていきました。ほかには、作る時にいかに背景を使い回すかを考えていましたね。最初のプロトタイプ版のころはステージごとに壁を配置して作る想定だったんですが、そうすると時間が結構かかってしまう。技術的なところで言うと、ライティングをベイクしたり、そういう処理をステージごとにしなければならないんですよね。
我妻氏:
なのでこんな感じで壁と柱を作ったんですね、この辺は『ドルアーガの塔』を参考に。隔壁を使って壁を区切るっていう作りにすることで、大きさのパターンが2つか3つあるぐらいで、背景はぜんぶ一緒にできます。そして隔壁と敵の配置、あとはスタートの降りる階段とゴールの登る階段の位置を決める。レベルデザインを組むのは、本当に遊んでるような感覚で(笑)ワープゾーンとかそういうのも作りながら、応用していくって感じですね。
――レベルデザインを組んでいる際にもアセットや背景グラフィックの用意などは並行して行いましたか?それとも先にすべて用意した形ですか?
我妻氏:
背景は同じものを使いまわすつもりだったので、一度作ってしまえばステージごとに隔壁の位置を決めるだけですね。なので、並行してやるというよりは、一度作ってしまえばずっと使えるような作りにしてあるという形ですね。その辺もすごく効率的にいったのかなあと。プロトタイプ版で試行錯誤出来たのが良かったんだと思います。
佐々木氏:
過去の経験が活きてるかなって思うね。
我妻氏:
そうですね。前職の頃からUE3を使っていたので、その辺は慣れていたというか(笑)
佐々木氏:
これが時間かかるとか、こうすると大変とか(笑)
我妻氏:
こうすると容量が大きくなっちゃうからこうするとか、そんな感じですね。
1つ変更すれば全部変更できる
――やはりゲーム開発においてレベルデザインの作業は重要に。
我妻氏:
ゲームのタイプにもよりますね。たとえばレベルデザインがあまり必要ないパズルゲームであれば、大体の場合システムができればそれで完結するかと思いますから。逆にアクションゲームとかの場合は、やはりレベルデザインが一番大きい部分だと思うので、そこは一番時間がかかる部分だと思った方がいいと思います。逆にいかにレベルデザインを楽にするかとか、いかにレベルデザインをしやすくするかっていうところが必要です。
――アクションゲームを作るなら、レベルデザインを作りやすいようにあらかじめ準備しておくと楽になる。
我妻氏:
そうだと思いますね。
佐々木氏:
ギミックが独立してるってのも重要だよね。
我妻氏:
ですね。で、1つ変更すれば全部変更できるっていう。
佐々木氏:
これとかも、コインの見た目を1つ1つ変更するんじゃないんです。おおもとにあるコインっていうのを、ブループリントの中で見た目を変えて。すると配置済みのやつも、あとから見た目を全部変えられるとか。こういうところは効率いいですね。機能は一緒で見た目が変わっただけっていう。
――今回の話で、おさえておくべきポイントなどはありますか?
我妻氏:
そうですね……まず全体をざっくり作るみたいなところですかね(笑)
佐々木氏:
プロトをちゃんとプロトとして作るっていうのが。
我妻氏:
おおまかに形をつくって、細かいところはあとから決めてくっていう作りにしておけばと。1個のものを作りこみすぎてしまうと、どうしてもそこにこだわりがでてきちゃって、それがいざゲームにマッチしてなくてもそれを捨てるのが忍びなくなってしまって捨てられないみたいな事態になるので。なるべく手間をかけずに一気に作っちゃって、細かいところは後からちゃんと組み上げるみたいなスタイルの方が、精神衛生上いいのかなと。1人で作る場合は特に(笑)
佐々木氏:
そうね(笑)
番外編: ヒストリア誕生秘話
――ヒストリアのバックボーンを知りたいのですが、どのような経緯でヒストリアは誕生したんですか?
佐々木氏:
ちょうど自分が前職のプログラマのリーダーとしてやりたいことをやり切って、次にその会社で何をしようかなと考えた時に、独立というのが浮かびまして。いままでも頭の片隅にはあるにはあったんですが、そこまですごく独立したい!という感じではありませんでした。ただ、ちょうどお金もたまってきて、作る力もついてきて、結婚もしてないと。「あれ!?やるなら今良いタイミングなんじゃない?」と思い立ちました。あとはアプリなど、小さい規模のお仕事があるという市場だったことも大きいです。自分でどこまでいけるか挑戦してみたかったし、やりたいこともある、それなら独立して一度やってみようかなと。なにやるかっていうよりも、独立を先に決めました。
それまで10年間サラリーマンをやってたので、初めての経営ということもあり、色々考えました。まず、独立するとはいっても、なにか柱は必要だなと。なにする会社なのというのは必要だと。最初はゲームエンジンを効率よく使ってものづくりをする会社というのをコンセプトに据えようと思ったんですけど、まあそんな会社はいくらでもあるなと。考えた末、前職でずっとUnreal Engine 3を4年ぐらい使ってたことと、Unreal Engine 4にも技術者として非常に魅力を感じていたので、それに集中してみたらどうかと思い立ちました。Unreal Engine専門というのはほかにないし、自分もやりたいし、ちょうどいいコンセプトだなと。Unreal Engine一本でやると決めて、河崎さんのところにご挨拶に行きました。うちはUnreal Engine一本でやるんでぜひ色々とご一緒させてください、と。
――設立時期はいつごろですか?
佐々木氏:
ちょうどこのまえ2周年を迎えました。ハロウィンに設立したので、正確には2年前のハロウィンですね。
――Unreal Engine 4がサブスクリプションに入るよりも前という時期ですかね。
河崎氏:
前ですね。直前、半年前ぐらいですかね。
――国内だとまだまだUE4は表には出てない時期でしたよね。
佐々木氏:
そうですね、UE4自体まだリリースしていなかったでしたよね?
河崎氏:
サブスクリプション始める前なので、一般の方には認知というか触れていただく機会はなかったんですけども、カスタムライセンスの方はもう『ストリートファイター』とか……『キングダムハーツ』はまだかなというぐらいで。まあカスタムライセンスの方は、大手のスクエニさんとかバンナムさんとかとお話を始めていて、佐々木さんが前にいらっしゃっていた会社でもお見せしたりして。その辺りの開発会社にはもう、おだししていたぐらいですね。
――そういった時期に設立を。
佐々木氏:
そうですね。その時に……どこまで言っていいか怖いんですけどね(笑)そこで見せていただいて、「こいつはすげえぞ」って自分の中でなってたんですね。今でも覚えているのが、最初に「エレメンタル」のデモを見せていただいたときのことです。最初は全画面で普通にゲーム画面を見せていて、実はこれエディター内で動いているんですって、全画面表示やめてエディターがバッって出てきたのを見て、「上手いデモだなあ~」と(笑)当時すごい感動しました。
――我妻さんは設立時から一緒にいらしたんですか?
我妻氏:
いえ、そういうわけではなくて。えーと、会社ができてどのぐらいになるかな。半年後ぐらい……1年後ぐらいですかね。なので、設立の時にいたっていうわけではないですね。
河崎氏:
2014年の8月とかですね。なんで俺が覚えてんだ(笑)
一同:
(笑)
河崎氏:
ちょうどお盆前に、あるプロジェクトがもう1か月間ないですよねみたいなことを言ってたのが、去年の夏ですね(笑)
我妻氏:
あー確かに、そのぐらいですね。
佐々木氏:
いきなり最初に、もう1か月を切っているプロジェクトに突っ込んだっていう……(笑)
――大変でしたか?
我妻氏:
なかなか大変でしたね(笑)
一同:
(笑)
――最初どのような経緯でヒストリアへ入社されたのですか?
我妻氏:
もともと社長とは前の会社の同僚でした。あとはUE4がサブスクリプション化したこともあり、遊びで「ブループリント」を触ってみたりしていました。自分はデザイナーなんですが、「ブループリント」は簡単にプログラムチックなこともできるし、面白いなと思っていて。で、いろいろ実験でゲームを作ったりしていて、その時にたまたまヒストリアが主催していた「ぷちコン」という、Unreal Engine 4を使ったミニゲームとかのコンテストに応募しました。ちょっとした賞を頂いたりして、それが縁で久しぶりに会って話してみて。そのころ、“Unreal Engineを使っていろんなことをしたい欲”みたいなのが高まっていたので、じゃあちょっとヒストリアに参加して、いろんなUE4ゲームを作っていきたいなという気持ちで参加した感じですね。
――『ダンジョン&バーグラー』を開発した頃の、我妻さんのプログラミング的な知識はどれほどありましたか?
我妻氏:
プログラムはまったく経験無くてですね。ただ、Flashのアクションスクリプトとか、そういった軽いところぐらいは触れていたんですけど。あとUE4ができてからは、自分でいろいろと手探りで触っていて、ああこれならゲーム作れそうだっていう感じではありました。でもプログラミングのちゃんとした知識というのは本当になくて、本当Unreal Engineのなかで学んでいった感じになりますね。