ゲームエンジニアとは?仕事内容や必須言語などを徹底解説

ゲームエンジニアとは?仕事内容や必須言語などを徹底解説

ゲームエンジニアの仕事とは?ゲームエンジニアの仕事は、ゲーム開発の進捗状況やアサインされるコンテンツのプラットフォームなどによって大きく変わります。クライアント側なのか、サーバー側なのか、コンシューマなのか、アプリなのか、開発の進行状況はどうなのか、何処にアサインされるのかで業務が大きく変わります。

基本的にはいずれかのプログラミング言語を用いて、プランナーの仕様書、設計図に基づき機能を作り、エンドユーザーとコンピュータの橋渡しを最適に行う作業になります。

一般的にITやシステム構築の世界では「システムエンジニア(SE)」、「プログラマー(PG)」という職種分けがあります。それぞれは上流工程(クライアントの窓口となって仕様を構築する)と下流工程(仕様に沿ったプログラミングコードを書く)というように作業が分担化されています。また、小規模なプロジェクトや組織の場合、それらを兼務して進めることも珍しくはありません。

ゲーム制作の現場にも「ゲームエンジニア」という仕事・職種が存在します。ただ一括りにゲームエンジニアといっても、彼らの仕事は多種多様。様々な役割があります。そんなゲームエンジニアの現在地について、少し掘り下げて解説します。

ゲームの種類と開発者の役割現在ゲームユーザーが親しむゲームと言えば、スマートフォンやタブレットのGoogle PlayやApp Storeからダウンロードして遊ぶモバイル=スマートフォンゲーム(=スマホゲーム、英語ではSmart phone Games)等の携帯ゲーム機とPlay Stationなどの据え置き型のゲーム機からプレイするコンシューマーゲームに区分されます(英語では据え置き型ゲームを意味するConsole Gamesと呼称)。この2種に大別されるゲームも、開発者サイドからすると作り方は全く異なり、それに対するゲームエンジニアのアプローチも変わります。

平易に言えば、ゲームエンジニアとはパソコンに向かってプログラミング言語を使いながらコード入力を行い、仕様(設計図)に従った挙動をさせる業務担当者といえます。そんなゲームエンジニアも開発対象やさらに細かい役割分けによって遂行する業務も変わってきます。下記4種はその中でもほんの一部のエンジニア業務・職種をピックアップしたものの例にすぎません。実態、実情は会社や組織によって変わるため、エンジニアのあり様もまた変わってくるでしょう。


1.クライアントエンジニアゲームにおいて最も重要なユーザーの目に見える部分を設計します。企画の段階から携わり、開発設計、プログラミング、コーディング、動作テスト、デバッグに至るまで、リリース後も運営保守全てにわたって関わります。比較的小さな組織の場合は小回りの利く開発を行うことが多く、フロントからバックまで携わる領域は広いです。


2.サーバーサイド・インフラ系エンジニア今やゲームはオフラインだけで成立することは珍しく、据え置き機のゲームでも携帯機でのゲームでもオンライン機能は実質必須となっています。そうしたネットワークを通したゲームサービスを提供するためのインフラ設計、構築、運用などの業務に携わるのがサーバーサイド、インフラ系を開発するエンジニアです。本業務は主にバックエンド領域の開発が多く、中でもサーバーサイドのロジック開発やネットワーク、ストレージ、セキュリティなどの開発などが主業務となります。具体的にはPC/スマホ/据え置き型向けのネットワークゲームや各種プロモーションサイト等のインフラ、会員情報管理、課金決済を行うWebサイトのインフラ設計、構築、運用などにあたります。


3.ツール開発系エンジニア大規模化、複雑化するゲーム開発現場では、クイックなイテレーション(反復)開発の実現や、不具合(バグ)検出の自動化はゲーム開発に不可欠な要素になっており、年々重要度も増しています。ツール開発系エンジニアは、自動化・高速化による開発効率を向上させる業務を行います。 ゲームメーカーやディベロッパーによっては、既存のCI/CDツールに留まらず、ゲームクリエイターを支える自動化ツールの開発やシステム提案なども行います。 


ゲームエンジンについて現在のゲーム開発現場では、一から何かを制作するのではなく、ゲームエンジンを利用して開発するゲーム制作が一般的です。では、ゲームエンジンとは一体何でしょうか。

ゲームエンジンとは、ゲーム開発のための仕組みを提供するゲーム専門の統合開発環境です。現在のゲームコンテンツは、数十年前のシンプルな8ビットのTVゲーム時代に端を発し、様々に変化や広がりを見せており、非常に複雑な様相を呈しています。

小規模でシンプルなゲームであれば、単一的に開発を進めれば良かったのかもしれませんが、現代のゲーム開発は、複合的に様々な要素や処理(3D描画処理、物理演算、衝突判定、サウンド入出力等...)を考慮しながら、膨大に処理し、かつ丹念に作り上げていかなくてはなりません。

更に昨今では複数のプラットフォームでのマルチ展開が普通となり、内部構造の違う複数の機種に対応するプログラムの必要性が高まっています。ゲームエンジンはそのような課題を解決するために存在します。ゲームエンジンは複雑なゲームを作り上げる上で必要となる各種機能をあらかじめ開発者に提供し、視覚的に操作をしやすくしたり、簡単に複数プラットフォームに対応できるようにする機能を備えたエンジニアにとっては欠かせない総合開発環境となっています。

何から何まで自身で作成する必要がなく、ある程度のところまでゲームエンジンに任せることで開発工程は効率・短縮化され、コンテンツの質的向上により多くの時間を割くことが可能になり、延いてはゲームそのもののクオリティも向上するという好循環を作り上げます。たとえば非常にシンプルなゲームの場合、ソースコードをほとんど書かなくても画面の操作だけでゲームを作り上げることもできたりします。また、ゲームエンジンにも特長や特性があり、開発するゲームのタイプによって使用するゲームエンジンも変わります。

初心者にもやさしく、モバイルゲームアプリ開発に強いUnityUnity(ユニティ、Unity Technologies=本社・米国サンフランシスコ)はゲーム開発全体に使用される開発プラットフォームのうち、全世界においてトップシェアを誇るゲームエンジンです。特に強みを持つとされるモバイルゲーム市場(スマホゲームアプリ市場)では約50%、AR/VRコンテンツにおいては約60%を超えるシェアを獲得していると言われています。特徴は以下の通りです。

使用言語 C#
日本語文献 多数
強み 開発のしやすさ
使用料 基本無料(プランによって機能が異なる)
※但し一定の収益や調達額を上回る時点で使用料は発生
おススメ モバイルゲーム開発

Unityは操作が比較的分かりやすく、ゲームエンジニアのみならず、プランナーやデザイナーなども開発に参加できるようになっています。簡単な3Dゲーム制作であればプログラミングの必要性も少なく、操作に慣れてくればデザイナーの方がユーザーインターフェースやアニメーションの実装を行うことも可能でしょう。初心者が難しいとされてきた3Dゲーム開発も、Unityではそれを可能としています。キャラクターを自由に動かし様々なステージを設置するなど、専門知識がなくとも比較的容易に実装できるように設定されています。さらにプログラミング言語を用いることによってより高度な開発も可能です。このように、ゲーム開発の裾野が広がる機会を大幅に与えるゲームエンジンこそUnityの真骨頂といったところでしょう。


コンシューマーゲーム開発に強みをもつUnreal EngineUnreal Engine(アンリアル・エンジン)は、米国ノースカロライナ州ケーリーに本社を置くEpic Games(エピックゲームズ)によって開発されているゲームエンジンです。1998年、エピックゲームズがその最初期にあたる「Unreal Engine1」をリリースし、以降自社開発の多くのゲームで採用されています。日本のゲームでは「鉄拳(バンダイナムコ)」「キングダムハーツ(スクウェア・エニックス)」の各シリーズなどがUnreal Engine(以下UE)を採用し、制作されています。

UEはこれまで「5」までがリリースされており(フルバージョンは2022年4月6日にリリース済み)、各シリーズは「UE4」「UE5」というように表記することが一般的です。UEの特徴は以下となります。

使用言語 C++
日本語文献 少数
強み 美麗なグラフィック
使用料(ロイヤリティ) 全機能無料
※但し一定の収益を上回る時点で使用料発生
おススメ コンシューマーゲーム開発

UEでは、プログラミングの知識が多くない人でも直感的に操作出来るBlueprint(ブループリント)機能が搭載されており、比較的容易にゲーム開発が行えるようになっています。エンジニアではなく、プランナーでもMAP配置ができるなど革新的な進化を遂げています。


ゲームエンジンの功績ゲーム開発者、またはゲーム開発会社、メーカーは、ゲームエンジンを利用することで、非常に安価で本格的なゲーム制作が出来るようになりました。開発者にとっては便利すぎるがゆえに、プログラミング言語への理解が浅くても、一定のクオリティを保った形で完成させることが可能になっています。


ゲーム開発現場に対するゲームエンジンの貢献度については、以下3点が特に大きいと言えます。

① ワンソースコードでマルチプラットフォーム展開(スマホゲーム、ウェブアプリ、コンシューマーゲーム等)を可能にした。
② Android端末などの様々な解像度が存在する端末にも対応できるようにアスペクト比自動調整などを可能にした。
③ 省力化(人件費削減等)により安価で開発を可能にした。


概説:プログラミング言語ここでは、ゲーム開発現場で使用されているプログラミング言語について取り上げます。多くのプログラマーはこの中の言語の複数を自在に操ることでプログラムを制御しています。ゲームエンジン隆盛の現在だからこそ、言語を学んでおくことはエンジニアにとっては欠かせません。言語を使いこなし、さらにその先には特定の言語を極め、専門家の道を歩んだり、または幅広く携わり使いこなすマルチなプログラマーへの道へとつながっていくでしょう。どちらにとっても、プログラミング言語はゲームプログラマーにとって必須能力です。

プログラミング言語の世界はトレンドの変化も早いので、より優れたものが生まれると一気に開発環境が変わってしまうことがあります。 また一度下火になったとしても、新しいバージョンや追加機能によって主流に戻ることもよくあります。 たとえエキスパートを目指すとしても、 他の言語の基本部分は押さえておく必要はあるでしょう。マルチプログラマー路線で行く場合も、各言語の最新情報、プラットフォーマーの採用動向などは常にチェックしておく姿勢が肝要です。以下、主だったプログラミング言語について挙げていきます。

コンパイラ言語コンピュータが読み取れる形に変換圧縮(コンパイル)して使用する。人の言語を機械に翻訳して指示を与えるための言語。大元は現在でも使われている1972年に開発されたC言語です。コンパイル後は機械語で機械に直接指示を出すため、処理は高速です。
ゲーム開発では最もポピュラーな言語系です。


特色

動作速度 高速
言語習得 比較的難解
動作確認 都度コンパイルするため時間が必要
開発環境 大規模向け

C++より複雑なプログラミングを管理運用しやすく実現するため、Cを発展継承させたプログラミング言語です。コンパイルして実行するため速度が速いことが特徴です。ゲームではPlayStation2などのコンシューマーゲーム機で使われるようになり、現行のPlayStation5、XboxやNintendo Switchなどの開発現場でも欠かせないプログラミング言語です。ゲームエンジンにおいては、Unreal Engineに採用されているほか、XboxやWindowsのDirectXもベースはC++です。ゲームに関するあらゆることを実行できる万能型のプログラミング言語です。コンシューマーゲームの開発に携わるゲームプログラマーやUnreal Engineを使う場合は習得必須の言語です。


C#Unityの登場により認知度が一気に高まったプログラミング言語です。C#はマイクロソフト社が開発した言語で、CおよびC++の後継言語と位置づけられています。スマホアプリゲームをはじめ、コンシューマーゲーム、PCゲーム、XRコンテンツの開発にも使われており、Unityと共に今やゲーム開発にはなくてはならない言語といえます。Unityは様々なプラットフォームに対応した開発環境として、多くのゲーム会社で利用されているので、これからゲームプログラマーを目指す人にとっては、非常に重要なプログラミング言語といえます。


JavaJavaは、米国オラクル社の登録商標であるプログラミング言語とソフトウェアプラットフォーム総称のブランドを指します。 Androidの基本プログラミング言語はJavaとなっており、ゲームエンジン等を使わずに開発する場合はJavaで開発するパターンが多いです。ですがJavaは必ずしもAndroidに特化している訳ではなく、様々な開発現場やアプリケーションサーバでも活用されています。Javaがサーバーでも使用されるのは、PHPなどのスクリプト言語より処理能力に優れていることが理由です。 ただし、運用面ではメンテナンス時やホットデプロイなどにテクニックを要します。スマートフォンのアプリでは、iOSとAndroid両方のプラットフォームでのリリースがスタンダードになっています。Unity等のゲームエンジンを用いた開発では不要なことが多いですが、ゲームエンジンを用いない開発、もしくはゲームエンジンでは対応できない高度な開発が必要な場合は必修のプログラミング言語ともいえます。


SwiftSwiftはObjective-Cの後継言語として登場したiOS向けアプリ開発に使用するプログラミング言語です。Objective-Cと同様、Apple製品上でアプリを動作させるので、開発環境として使える機材もMacだけです。そのためあなたがもし現在Windows環境のみ所持している場合、機材も各ソフトウェアのアカウントなども合わせて用意する必要があります。ただし、Swiftは覚えるのが比較的平易で、マスターまでの学習ハードルやコストは低いことが特色でもあります。各業界での開発現場では採用率は上がっていますが、ゲーム開発現場では要求されるケースは少ないでしょう。ですがスマートフォンのシェアは国内ではiOS(iPhone)の人気が非常に強いため、決して無視できない市場です。 iOS向けアプリやゲーム開発で要求されるケースもありますが、Java同様Unity等のゲームエンジンを用いる場合は不要になる場合が多いです。

インタプリタ言語可読性に優れ、簡易的に記述できる言語です。開発や学習への難易度が低く、すぐに実行が可能です。また、ライブラリが豊富といった特徴が挙げられます。スピード感ある開発現場に適していることから、Webアプリなどのフロントエンド、バックエンドをはじめとして、幅広く開発現場で活用されています。


特色

動作速度 低速
言語習得 比較的容易
動作確認 容易
開発環境 小規模向け

PHPPHPはスマートフォンアプリや、ソーシャルゲームのサーバーなどでよく使われるサーバーサイドのプログラミング言語です。PHPは文献が豊富で、ベーシックな学習環境が整っています。 PHPでの開発に際しては、基礎部分や汎用性の高いものを構造化したフレームワークが導入されていることも多く、実際の開発現場ではPHPだけでなくフレームワークへの理解も必要となります。PHPで構築したプログラムはサーバーにデプロイするとすぐに反映されることも特徴です。比較的開発が進みやすく、需要は当面尽きないことが予想されます。どちらかというとゲームそのものより、ゲーム内の掲示板、問い合わせフォームや各種データのやり取りのあるWebページ生成などで使われています。サーバーエンジニアとしてのキャリアを積みたいのであれば、 必ずマスターしておきたいプログラミング言語です。


PythonPythonも、スマートフォンのアプリやブラウザを利用するソーシャルゲームのサーバーサイドで使われているプログラミング言語です。コンバータなどのバッチファイルとしても活躍しており、縁の下の力持ち的なポジションでもあります。Pythonの最大のポイントは、コーディング規約が厳密かつシンプルに決められていることです。シンプルな言語でコード記述を短文化し、複数のコードをひとまとめにして使いやすくしたフレームワーク、ライブラリが豊富かつ汎用性が高いことから、多くのエンジニアに支持され、様々な分野で利用されています。人気の高いプログラミング言語ですが、実はまだゲーム開発現場では他の言語ほどは採用されていないのが実情です。


JavaScript主にWebアプリ開発におけるフロントエンド向けに使われるプログラミング言語がJavaScriptです。Javaと名前が似ていますが全く異なります。多くのブラウザゲームで採用されている他、 スマホゲーム内で「お知らせ」などをブラウザ表示時などによく使われます。 開発環境の整備も容易で、ブラウザでプログラマーが書いたソースを即実行できるのがメリットです。 ただ、ブラウザに依存しているため、あらゆるブラウザで動作確認を行う必要があります。ゲームプログラマーというよりWebエンジニア領域にあるプログラミング言語であり、特にゲーム開発に付随する周辺Webサービス開発などで求められる言語です。


スマホゲーム開発の特徴現状、ユーザーが特にプレイするゲームとしては、スマホゲーム(モバイルゲームアプリ)などの携帯ゲームと据え置き型のコンシューマーゲームとに大きく二分されると述べました。ここでは、スマホゲーム開発の特徴について解説していきます。

スマホゲーム開発のゲームエンジンにはUnityがメインとして使用されます。プログラミング言語としては、主にC#です。開発形式はリリースまではウォーターフォール型、リリース後はアジャイル型で運用されることが多いです。

ウォーターフォール型とは「Waterfall=滝」の名の通り、上流→下流に向けた開発工程で、基本的には後戻りをしない前提でゲート管理式で進めていく開発手法です。たとえば、ひとつのゲームのタイトルを「企画」「設計」「実装」「テスト」に工程を分割した上で開発を進めていきます。まず企画の段階で、開発対象となるゲームの内容、仕様等を全て決定します。そしてそれぞれの工程は決められた担当のエンジニアが制作していき、一通り完遂されるとまた次の工程へ引き継がれます。全ての工程が無事に完了して、はじめてひとつのゲームが完成となります。これがウォーターフォール型の開発フローです。お分かりかと思いますが、そもそものゲーム開発はこの形によって行われてきています。

またアジャイル型とはシステム構築やソフトウェア開発時などの開発で用いられている手法です(設計→実装→テスト)。機能単位で小規模に開発チームが分けられ、小刻みに素早く開発を繰り返していきます。短期間でテストを繰り返し、スピーディーかつ機動的に反復増加を進めていきます。常にアイテムの実装やイベントなどが追加されていくリアルタイムで運営されるスマホゲームは、アジャイル型の開発フローで行っていきます。


スマホゲーム開発フロー(一例)

  • スマホゲームアプリ本開発スタート
  • α版の開発=評価版(モック)
  • β版の開発=全素材実装、最終チューニング
  • デバッグ
  • マスター版リリース
  • サービスイン→運営移行、開発スタイルはアジャイル型へ

コンシューマーゲームの開発フローと特徴コンシューマーゲーム開発におけるゲームエンジンは、主としてUEが使用されます。プログラミング言語としては、C++が使用されることが一般的です。開発形式は主にウォーターフォール型で進行されていきます。


コンシューマーゲーム開発フロー(一例)

  • コンシューマーゲーム本開発スタート
  • α版の開発=評価版(モック)
  • β版の開発=全素材実装、最終チューニング
  • デバッグ
  • マスター版リリース

開発ラインは開発状況のフローによって大きな拡縮があり、どの段階でどのポジションにアサインされるかによって、ゲームプログラマーの働き方は大きく異なります。

初期の段階は仕様が固まっていないので、プランナーと一緒に仕様を決定しながら、いつどれくらいのエンジニアが必要なのかを割り出していきます。仕様に沿って適材適所の人材のアサインを行います。何があっても納期遅延は許されません。

また、開発ラインが最大化するβからマスターアップに掛けての最終調整、バグフィックスは鉄火場である場合が多いです。大変な環境ではありますが、ゲームエンジニアとして大きく成長する機会でもあります。

アサインは上長である、リードプログラマーや開発部長などが全体を見渡しマネージメントします。希望のポジションに行くには日ごろからのアピールやコミュニケーション能力などが重要になってきます。