のりブログ

のりブログ

ゲーム会社で働く現役プログラマー「のり」のブログです。ゲーム開発やゲームの感想、雑記などを書いています。

ゲームプログラマーになるには?

こんにちは!のりです。

 

ゲームプログラマーへの道シリーズとして、私がゲームプログラマーになるために役に立った経験などを紹介する記事を書いている途中ですが、実際に今からゲームプログラマーになろうと思ったら、どんなスキルが必要かということを書いてみたいと思います。

norizn.hatenadiary.jp

ゲームプログラマーといっても、PS4やWiiUなどの家庭用ゲームソフトを作りたいのか、PSVita3DSのような家庭用でも携帯機のソフトを作りたいのか、またはスマホゲームを作りたいのか、PCゲームを作りたいのか、さらにはゲームセンターの筐体用のゲームを作りたいのか、人それぞれ目標が異なると思います。

私は、運が良いことに一通りのハードでの開発に関わることができたので、順番に私の分かる範囲で書いていきます。

スポンサーリンク

 

 

・PS4、XboxOneなどのハイエンド機のゲームソフトを開発するゲームプログラマーになるには?

 

ハイエンド機のゲーム開発において、今ホットな話題といえば、「アンリアルエンジン4」です。

アンリアルエンジン4の最大の強みは、最新のハイクオリティなグラフィックが誰でもすぐ作れてしまうことです。ハイエンド機といえば、やはり最初に目がいくところグラフィックの綺麗さです。ハイエンド機での開発をするゲームプログラマーを目指す上で避けて通れないものが3DCGのプログラミングスキルです。3DCGとは、立体物を画面に表示させる技術で、3次元のコンピューターグラフィックスという意味です。

逆に2DCGとはあまり言いませんが、平面上の紙に描いたような絵を画面に表示させることで、2次元のコンピューターグラフィックスということですね。

この、2DCG、3DCG両方とも、画面に物を描画するということで共通しており、一般的には、グラフィックプログラマー(描画プログラマー)と呼ばれています。

ゲームプログラマーの中でもさらに細かく職種が分かれるわけです。しかし、グラフィックプログラマーとして、ゲーム会社に入社したいというと自分で敷居を狭くしてしまうだけで、そのゲーム会社でグラフィックプログラマーが足りていたら、それだけで不採用になってしまいます。なので、ゲームプログラマーになりたい場合は、描画でもサウンドでもシステムでもネットワークでも何でもできるし、何でもやりたいというスタンスの方が良いでしょう。プログラマーの職種などは入社後なら希望しだいでどうにでもなるため、まずは何でもやりたい、やれるという心意気が重要です。

そこで、アンリアルエンジン4(以下、UE4)の話に戻りますが、UE4は最近ハイエンド機で採用されてきたゲームエンジンとなっており、大抵のゲーム会社でUE4の知識がある人が不足しています。今までも、ゲームエンジンというと、クライエンジン、ユニティなどがありましたが、あまり定着せず、社内で独自に作っているゲームエンジンを使っている会社がほとんどだったと思います。それが、UE4は本格的に使用するというゲームソフトが近年増えてきており、それに合わせてベテランのゲームプログラマーもUE4を一から勉強している人がほとんどです。一から新しいものを身につけるには、時間がかかり大変なのですが、そのコストをかけてでもUE4を採用した方がメリットがあると思った会社が多くあるということでしょう。

実際、UE4を使用すると、今までのゲームプログラマーの数が1/2または、1/3でゲームが作れてしまうというのは大げさなことではありません。実際に少ない人数でゲームを制作することができます。それでは、ゲームプログラマーが余ってしまい、むしろ今後さらにゲームプログラマーになれる人が少なくなってしまうのではないかと思う人もいるかもしれません。

しかし、ゲーム会社としては、むしろ逆なこと方が多いと思います。少人数でゲームが作れるのであれば、もっとたくさんゲームを作ろうとなります。人数が1/3で済むのであれば、3本ゲームソフトが作れる。売り上げも3倍!なんて本気で思うのが、ゲーム会社の上層部です。

それはいいとして、少人数で作れることは、大人数で作るよりリスクが小さく、人を増やせば、その分ゲームをたくさん作れるとなれば、人をたくさん雇おうとするわけです。大人数でリスクが大きい場合は、人を増やしたところで、ゲームの本数は増えず、新人を雇っても人材育成くらいしかできません。

ということで、UE4が使えるゲームプログラマーを雇えば、作れるゲームソフトを簡単に増やせる流れになってきている今こそ、ゲームプログラマーに今からなりたい人はUE4を勉強することで、ゲームプログラマーになれる可能性が高くなります。

私がゲーム会社に入った頃の流行は、ダイレクトX(DirectX)でした。今もDirectXを勉強することは大きな強みとなり得ますが、やはり流行にのったものを勉強した方がゲームプログラマーになるには近道です。

実際に、UE4を勉強して、かなり使いこなせれば、グラフィックプログラマーとしては、かなり需要があると思います。

また、基本的なところで、C言語C++言語のスキルはどの程度あったらいいのかと気になる人もいると思いますが、「猫でもわかるゲームプログラミング」という本があるのですが、その本の内容がわかる程度であれば問題ないと思います。

また、ゲームシステムプログラマーや、システムプログラマー、サウンドプログラマーやオンラインプログラマーというのもあります。

ここで、穴場なのがサウンドプログラマーです。意外とサウンドに詳しいプログラマーというのは少ないもので、音波の波形の解析、デコード、エンコード関連をそこそこ勉強しておくと、かなり強みになります。サウンドプログラムをやっていたと面接でいうと、ちょうどサウンドプログラマーが一人ほしかったところだった、なんて言われることがよくあります。

そして、残りのゲームシステム、システム、オンラインですが、相当ハードルが高いです。その中でもまだ、取っ掛かりがあるのが、オンラインプログラマーです。しかし、オンラインプログラマーは、ゲームプログラマーというよりは、ネットワーク関連の知識に長けているシステムエンジニアよりの知識が必要であったり、一般企業のサーバー管理プログラマーなどの知識が必要なため、毛色が違います。もちろん、オンラインゲームを作りたいと思っている方は、オンラインプログラマーを目指すことがあると思いますが、オンラインプログラマーは、一般企業から転職してきた人や、ゲームなどを全然したことがない人で、IT技術などを大学で勉強してきた人と競うことになるため、ゲームが好きでゲームプログラマーを目指したみたいな人には、きついと思います。

それでも、目指すという方は、一度サーバーを自分で作ってみたり、2Dでいいのでオンラインゲームを自作してみたり、オンライン要素を含めたスマホゲームなどを作ってみて下さい。オンラインゲームの技術自体は、意外とシンプルで、描画プログラミングなどよりは、簡単に思えるかもしれませんが、その分、人によってスキルの差があまり出ないので、何かを作ったという実績が必要となります。

次に、システムプログラマーですが、システムプログラマーは、コントローラー入力やシーケンス処理、ローディング処理など、結構地味なことをするプログラマーです。地味なわりには、結構技術力が必要で、新卒などでゲームプログラマーを目指す人にとっては、そもそもモチベーションが沸かないかもしれません。しかし、ここがしっかりしていないと、しょっちゅうフリーズしたり、ロード時間が長すぎたり、操作感覚が悪かったりと全体的なゲームの印象が悪くなるため、とても重要なポジションです。

しかし、最近はUE4などのゲームエンジンがこの辺をほとんどカバーしてくれているので、昔ほど作業量は多くないと思います。(正直、UE4で一番微妙なのは、このシステム部分で、UE4唯一の不満点ですが…きっとエピック社さんが改善していってくれることを期待しています…)

システムプログラマーになれば、このUE4などのエンジン自体を改造したりするだけのプログラミングスキルも要求されます。一番、プログラミングスキルを要求される職種なため、誰にもC言語C++言語の知識で負けないくらいの勉強量が必要です。目指す人は、ゲームを作ってもいいですが、たくさんアプリやツールを作ってみて、そのアプリやツールが安定して、操作感がいいものになるように努力してみて下さい。

最後に、ゲームシステムプログラマーです。新卒や、中途採用でゲームシステムプログラマーをする人は聞いたことがありません。だいたい、そのプログラマーチームのリーダークラスの人が担当する印象です。ゲームプログラマーを目指す人にとって、ゲームの実際のゲームシステム部分を作ることをしたいと思う人も多いでしょう。

しかし、このゲームシステム部分を作るということは、システム、サウンド、オンライン、グラフィック全てを把握していなければ難しく、いきなり担当してできるものではありません。ゲームプログラマーになって、ゲームシステム部分を作りたい人は、入社してから、全ての職種を把握して、人一倍努力しましょう。いずれ、ゲームシステムの担当になれるはずです。

以上で、ハイエンド機のゲームプログラマーになるためのスキルとなります。

スポンサーリンク

 

まとめると、

・グラフィックプログラマー

  UE4 を使いこなす

・サウンドプログラマー

  音の波形データのデコード、エンコードを勉強する

・オンラインプログラマー

  サーバープログラミングを勉強する。

  オンラインゲームを作ってみる。

システムプログラマー

  C言語C++言語を人一倍勉強する。

  ツールやアプリを作ってみる。

・ゲームシステムプログラマー

  上記全ての知識を身につける。

といったところです。

 

今回は、このあたりで区切りたいと思います。

以上、ゲームプログラマーになるには?でした。