ゲームプログラマーになるには?仕事内容・スキルと私の転職体験

でも、「どんな仕事をするの?」「何を勉強すればいい?」「C++ができないと無理?」「未経験からでもなれる?」と調べ始めると、いろいろな情報が出てきますよね。^^;
ボクも最初からゲームプログラマーだったわけではありません。
サービス業からプログラミングを勉強して、Web・システム系のプログラマー、ゲームではないUnreal Engineの開発を経て、ゲーム会社へ転職しました。
振り返ってみると、そのとき持っていた経験を使って次の会社から評価される経験を一つずつ増やしていった感じなんですよね。
この記事では、ゲームプログラマーとはどんな仕事なのか、必要なスキル、向いている人、なる方法、未経験から目指す場合、転職・求人、年収まで全体像をまとめます。
そのうえで、ボク自身が実際に通ったルートや、ゲーム会社へ入ってから分かったことも紹介します。
ゲーム業界の職種全体から見たい場合はこちらもどうぞ。
→ゲーム業界の仕事・職種についてはこちら

メニュー
1.ゲームプログラマーとは?仕事内容は思っているより広い
ゲームプログラマーは、ゲームの仕様や企画を実際に動く形へしていく仕事です。
キャラクターを動かす、敵の処理を作る、UIを表示する。こうした分かりやすい部分だけでなく、実際には担当する範囲がかなり広いです。
ボク自身もゲーム会社に入る前後を含めて、UI、Actorなどゲーム内オブジェクトの制御、カメラ、通信、ツール開発、Python、自動テスト、最適化、コードレビューなど、いろいろな処理に関わってきました。

●ゲームの機能をプログラムで実装する
プレイヤーの操作、敵の挙動、アイテム、ステージ上の仕掛けなど、ゲームそのものの機能を実装します。
仕事では、ただ動かすだけではなく、「どこに処理を持たせるか」「あとから仕様が変わっても直しやすいか」なども考えながら作っていきます。
ゲーム会社へ入って感じたのは、仕様が最初から完全に固まっているとは限らないということでした。
途中で変わることもあるので、変更しやすい設計や、他の人が読んでも分かりやすいコードも大事になります。

●UI・カメラ・通信などもゲームプログラマーの仕事
ボクはUnreal Engineを使った開発で、Widget Blueprintを使ったUIやカメラまわりを触ることが多くありました。
UIも見た目だけではなく、「いつ表示するか」「どのデータを表示するか」「入力をどう受け取るか」など、裏側にはプログラムがあります。
ゲームによってはネットワーク通信や外部サーバーとの連携も必要です。
ここでは、ゲーム業界へ入る前に経験していたWebやサーバー側の知識も役立ちました。

●ツール開発・バグ修正・自動テスト・最適化もある
ゲーム画面に出るものだけを作るわけでもありません。
ボクの場合は、Pythonを使った開発用の仕組みや自動テストなどにも関わってきました。
バグを直したり、重い処理を調べたり、動作を軽くしたりするのも仕事です。
「動いたからOK!」では終わらないことも多いです。笑

●ゲームプログラマーとゲームエンジニアの違い
「ゲームプログラマー」と「ゲームエンジニア」は、会社や求人によって呼び方や担当範囲が違います。
ボク自身も「プログラマー」という言葉だけでは説明しきれない仕事をかなり担当してきました。
なので求人を見るときは、職種名だけで判断するより、実際に何を実装する仕事なのかを見る方が分かりやすいです。
ゲームロジック中心なのか、描画なのか、通信なのか、ツールなのか。それによって求められる技術も変わります。

2.ゲームプログラマーに必要なスキル・言語・ゲームエンジン
「ゲームプログラマーになるなら何の言語を勉強すればいい?」
これはかなり気になるところだと思います。
ただ、最初から全部を勉強する必要はありません。
作りたいもの、応募したい会社、使うゲームエンジンによって必要な技術は変わります。

●プログラミングの基礎とチーム開発の経験
ゲームエンジンの使い方だけでなく、プログラムそのものの基礎も少しずつ必要になります。
ボクも実務の中で、オブジェクト指向、クラス設計、継承、インターフェース、デザインパターンなどを勉強しました。
ゲーム会社へ転職したときには、チーム開発、コードレビュー、リーダー経験なども説明材料になりました。
最初から全部できる必要はないですが、仕事として続けるなら「どう書けばあとから直しやすいか」「他の人とどう開発するか」まで少しずつ広げていくことになります。

●C++とUnreal Engine
ボク自身が実務で長く使ってきた組み合わせです。
Unreal EngineではBlueprintだけでもいろいろなことができますが、仕事として深く関わっていくとC++を使う場面も出てきます。
ボクも最初からC++が得意だったわけではありません。
非ゲーム分野でUEを使い始めたころは、Blueprintを触りながら少しずつC++を覚えていきました。
なので、「C++を完璧にしてからUnreal Engineを始めよう」と考えなくてもいいと思います。
実際に何かを作りながら覚えていく方が、ボクには合っていました。

●C#とUnity
UnityではC#がよく使われます。
ボク自身は仕事ではUnreal Engine側の経験が中心なので、Unityについて「現場ではこうです」と深く語るつもりはありません。
ただ、最初の入口としては、UnityかUnreal Engineのどちらかを触って、実際に動くものを作ってみるのは分かりやすいです。
最初から両方を極める必要はないです。

●PythonやWeb系の経験もゲーム開発で役立った
これは転職してみて強く感じたところです。
ゲームプログラマーというと、C++やC#以外は関係ないように見えます。
でもボクの場合は、Python、JavaScript、TypeScript、Webフロントエンド、サーバー、API、ネットワークなど、それまで勉強してきたものが役立つ場面もありました。
もちろんゲーム開発そのものの経験とは違います。
でも、「ゲーム以外のプログラミング経験だから意味がない」わけではありません。

●DirectXやシェーダーなど興味のある技術は先に触っておく
ゲーム会社へ入ってから「もう少し早く勉強しておけばよかったな」と思ったのが、DirectXやシェーダーなど、グラフィックス寄りの知識でした。
これらがゲームプログラマーになるために全員必須、という意味ではありません。
ただ、実際に働いて感じたのは、すでに詳しい人には、その知識を使う仕事が集まりやすいということでした。
「仕事で必要になってから覚えよう」だけではなく、面白そうだと思った技術を少し先に触っておくと、あとで担当できる仕事の幅につながることがあります。

3.ゲームプログラマーに向いている人は?実務で感じた3つのこと
向いている・向いていないを一言で決めるのは難しいです。
ただ、ボク自身が仕事をしてきて「こういうことを楽しめる人は続けやすそうだな」と感じる部分はあります。

●ゲームが好きだけでなく、プログラムを作ることも楽しめる人
ゲームが好きなのはもちろん良いことです。
でも仕事になると、プレイする時間より、コードを書いたり、動かない原因を調べたり、仕様を読み直したりする時間の方が長くなります。
なので「ゲームが好きだから」だけではなく、実際にプログラムを書いて何かが動いたときに面白いと思えるか、一度試してみるのがおすすめです。
ボク自身は、採用されてからも休日にかなり勉強していましたが、面白かったので続けられました。

●仕様変更・バグ修正・試行錯誤を嫌いすぎない人
ゲーム開発では、最初に書いたコードがそのまま最後まで使われるとは限りません。
仕様が変わることもあれば、バグが出ることもあります。
「なぜ動かないんだろう」と調べて、直して、また試す。
こうした作業がずっと続くので、試行錯誤そのものを完全に苦痛だと感じると、つらいかもしれません。
逆に、原因が分かって直ったときの気持ちよさを楽しめるなら、かなり相性がいいと思います。

●ゲームプログラマーになってからも学び続けられる人
ゲームプログラマーになったら勉強が終わる、という感じではありませんでした。笑
描画、通信、ツール、最適化など、担当する仕事が変われば知らないことも出てきます。
ただ、全部を義務のように覚える必要もないと思っています。
「これ面白そうだな」と思ったものを触って、それが仕事につながる。
ボクはそんな感じで技術を増やしてきました。

4.ゲームプログラマーになるには?大学・専門学校・独学の考え方
ゲームプログラマーになる道は一つではありません。
大学や専門学校からゲーム会社を目指す人もいれば、独学や別業界のプログラマー経験から近づく人もいます。
ボク自身は学生から新卒でゲーム会社へ入ったルートではないので、ここでは学校選びを経験談のようには書きません。
親ページとして、まず考え方だけ整理します。

●学生から目指すなら学んだことと制作物が材料になる
学生から新卒で目指すなら、学校で何を学んだのか、何を作ったのかが自分を説明する材料になります。
大学、専門学校、独学のどれを選ぶにしても、名前だけではなく「そこで何を身につけるか」を見る方が大事だと思います。
ボク自身はこのルートではないので、大学と専門学校のどちらが有利かを一律には決めません。
進路を選ぶときは、興味のある会社の新卒採用情報や応募条件も確認しながら考えるのが確実です。

●大学・専門学校・独学のどれか一つを正解にしなくていい
ゲームプログラマーになる方法を調べると、「専門学校へ行く」「Unityでゲームを作る」「C++を勉強する」など、いろいろな方法が出てきます。
どれも入口にはなります。
でも、全員が同じ道を通る必要もありません。
ボク自身はサービス業からWeb・システム開発へ入り、そのあと非ゲーム分野でUnreal Engineを仕事にしてからゲーム会社へ転職しました。
かなり遠回りです。笑
それでも途中で身につけたものは、ゲーム会社へ入ったあとも使っています。

●資格は「持っているか」より、何を学んで何ができるかを見る
少なくともボクの場合、最初にプログラマーへ転職するとき資格は取っていませんでした。
その代わり、JavaScript、HTML、CSSを勉強して、小さなWebページを作っていました。
なので資格を否定するつもりはありませんが、「資格を取ってからでないと応募できない」とは考えなくていいと思います。
応募したい会社が資格を条件にしているなら別ですが、そうでなければ、学習と制作を止めてまで資格だけを集める必要はないです。

5.未経験からゲームプログラマーになるには?「何が未経験か」を分ける
転職でゲームプログラマーを目指すなら、「未経験」という言葉を全部ひとまとめにしない方がいいです。
同じゲーム業界未経験でも、すでにプログラマーとして働いている人と、仕事でコードを書いたことがない人では、次にやることが違います。

●ゲーム業界未経験とプログラマー未経験は別
Web、業務システム、アプリ、サーバー、ツール開発などで、すでにプログラマーとして働いているなら、その経験は材料になります。
チーム開発、Git、コードレビュー、設計、テスト、サーバー、UI、ツールなど、ゲーム以外でも共通する仕事があります。
ボクの場合はさらに、ゲーム会社へ転職する前に非ゲーム分野でUnreal Engineを実務利用できたことがかなり大きかったです。
ゲーム業界自体は未経験でも、UE経験のあるプログラマーとして見てもらえました。

●ボクはサービス業→Web→非ゲームUE→ゲーム会社と進んだ
改めて並べると、ボクはこんな感じでした。
↓
Web/システム系プログラマー
↓
ゲームではないUnreal Engine開発
↓
ゲームプログラマー
昔からゲームを作る仕事には興味がありましたが、自分には難しいと思っていました。
なので最初はゲーム会社ではなく、Web系のプログラマーを目指しました。
JavaScriptやHTML、CSSなどを勉強して、小さなWebページを作り、まずプログラマーとして働ける会社へ入りました。
その後、Web系の仕事をしながらUnreal Engineを触り、社内で提案したことをきっかけに、ゲームではないUE開発を実務で担当するようになりました。
UE、C++、Blueprintを仕事として使う経験が増えたことで、ゲーム会社へ応募したときも「ゲーム業界は未経験だけど、UEまで未経験」という状態ではなくなりました。

●プログラマー自体が未経験なら小さく作って一段目を作る
仕事でプログラムを書いた経験がまだないなら、まず「コードを書いた」「小さくても何か作った」という一段目を作るところからで大丈夫です。
ボクが最初に作っていたのも、JavaScript、HTML、CSSを使った一枚のWebページでした。
最初から大きなゲームを完成させたわけではありません。
本当に最初なら、講座やサンプルを自分なりに少し変えて、最後まで動かしてみるだけでも一歩です。
そこで面白いと思えたら、少しずつ実装を増やしていけばいいです。
完全未経験からゲーム業界を目指す場合は、学習・作品・自己PRまでこちらの記事で詳しくまとめています。
→未経験からゲーム業界へ転職する方法はこちら

●ポートフォリオが必要かは実務経験によって変わる
これは一律に「絶対必要」とは言えないと思っています。
ボクが最初にプログラマーへ転職したときは、自分で作った簡単なWebページがありました。
GitHubにも公開していて、その作品が採用された会社から声をかけてもらうきっかけになりました。
一方、ゲーム会社へ転職したときには、個人制作のゲーム作品、GitHub、動画は提出していません。
その代わり、Unreal Engine、C++、Blueprint、Python、Web開発、チーム開発など、仕事として説明できる経験がありました。
つまり、自分がプログラムを書けることを何で証明するかで考えると分かりやすいです。
完全未経験なら作品が大きな材料になりますし、すでに関連する実務経験があるなら、職務経歴そのものが材料になることもあります。

6.ゲームプログラマーの転職・求人は「今ある経験」から探す
ゲームプログラマーとして働く意思が固まってきたら、次は求人を見ていきます。
ここでも、「ゲーム業界経験があるか」だけではなく、自分が今何をできるのかを分けて考えるのが大事です。

●求人票では職種名より仕事内容と使用技術を見る
「ゲームプログラマー募集」と書かれていても、担当する仕事は会社やプロジェクトで違います。
C++なのかC#なのか、Unreal EngineなのかUnityなのか、クライアント側なのかサーバー側なのか。
求人票を見るときは、職種名だけではなく、何を作る仕事なのか、どの経験を求めているのかまで見ると、自分との距離が分かりやすくなります。
足りない技術が見つかれば、それが次に勉強するものになります。

●ゲーム業界未経験でも、今までの実務経験を全部ゼロ扱いしない
ボクがゲーム会社へ転職したときは、ゲーム業界自体は未経験でした。
それでもUE、C++、Web、Python、通信、UI、チーム開発、コードレビューなど、それまでの経験をまとめて説明しました。
ゲーム会社へ移るからといって、今までやってきたことを全部捨てる必要はありません。
むしろ「この経験はゲーム会社のどの仕事につながるだろう」と考えた方が、応募先も探しやすいです。

●直接応募と転職エージェントは両方選択肢にしていい
転職エージェントは必須ではありません。
気になる会社があれば直接応募してもいいですし、転職エージェントへ相談して求人を紹介してもらう方法もあります。
エージェントを使うなら、「ゲーム業界未経験だから無理ですか?」だけで終わらせず、
「この経験ならどの職種で評価されそうですか?」
「この会社はどんな経験を持つプログラマーを求めていますか?」
のように、今ある経験と求人をつなぐために使うと分かりやすいです。
ゲームプログラマー向けの転職エージェントについては、こちらで詳しく整理しています。
→ゲームプログラマー向け転職エージェントの選び方はこちら
ゲーム業界全体で比較したい場合はこちらです。
→ゲーム業界の転職エージェント比較はこちら

7.ゲームプログラマーの年収・給料は経験と担当領域で変わる
ゲームプログラマーの年収は、経験年数、担当領域、会社、役割などで変わります。
なので、「ゲームプログラマーなら○○万円」と一つの数字だけで考えない方がいいです。

●同じゲームプログラマーでも役割によって条件は変わる
同じゲームプログラマーでも、ゲームロジック、UI、通信、サーバー、グラフィックス、ツールなど担当領域が違います。
さらに、メンバーとして実装するのか、レビューや設計、リーダーまで担当するのかでも役割は変わります。
年収を見るときは職種名だけではなく、自分がどの技術や担当領域で評価されるのかも一緒に見る方が分かりやすいです。
なお、GDNaviでは以前の業界調査をもとに、ゲーム会社の職種別・年代別の年収データもまとめています。
現在の最新相場そのものではなく、職種や年代によってどのくらい差があったのかを見る参考としてどうぞ。
→ゲーム会社の職種別・年代別の年収データを見る

●年収だけでなく「次に積める経験」も見る
個人的には、年収と一緒にその会社でどんな経験を積めるかも見た方がいいと思っています。
ボクの場合、非ゲームでもUnreal Engineを実務で使えた経験が、その次のゲーム会社への転職で大きな材料になりました。
短期的な給料だけでは見えにくいですが、「次に何ができるようになるか」もキャリアではかなり大事です。
ゲームプログラマーになったあとも、専門分野を深くする、別の担当領域へ広げる、レビューやマネジメントへ進むなど、経験の増やし方はいろいろあります。

8.まとめ|ゲームプログラマーになる道は一つじゃない
ゲームプログラマーは、ゲームの機能を実装するだけでなく、UI、カメラ、通信、ツール、自動テスト、最適化など、かなり幅広い仕事があります。
必要なスキルも、C++やC#だけではありません。
応募する会社や担当領域によって変わりますし、WebやPythonなど別分野の経験が活きることもあります。
学生から目指す人と、社会人から未経験で目指す人、すでに別業界でプログラマーをしている人では、次にやることも違います。
ボク自身は、サービス業からWeb・システム開発へ進み、非ゲーム分野でUnreal Engineを実務にしてから、ゲーム会社へ転職しました。
かなり遠回りです。笑
でも、その途中で身につけたものはゲーム会社へ入ったあとも使っています。
だから、「今の自分にはゲーム開発経験がないから無理」と考えるより、今持っているものから、次に評価される経験を一つ増やす。
それでいいと思っています。
最初からゲーム会社へ行けそうなら、もちろん直接目指せばいいです。
難しければ、小さく何かを作る、プログラマーとして実務経験を作る、ゲームエンジンを触る、求人を見て足りないものを知る。
そこから次を考えていけば大丈夫です。
ではでは……がんばってー!



