ゲームプログラマーに向いている人とは?
ボクの実務経験から仕事内容を解説!

※まえおき
当サイトにはPR広告(企業の宣伝広告)を含んでおります!
私なりの正直な意見を書くようには努めておりますので、何卒ご了承ください!
(;´∀`)

ゲームプログラマーって、どんな仕事?

キャラクターを動かす。敵を動かす。C++でコードを書く。

もちろん、そういう仕事もあります。

でも実際にゲーム開発の仕事をしてみると、それだけではありませんでした。

ボク自身、Unreal Engineを使った開発を中心に、ゲーム内オブジェクトの制御、UI、カメラ、通信、Pythonを使ったツール、自動テスト、最適化、コードレビューなど、いろいろな仕事に関わってきました。

ゲーム画面に直接見える処理もあれば、開発している人しか目にしない仕組みを作ることもあります。

この記事では、ゲームプログラマーの仕事内容を「仕事の流れ」「実際に作るもの」「担当分野」「使う技術」「チームでの仕事」に分けて紹介します。

「ゲームプログラマーに興味はあるけど、毎日何をしているのか分からない」

「自分にも向いている仕事なのか知りたい」

そんな人が、実際の開発現場を少しイメージできるところまで書いてみます。

1.ゲームプログラマーの仕事内容とは?

ゲームプログラマーは、企画や仕様として決まった内容を、プログラムによって実際に動く形へしていく仕事です。

例えば「ボタンを押したらキャラクターがジャンプする」という一つの動きにも、入力を受け取る処理、キャラクターの状態、アニメーション、当たり判定など、いろいろな仕組みが関わります。

そして仕事では、ただ一度動けば終わりではありません。

仕様変更に対応できるか。ほかの機能に影響しないか。処理が重くならないか。ほかの人があとから見ても分かるか。

こういったところまで考えながら作っていきます。

●ゲームの仕様をプログラムとして実装する

ゲーム制作では、プランナーなどが考えた仕様を確認し、必要な機能をプログラムとして実装します。

代表的なものを挙げると、

  • プレイヤーの操作やキャラクター制御
  • 敵やNPCの挙動
  • アイテムやステージ上の仕掛け
  • ゲームルールや進行管理
  • UIやメニュー画面
  • カメラや演出の制御

などです。

ただし、会社やプロジェクトによって担当範囲はかなり違います。

ボク自身も「ゲームプログラマーになったらゲーム部分だけを書くんだろうな」と思っていましたが、実際にはUI、カメラ、通信、ツールなど、かなり幅広い処理に関わってきました。

ゲームプログラマーという名前だけでは仕事内容を一つに決められないというのは、実際に働いてみて強く感じたところです。

●ゲームプログラマーとゲームエンジニアは違う?

「ゲームプログラマー」と「ゲームエンジニア」は、会社や求人によって使い方が違います。

プログラマーという名前でもゲームシステムからツールまで広く担当することがありますし、エンジニアという名前でもゲーム部分の実装を担当することがあります。

そのため、職種名だけで仕事内容を決めつけるより、求人やチームの中で実際に何を担当するのかを見る方が分かりやすいです。

この記事では、ゲームを作るためのプログラムや開発システムに関わる仕事を、まとめて「ゲームプログラマー」として説明していきます。

2.ゲームプログラマーの仕事の流れ

ゲームプログラマーというと、一日中ひたすらコードを書いている姿を想像するかもしれません。

もちろん実装に集中する時間はあります。

でも実際の仕事では、仕様を確認する → 実装する → 動かす → 問題を調べる → 修正するという流れを何度も繰り返します。

そこに他職種との相談やコードレビューなども入ってきます。

●企画や仕様を確認して打ち合わせをする

まず「何を作るのか」を理解しないとプログラミングはできません。

企画書や仕様書を読んだり、プランナーやほかのプログラマーと話したりして、必要な処理を整理します。

実際には仕様書を読んだだけでは判断できないこともあります。

「この状態でボタンを押したらどうなる?」

「この値はプランナー側で調整できるようにする?」

「通信が切れた場合はどうする?」

こういう細かい部分を確認しながら、実装できる形に落とし込んでいきます。

仕事をしていて感じるのは、仕様を理解すること自体がプログラミングの一部だということです。

●プログラミングして機能を実装する

仕様が整理できたら、実際にコードやゲームエンジンの機能を使って実装します。

ボクの場合はUnreal Engine、C++、Blueprintを使う仕事が中心です。

ただ、実装するときに考えるのは「とりあえず動くか」だけではありません。

既存の仕組みを調べる。

どのクラスに処理を持たせるか考える。

同じ処理を別の場所からも使えるようにする。

仕様が変わったときに修正しやすくしておく。

チーム開発では、こういった設計も仕事になります。

特に大きなプロジェクトになるほど、自分だけが理解できる作り方ではあとで困るので、周囲と合わせて作ることが大切になります。

●動作テスト・デバッグ・バグ修正をする

実装したら、実際に動かして確認します。

一度書いたコードが一発で全部正しく動く。

……毎回そうなら最高なんですけどね。笑

実際には、

  • 特定の条件だけ動かない
  • 想定していない状態になる
  • 別の機能に影響が出る
  • 特定の順番で操作すると不具合が起きる

など、いろいろなことが起こります。

そこでログを確認したり、処理を追ったり、再現条件を探したりして原因を切り分けます。

原因を見つけて修正し、もう一度確認する。

このデバッグ・動作テスト・バグ修正も、ゲームプログラマーの大事な仕事内容です。

●機能改善や仕様変更、アップデートにも対応する

一度作った機能でも、それで必ず完成とは限りません。

実際に遊んでみて、

「もう少し操作しやすくしたい」

「この仕様では遊びにくい」

「別の機能を追加したい」

となることがあります。

開発中に仕様が変わることもありますし、リリース後も運営・アップデートを続けるタイトルなら機能追加や不具合修正が続きます。

ボク自身も実務を通して、あとで変更される可能性を考えて作ることを以前より意識するようになりました。

最初から未来の変更を全部予測することはできません。

でも「ここは変わりそうだな」と考えながら設計しておくと、あとでかなり助かることがあります。

3.ゲームプログラマーは具体的に何を作る?

「ゲームをプログラミングする」と言っても、ゲームの中にはたくさんの機能があります。

ここからは、ゲームプログラマーが扱う代表的な仕事と、ボク自身が実際に関わってきた領域をもう少し具体的に見ていきます。

●キャラクター・敵・ゲームシステム

一番イメージしやすいのは、プレイヤーが直接触れるゲーム部分です。

キャラクターの移動や攻撃、敵の行動、アイテム、ステージ上の仕掛け、ゲームルールなどを実装します。

同じ「キャラクターを動かす」でも、アクションゲームとシミュレーションゲームでは必要な仕組みがかなり違います。

ゲームごとに仕様が違うので、毎回同じものを作る仕事ではありません。

そこが難しいところでもあり、面白いところでもあります。

●UI・メニュー画面

UIもプログラマーが深く関わる部分です。

ボクもUnreal EngineのWidget Blueprintを使ったUI実装に関わってきました。

UIというとボタンや文字の見た目を想像しやすいですが、プログラマー側では、

  • いつ画面を表示するか
  • どのデータを表示するか
  • 入力をどう受け取るか
  • ボタンを押したとき何を実行するか
  • ゲーム本体と表示をどう同期するか

といった裏側を作ります。

デザイナーが作った見た目と、ゲーム側のデータや処理をつなぐ仕事ですね。

見た目はシンプルな画面でも、裏側では意外といろいろ動いています。

●カメラやゲーム内オブジェクトの制御

カメラもゲームの操作感や見せ方に大きく関わります。

プレイヤーを追いかけるカメラ。

特定の場面で切り替わるカメラ。

演出用のカメラ。

状況によって移動や回転を制限するカメラ。

ボク自身、カメラまわりの処理にはかなり関わってきました。

ほかにも、Unreal EngineでいうActorのようなゲーム内オブジェクトを、生成したり、配置したり、状態に応じて動かしたりする処理があります。

プレイヤーから見えるゲーム世界の裏側には、こうした細かな制御がたくさんあります。

●グラフィック・描画・エフェクト

ゲーム開発には、描画やシェーダー、エフェクトなどを専門的に扱うプログラマーもいます。

この分野はボク自身、ゲーム会社へ入ってから「もっと早く勉強しておけばよかった」と感じたところです。

DirectXやシェーダーなどに詳しい人には、やはりその知識を必要とする仕事が集まりやすいと感じました。

全員がグラフィックスプログラマーになる必要はありません。

ただ、ゲームプログラマーの中にもこうした専門分野があり、得意分野によって担当する仕事が変わっていくことがあります。

●ネットワーク・通信

オンライン機能のあるゲームでは、ネットワーク通信も必要です。

プレイヤー同士の状態を同期したり、サーバーとデータをやり取りしたり、通信エラーを考慮したりします。

ボクの場合はゲーム業界へ入る前にWeb・システム系の開発をしていたので、サーバーやAPI、ネットワークの知識が役立つ場面もありました。

ゲームプログラマーになる前にやっていたことが、あとから別の形でつながることもあるんですよね。

ゲーム以外のプログラミング経験が全部無駄になるわけではありません。

●開発ツールや自動化

これはゲームを遊んでいるだけでは、なかなか見えない仕事です。

ゲームそのものではなく、ゲームを作る人が使う道具を作ることもあります。

ボク自身もPythonを使ったツール開発や、自動テストなどに関わってきました。

例えば、手作業で何度もやっている処理を自動化できれば、開発時間を減らせます。

人が毎回確認していたものを自動テストできれば、ミスに早く気付けることもあります。

画面に派手なエフェクトが出る仕事ではありませんが、開発チーム全体を支える重要な仕事です。

個人的には、こういう「面倒な作業を仕組みで楽にする」仕事もプログラミングの面白さだと思っています。

●最適化・パフォーマンス改善

ゲームが動いた。

よし完成!

……とはならないこともあります。笑

フレームレートが落ちる。

ロードに時間がかかる。

メモリを使いすぎる。

同じものを大量に表示したら重くなる。

こうした問題があれば、どこに負荷がかかっているのかを調べて改善します。

ボクも最適化や、処理負荷を考えた仕組みづくりに関わってきました。

「動くものを作る」だけではなく「必要な環境でちゃんと動くものにする」ところまで見るのも、ゲームプログラマーの仕事です。

4.ゲームプログラマーは担当分野によって仕事が違う

ここまでの内容を見ても分かるように、ゲームプログラマーの仕事内容はかなり広いです。

そのため、会社やプロジェクトの規模によっては担当を分けて開発します。

呼び方は会社ごとに違うので、ここでは代表的な分け方として紹介します。

●ゲーム部分を作るプログラマー

キャラクター、敵、ゲームルール、UI、カメラなど、プレイヤーが直接触れる部分を担当します。

「ゲームプログラマー」と聞いて、多くの人が最初に想像する仕事だと思います。

ゲームエンジンを使いながら、プランナーやデザイナーと相談して実装していくことが多い領域です。

●サーバー・ネットワークを担当するプログラマー

オンラインゲームやネットワーク機能があるタイトルでは、通信やサーバー側を中心に担当するプログラマーもいます。

ゲーム画面を直接作る仕事とは少し違いますが、オンライン機能を成り立たせるためには欠かせません。

Webやサーバー開発の経験がつながりやすい分野でもあります。

●ゲームエンジンや基盤を担当するプログラマー

描画、メモリ、ファイル管理、プラットフォーム対応など、ゲーム全体の土台になる部分を扱う人もいます。

ゲームの一機能というより、その機能を作るための基盤を支える仕事です。

専門的な知識が必要になる分野も多く、ゲームプログラマーの中でもかなり技術寄りの担当です。

●ツールや専門機能を担当するプログラマー

開発ツール、グラフィックス、AI、サウンドなど、特定の領域を専門的に担当する場合もあります。

大きなプロジェクトでは担当が細かく分かれることがありますし、小さなチームでは一人がいくつもの領域を見ることもあります。

なので求人を見るときも、「ゲームプログラマー募集」という職種名だけではなく、業務内容や使用技術まで確認した方が実際の仕事を想像しやすいです。

5.ゲームプログラマーが仕事で使う技術

ゲームプログラマーが使う言語や開発環境も、担当するゲームや会社によって違います。

ここでは、今回の「仕事内容」を理解するために代表的なものだけ紹介します。

何を勉強すればゲームプログラマーになれるのかについては、別の記事で詳しく扱っています。

●C++とUnreal Engine

ボク自身が実務で長く使ってきた組み合わせです。

Unreal EngineではBlueprintだけでもさまざまな機能を作れますが、仕事として深く関わっていくとC++を使う場面もあります。

ボクも最初からC++が得意だったわけではありません。

Blueprintを触りながら少しずつC++を覚え、実務の中で設計やクラス構成についても勉強していきました。

C++とBlueprintのどちらか一方だけではなく、状況に合わせて使い分けることもあります。

●C#とUnity

UnityではC#が使われます。

ただ、ボク自身の仕事はUnreal Engine側の経験が中心です。

そのため、Unityの現場について自分の経験のように細かく語ることはしません。

ここで伝えたいのは、ゲームプログラマー全員が同じ言語やゲームエンジンを使うわけではないということです。

求人でも、使用しているゲームエンジンや言語によって求められる経験は変わります。

●Python・Web・バージョン管理なども使う

ゲーム開発だからといって、ゲーム専用の技術だけを使うとは限りません。

ボクの場合はPythonによるツール開発のほか、Web、サーバー、API、ネットワークなど、それまで経験してきた知識が役立つ場面もありました。

チームでコードを管理するならGitなどのバージョン管理も使います。

ゲーム本体のコードだけではなく、開発環境やチーム開発を支える技術も仕事の一部です。

6.ゲーム開発は一人ではなくチームで進める

プログラマーというと、「一人で黙々とコードを書く仕事」というイメージもあるかもしれません。

集中して一人で実装する時間はもちろんあります。

でも、ゲーム開発はチームで行うので、実際にはかなり人と話します。

●プランナーやデザイナーなど他職種と連携する

ゲームはプログラマーだけでは作れません。

仕様を考えるプランナー。

キャラクターや背景、UIを作るデザイナー。

アニメーションやサウンド、演出を担当する人。

いろいろな職種と相談しながら一つのゲームを作ります。

「このUIはどう動かしたい?」

「この演出中はプレイヤーを操作できる?」

「この仕様だとこういう問題が出そう」

といった話をしながら、技術的にどう実現するか考えます。

言われたものをそのままコードにするだけではなく、実現方法を一緒に考えることもプログラマーの仕事です。

●プログラマー同士でコードレビューをする

ボクもチーム開発やコードレビューに関わってきました。

自分では問題ないと思っていたコードでも、ほかの人が見ると、

「こっちの方が分かりやすい」

「この処理は共通化できる」

「このケースでは問題が起きるかもしれない」

と気付くことがあります。

逆に、自分がほかの人のコードをレビューすることもあります。

コードレビューは間違い探しだけではなく、チームの作り方を揃えたり、知識を共有したりする役割もあります。

●コミュニケーション能力も仕事で使う

「プログラマーだから人と話さなくていい」という仕事ではありません。

分からない仕様を確認する。

問題が起きたら共有する。

自分の実装方法を説明する。

ほかの担当と影響範囲を相談する。

こういうやり取りは普通にあります。

話が上手でなければダメ、という意味ではありません。

でも、必要なことを確認して、相手と認識を合わせる力はプログラミングと同じくらい仕事を進めるうえで大切だと感じています。

7.ゲームプログラマーに向いている人

仕事内容が分かってくると、「自分に向いているのか」も気になりますよね。

向き不向きを一つの条件で決めることはできません。

ここでは、ボクが実際に仕事をしていて「こういう人は続けやすそうだな」と感じる特徴を挙げます。

●プログラミングそのものを楽しめる人

ゲームが好きなのは良いことです。

でもゲームプログラマーの仕事では、ゲームを遊ぶ時間より、コードや仕様や不具合と向き合っている時間の方が長いです。

「なぜ動かないんだろう?」

「もっと分かりやすく作れないかな?」

「この処理、自動化できないかな?」

こういうことを考えるのが嫌いではない人は、かなり相性がいいと思います。

ゲームが好きかどうかに加えて、作る過程そのものを楽しめるかは大きいです。

●問題を一つずつ切り分けて考えられる人

バグが出たときに「なんか動かない」で止まってしまうと、なかなか原因を見つけられません。

どこまでは正常なのか。

どの条件で起きるのか。

何を変えると再現しなくなるのか。

ログには何が出ているのか。

一つずつ切り分けて調べていきます。

プログラミングでは、こういう問題解決を何度も繰り返します。

パズルを解くように原因を追うことを面白いと思える人には向いていると思います。

●知らないことを勉強し続けられる人

ゲームプログラマーになったら勉強終了!

とはなりません。笑

ボクもゲーム会社に入ってから、「これ知らないな」「ここ弱いな」と思う技術が山ほど出てきました。

特にDirectXやシェーダーなどは、もっと早く勉強しておけばよかったと感じた分野です。

必要になったときに覚えることもありますし、興味を持った技術を先に触っておくことで、あとから担当できる仕事が増えることもあります。

分からないことが出てきたときに、調べることを苦にしないのはかなり大事です。

●チームで相談しながら進められる人

全部を自分一人で解決しようとすると、かえって時間がかかることがあります。

詳しい人に聞いた方が早いこともありますし、自分だけで決めるとほかの担当に影響が出ることもあります。

分からなければ聞く。

問題がありそうなら早めに共有する。

意見が違えば理由を話してすり合わせる。

ゲーム開発はチームで進めるので、こういうことを自然にできる人は仕事を進めやすいと思います。

8.まとめ|ゲームプログラマーの仕事はコードを書くことだけじゃない

ゲームプログラマーの仕事内容を一言でいえば、ゲームの企画や仕様をプログラムによって動く形にする仕事です。

でも、実際の現場ではそれだけではありません。

  • 企画や仕様の確認・打ち合わせ
  • プログラミングと機能実装
  • 動作テスト・デバッグ・バグ修正
  • UIやカメラなどの制御
  • ネットワーク・通信
  • 開発ツールや自動化
  • 最適化・パフォーマンス改善
  • コードレビューや他職種との連携

こうした仕事を、担当分野やプロジェクトに応じて行います。

ボク自身もゲーム会社へ入る前は、「ゲームプログラマー」という一つの職種にここまでいろいろな仕事があるとは思っていませんでした。

でも逆に言えば、そこが面白いところでもあります。

ゲーム部分を作るのが好きな人。

UIが好きな人。

通信が好きな人。

グラフィックスが好きな人。

ツールを作って開発を楽にするのが好きな人。

同じゲームプログラマーでも、得意分野は人それぞれです。

「ゲームプログラマーになったら、この仕事だけをする」という職業ではありません。

仕事内容を見て「ちょっと面白そうだな」と思ったなら、次は実際にどうやってゲームプログラマーを目指すのかを見てみてください。

ゲームプログラマーになるまでの勉強や進み方、ボク自身がゲーム会社へ転職するまでの流れはこちらで詳しくまとめています。
→ゲームプログラマーになるには?仕事内容・必要スキルと実際に転職するまでの話

ではでは……がんばってー!