のりブログ

ゲーム関連記事および雑記などを書いています。

ゲームプログラマーになるには?(2) ~PSVitaや3DSなどの家庭用携帯機ゲーム開発とごまかしスキル。~

こんにちは!のりです。

FF7リメイクはUnrealEngine4(以下、UE4)を採用らしいですね。

前回の「ゲームプログラマーになるには?」では、UE4を採用している企業が増えてきたと書きましたが、着々と増えているようです。 

やはり、ハイエンド機のゲームプログラマーを目指す方には、UE4の勉強をお勧めします。

最近のUE4採用タイトルとして話題にあがったものとして、鉄拳7ストリートファイター5シェンムー3キングダムハーツ3、ドラゴンクエスト11、があり、今回のファイナルファンタジー7リメイクも加わりました。ますます、UE4採用タイトルが増えていきそうです。

これだけ有名なタイトルに採用されているゲームエンジンなのに、なんとUE4は誰でも無料で使用できます。ゲームプログラマーを目指す人の勉強ツールとしても、うってつけですね。

しかし、こんなにUE4を推すつもりはなかったのですが、ゲーム業界的に意外と流行ってきたので、推さざる得ない感じになってきました。(笑)

スポンサーリンク

 

といったところで、今回の本題である、3DSPSVitaなどの家庭用携帯機ゲームソフトの開発をしたい人はどのようなことを頑張ればいいかということを書いていきたいと思います。携帯機と書くとスマートフォン(以下、スマホ)などと混同してしまいそうなので、あえて家庭用携帯機と書かせて頂きます。

前回の記事で、PS4やXBoxOne、WiiUなどのハイエンド機のソフトのゲームプログラマーになりたい場合は、UE4を使いこなせるようにするのが近道ですよ、という記事を書きました。3DSなどのゲームを作りたいと思っている人も、まずはゲーム会社に入らなければ始まりませんので、やはりUE4を使いこなせるようになるのが良いと思います。

しかし、ゲーム会社に入った後、UE43DSPSVitaのソフトが作れるかというと、微妙なところです。PSVitaUE4でも対応する予定とのことですが、本当に対応されるかは分かりません。3DSはおそらく対応されないでしょう。UE4は、ハイエンド機やスマホはサポートしていますが、家庭用携帯機はあまりサポートしていません。なぜでしょうか?

一番の理由は、ハイエンド機に比べて、スペックが低いということです。CPUの性能も低ければ、GPUの性能も低い、メモリも少ない、といったことからゲーム開発する上で相当リソースを節約しないとクオリティの高いものを作ることができません。

では、なぜスマホはサポートされているのでしょうか?おそらく家庭用携帯機より性能が低い可能性もあります。それは、単純にあまりハイエンド機のような3Dで、すごく綺麗というようなゲームを求められていないからです。スマホゲームは、最近は3Dのゲームも増えてきたとはいえ、まだまだ2Dゲームが主流です。モンストやパズドラですね。さらに3Dを使うにしても、オブジェクトの数が相当少なかったり、相当リソースが少なくてすみます。草原や室内の1部屋などのシンプルな背景に、キャラクターが数体といった感じです。これでも、スマホゲームのスペックとしては、相当ぎりぎりなはずです。

これに対して、3DSPSVitaは、ある意味スマホゲームよりちょっと性能が高いくらいなのに、PS4などのハイエンド機と見比べられてしまう傾向があります。もちろん、ハイエンド機並みのクオリティではなくても許容はされますが、ユーザとしては、やはり家庭用ゲームという括りで見るので、あんまりショボイと見向きもしないでしょう。

この状況をゲームプログラマーはどうやって解決しているかというと、ハイクオリティに見えるようにあちこちをごまかすスキルを駆使しています。3Dでリアルな感じにすると、ショボさが際だってしまうので、あえてアニメ調のグラフィックにしてみるとか、アイテムなどの小さいオブジェクトは、実は2Dの張りぼてだったりだとか、当たり判定がかなりアバウトになっていたりだとかです。

このようなごまかすスキルというものは、ファミコンの頃からずっと考えられ、今でもあちこちのゲーム開発で使用されます。PS4などでさえ、ハイエンドPCに比べれば性能が劣るので、PCとのマルチ開発をする場合は、PS4側のソフトをごまかす必要があります。

ごまかすといっても、ズルをする、楽をするということではなくて、必死に考えて全力でごまかす必要があります。全力でごまかすってなんだ(笑)と思うかもしれませんが、全力でごまかすのです。

このごまかしスキルは、UE4などではとても難しいものです。UE4は、ハードのスペックを最大限に活用するゲームエンジンといっていいでしょう。しかし、ごまかすということは、ハードのスペック以上に見えるものを作る必要があります。これには、ゲームエンジンどころか、任天堂ソニーが配布しているライブラリにさえ手を入れる必要がある時もあります。時には、C言語よりもさらにハードよりの操作ができるアセンブラ言語の知識を必要とすることもあります。何より、ゲーム会社で培われてきたファミコン時代からのごまかし技術を知らないと、何をしていいか分かりません。これらは、ゲーム開発の記事などでたまに解説されていることがありますが、実際に身につけるためには、ゲーム会社で実際に働いてみるしかないでしょう。

個人で努力できることとしては、アセンブラ言語、C言語C++言語をとにかく勉強すること、実際にファミコンのような昔のゲームを再現するように作ってみることぐらいです。昔のゲームがどのように作られているか興味を持つことは、ゲームプログラマーのスキル上達に役立ちます。

スポンサーリンク

 

ここまでで、家庭用携帯機の開発をしたい場合、ごまかしスキルを上げようと書きましたが、なんとなくぼんやりした印象になっていると思います。

ここで、私が体験した3DSのゲームソフト開発で、苦労した問題を1つ取り上げてみたいと思います。

3DSのとあるアクションゲームを作っていた時の話ですが、開発中、キャラクターの処理負荷がとても高く、FPSがとても低い状態となっていました。FPSとは、1秒間に何回描画を更新するかという単位であり、60FPSというと、1秒間に60回描画が更新されるというものです。30FPSでは、1秒間に30回描画が更新され、FPSが高いほど、滑らかな動きになり、FPSが低いほど画面がカクカクします。その時は、キャラクターが4体くらい表示された状態で既に30FPSくらいになってしまっており、30FPSよりFPSが下がるとかなり操作感が悪くなるので、どうにかしなければならない状態でした。

しかし、ディレクターからの指示は、3倍の12体のキャラクターを表示した上で60FPSにしてくれという無茶な要望でした。最初は、6倍の24体という要望でしたが、さすがそれは無理ということで、12体になりました。それでも十分無謀ですが。

結局それをどうしたかというと、そのキャラクターの当たり判定を円形上のもの一つというもっとも処理負荷が低い状態にして、その上で、プレイヤーが操作していないキャラクターは3フレームに一回しか当たり判定をとらず、キャラクターのモーションデータを削除して、5パターンくらいのポーズのモデルを用意して、gifアニメのように3Dモデルを切り替えるということをしました。もちろん、3フレームに一回しか、当たり判定を取らなければ、壁や床にキャラクターが埋まって見えることもあります、そこを表示上だけ壁や床から出して表示して、実際は埋まっているけど、見た目は埋まってないといった、見た目としては問題ないというごまかし方を行い、何とか12体で60FPSを実現することができました。

家庭用携帯機でゲームを作る場合は、このようなごまかし案がすぐに思いつかないと、どんどんゲームがショボくなってしまいます。上のごまかしを入れなければ、このアクションゲームは、60FPSで1体のキャラクターが動くだけの寂しいものにするか、30FPSで4体のキャラクターが動くものにするかの2択を迫られることになります。

ゲームプログラマーが無理です、と言ったら、ディレクターはその2択からどちらかを選ぶしかなくなってしまうわけです。

ディレクター側としても、言った要望を実現してくれるプログラマーと仕事がしたいですよね。ゲーム会社の人事や、プロデューサー、企画やグラフィッカーも、無理難題を無理とは言わず、上手くごまかして実現できてしまうプログラマーをほしがっています。

UE4などを勉強することは、とても強力な武器になりますが、さらにこのようなごまかしスキルを覚えて、困難を可能にするといった柔軟な考えができれば、よりゲームプログラマーへの道が開けます。

まとめると、3DSPSVitaゲームプログラマーになりたい人も、UE4を勉強することが重要だけど、昔ながらのゲーム開発におけるごまかしスキルにも興味を持つとさらにゲームプログラマーになれる可能性が高くなるよという話でした。

今回はここで区切ります。次回は、スマホゲームとゲームセンターの筐体ですかね。

以上、ゲームプログラマーになるには?(2) ~PSVita3DSなどの家庭用携帯機ゲーム開発とごまかしスキル。~ でした!