ゲーム開発に使われている言語|プログラミング言語の一覧と解説

ゲーム開発にはプログラミング言語という、コンピューターに命令を出す機械言語が必要不可欠です。ゲーム開発をしてみたい、ゲームプログラマーになりたい人へ、プログラミング言語にはどのような種類があり、学習する際には具体的にどのように学べば良いのかをご紹介します。
ゲーム開発に使われているプログラミング言語とは
ゲーム開発で使われる「言語」とは、日本語や英語という人が使う言語ではなく、コンピューターに指示をだす「プログラミング言語」の事です。
「プログラミング」は、コンピューターを動かすための指示「プログラム」を書くことです。「プログラミング言語」は、そのために使われる専用の文法のことを指します。
コンピューターは、日本語で「〇〇をしろ」などの命令を理解できません。「0」と「1」によってオン・オフを切り替え、その組み合わせによって入力された「機械語」により処理をおこなっています。
プログラミング言語は、コンピューターへ命令する「機械語」を、英語で人間にも分かりやすいように翻訳したものです。
現在のプログラミング言語のルーツは1972年に発売された「UNIX」と、それに対応した「C言語」です。
「C言語」では「機械語」を手動で入力することなく、比較的簡単にコンピューターに指示を出すことができます。
現在では、プログラミング言語は「C言語」からさらに発展し、様々な種類が作られています。
いずれも、基本的には「英語」を使用していますが、日本語の方言の違いのように、細かな違いや扱い方に差が存在しています。
コンピューターに何をさせたいのかによって、その目的と合致したプログラミング言語を習得する必要があります。
ゲームプログラマー
プログラミングを仕事にしている人を「プログラマー」と呼び、その中でもデジタルでのゲームのプログラミングをしている職業を「ゲームプログラマー」と呼びます。
ゲーム開発に使用するパソコンもゲーム機もコンピューターなので、全てがプログラミングによって稼働しています。そのため、ゲームの開発にプログラマーは必須です。
企画書・指示書に従い、ゲームシステムをプログラミングで構築し、アイデアを形にしていきます。
複雑なゲームのルールを処理する他にも、「コントローラ―のスティックを右に倒すと、キャラクターも画面上を右に移動する」といった初歩的な部分まで設定するのがゲームプログラマーの仕事です。
ゲーム開発のためのプログラミング言語の選び方
プログラミング言語には種類があり、ゲーム開発に適しているプログラミング言語と、適していないプログラミング言語が存在しています。
一般的な企業で使われるプログラミング言語は、幅広い使用方法がある柔軟性や、セキュリティやメンテナンスがやりやすい保守性が重用視されます。
一方、ゲーム開発の場合は、使用する機器が専用のゲーム機やパソコンに限られているため、機器の性能をフル活用できるような処理速度や、映像をスムーズに表現できる映像処理の性能が重用です。
また、専用のゲーム開発ツールの有無も、プログラミングの作成効率に関わります。
作りたいゲームのプラットフォームから選ぶ
「プラットフォーム」は、プレイヤーがゲームを遊ぶときに使う機器のことです。
家庭用ゲーム機やパソコンなどのプラットフォームによって、それぞれ適性のあるプログラミング言語も異なります。ゲーム開発を行う前に、どの媒体でゲームを販売するのかを決め、そこから使用するプログラミング言語を選ぶのが一般的です。
プラットフォーム別のゲームの種類として、主に以下のものがあります。
- 「Nintendo Switch」「PlayStation5」などの家庭用ゲーム機は「コンシューマーゲーム」
- PCにゲームをインストールして遊ぶ「Steam」などは「PCゲーム」
- スマートフォンのアプリは「スマホゲーム」
- インストールの必要がなくインターネットブラウザでページを開けば直接遊べる「ブラウザゲーム」
これら以外にもゲームセンターの筐体で遊ぶ「アーケードゲーム」は、コンシューマーゲームに近く、最近話題になっているVR機器などから遊べる「VRゲーム」はコンシューマー・PC・スマホゲームの特徴を複合しています。
また、同じタイトルのゲームであっても、別のプラットフォームで販売するためには、プログラミング言語を設定し直さなければいけません。
コンシューマーゲーム
コンシューマーゲームは、家庭用ゲーム機や携帯型ゲーム機など専用の機器に、別売りのゲームソフトを使用してプレイするゲームの総称です。「コンソールゲーム」とも呼ばれます。
使われているプログラミング言語は限定的で、現行機種の「PlayStation5」「Nintendo Switch」などのゲームは「C++」で構成されています。
ゲーム専用に作られた機器の性能により、安定した処理や高画質を追求できるのが特徴です。追加のダウンロードコンテンツやアップロードなどもありますが、基本的にはゲームクリアまで遊べる、完成された状態で販売されています。
コンシューマーゲーム業界は非常に競争が激しく、ゲーム自体の面白さに加えて最新技術への理解も求められます。製作費や開発規模が大掛かりになりやすく、販売に必要なライセンスにも費用がかかるため個人での開発は難しく、大きな企業でのプロジェクトとなることが多いです。
昨今では、PCで人気を博したインディーズゲームが、家庭用ゲーム機でも販売を開始することがあります。その際、パッケージ版として販売はせず、ダウンロード専用で配信する形式が多いです。
PCゲーム
PCゲームは、PCにデータをインストールしてプレイするゲームです。かつてはCDやDVDなどの媒体で販売されることが一般的な形式でしたが、昨今では電子決済で購入し、データもWeb上でダウンロードする形式が主流になっています。
多くのプログラミング言語がPCゲーム開発に対応しており、PCとプログラミングの知識さえあれば開発が可能なので、コンシューマーゲームに比べて参入のハードルが低く、個人や小規模チーム作成のインディーズゲーム(同人ゲームとも呼ぶ)も多くあります。
販売後のアップデートも行いやすいため、まず販売を行ってからアップデートを繰り返す方式を取ることもあります。バランス調整のために、オンライン要素のあるゲームの多くがこの形式になります。
使用するPCのOSにより適応するプログラミング言語が変わるため、WindowsとMacの両方に対応させるのか、どちらかを諦めるのかなどの選択も必要になります。
スマホゲーム
スマートフォンで遊ぶ「スマホゲーム」は、iOSではAppl Store、AndroidではGoogle Play ストアからアプリをインストールする形式です。基本プレイが無料である代わりに、ゲーム内アイテムなどで利益をあげるP2P形式が一般的となっています。
「ソシャゲ(ソーシャルゲーム)」や「アプリゲーム」と呼ばれることもあり、正式な名称は定まっていませんが、ここでは「スマホゲーム(スマホゲー)」と呼称します。
iOSとAndroidでは、使用するプログラミング言語が違っており、iOSでは「Objective-C」「Swift」、Androidでは「Java」を使用します。
新しくスマホゲームを配信する場合、iOSとAndroidの両方で同時にサービスを開始することが多いので、開発段階から双方での構築を見据えておかなければいけません。
また、オンライン環境が前提となるため、ゲーム開発とは別にサーバーのプログラミングも必要になることが多いです。
ブラウザゲーム
ブラウザゲームは、「Google Chrome」「Edge」「FireFox」などのインターネットブラウザでWebページを開いて遊べるゲームです。ネット接続環境が必要になりますが、インストールが不要であることが特徴です。
ブラウザで動かすため、プログラミング言語は「Java Script」もしくは、「Java Scriptに変換できるプログラミング言語」となります。
派手なアクションやエフェクトに凝った演出など、極端に処理が重いものは作れないため、必然的に、2Dのミニゲームのような、小規模な作品になります。販売を行うと手間がかかるため、無料のフリーゲームであることがほとんどです。
テストプレイが簡単にできることもあり、初心者が初めてゲーム開発をするプラットフォームとして適しています。
ゲーム開発に適したツールの関連用語
プログラミングを行うためには、専用のアプリケーションやツールを使用します。ゲーム開発に必要なツールに関連する用語を簡単に解説します。
エディター
「エディター」は、プログラミング言語を記述するために必要な白紙のようなものです。エディター・コンパイラ・リンカ・デバッガをまとめた「統合開発環境(IDE)」に含まれていることもあります。
ゲームエンジン
「ゲームエンジン」は、ゲーム開発のためにつくられた専用のツールです。「Unity」や「Unreal Engine」が汎用的で有名です。使いやすいゲームエンジンが存在しないプログラミング言語もあるため、注意しましょう。
ライブラリ
「ライブラリ」は、プログラミング言語を使いやすいように小文節でまとめたものです。コードを一から十まで全て書かなくても、引用して使用することができます。ライブラリの多くはユーザーが自主的に作り配布しているもので、充実しているものとそうでない言語に差があるため、注意が必要です。
フレームワーク
「フレームワーク」は、ある程度の形が最初から整えられており、必要な部分に自由に入力してプログラミング構築を行うツールです。穴あき問題や数学の公式のようなものと考えてください。
ゲーム開発に使われるプログラミング言語の一覧
ゲーム開発に使われているプログラミング言語は、プラットフォームごとに特化した専門性の高いプログラミング言語や、ゲーム開発ではなくサーバーサイドの構築などで使われるプログラミング言語など、様々な種類があります。
以下の一覧表に、ゲーム開発で使われている代表的なプログラミング言語をまとめ、それぞれの詳細を個別に解説します。
ゲーム開発に使われるプログラミング言語の一覧表
名前 | 適正 | 特徴 | 難易度 | 主に使われる開発ツール |
C++ | コンシューマーゲームで主流 | 何でも出来る万能型 実行速度が格段に速い |
難しい | Unreal Engine |
C# | スマホゲームで主流 | Microsoft社製 | 少し難しい | Unity |
Java | スマホゲーム(Android)の標準 | Androidの標準 全OS対応サポート |
難しい | Swing |
Kotlin | スマホゲーム(Android)の標準 | Javaの後継 |
簡単 | libGDX |
JavaScript | ブラウザゲームに必須 | ウェブサイト表示に必須 インストールが不要 |
簡単 | phina.js |
Objective-C | スマホゲーム(iOS)で必須 | Apple社製品専用 |
少し難しい | Xcode |
Swift | スマホゲーム(iOS)で必須 | Objective-Cの後継 Apple社製品専用 |
簡単 | Xcode |
PHP | サーバー向き | フリーのオープンソースとして需要が高い | 簡単 | Simple DirectMedia Layer (SDL) |
Python | サーバー向き | インディーズで人気 | 難しい | PyGame |
Ruby | サーバー向き | 日本製 | 簡単 | Ruby on Rails |
Lua | コンシューマーゲーム | C++などへの組み込みが前提 | 少し難しい | Defold |
Go | スマホゲーム | Google社製 コンパイル言語では高速 |
簡単 | Ebitengine |
C++
適正 | コンシューマーゲームで主流 スマホゲーム/PCゲーム/ブラウザゲーム サーバー・ツール類 |
特徴 | 汎用性・自由度が高い 実行速度が速い(コンパイラ言語) 3Dへの適正 ハードウェア制御 |
難易度 | 難しい(C言語の知識が必要) |
開発ツール | Unreal Engine Cocos2d-x |
プログラミング言語の基礎を築いた「C言語」の発展形として作られたのが「C++(シープラプラ)」です。基礎的なプログラミング言語で、ゲーム業界に限らず様々な業界で幅広く扱われています。
非常に細かいところまで設定することが可能な汎用性の高いプログラミング言語ですが、逆を言えば、全てを自力で設定する必要があります。前提知識として「C言語」の知識が必要なため、習得は難しい部類です。
コンパイラという機械語への翻訳を一括で行うため、処理の実行速度は非常に速いのが特徴です。その処理速度の速さから3D映像を滑らかに動かすことができます。2Dのゲームであっても、エフェクトなどで3D処理が使われることは多く、ゲームへの適正が非常に高いプログラミング言語です。
3Dへの適正と万能性、またハードウェア操作性能の高さから「PlayStation2」での採用以降、現行機にいたるまでのほぼ全ての家庭用ゲーム機が「C++」を採用しています。そのため、コンシューマーゲームでのゲーム開発には「C++」の知識が欠かせません。
「Unreal Engine」をはじめとした多くのゲームエンジンでも、ベースとなるプログラミング言語としてに採用されています。ゲーム開発用のプログラミング言語にとして真っ先に話題に上がる言語が「C++」です。
C#
適正 | スマホゲームで主流 コンシューマーゲーム(移植が容易) PCゲーム(Windows) |
特徴 | 実行速度が速い(コンパイラ言語) 3Dへの適正 文法の扱いやすさ C++への変換 ライブラリの豊富さ メモリの管理機能(ガベージコレクション) |
難易度 | 少し難しい |
開発ツール | Unity |
「C#(シーシャープ)」は、「C++」の次世代言語を目指してMicrosoft社が開発したプログラミング言語です。「C言語」から発展した「C++」を、さらに発展させたものであることから、名前には「C++++」といった意味合いがあります。
「C++」譲りの実行速度の速さに加え、文法がわかりやすく扱いやすい言語となっています。また、「C++」に比べると習得が簡単なため、ゲーム業界で広く普及しているプログラミング言語です。
特にスマホゲームを作る際によく使われているゲームエンジン「Unity」で、メインのプログラミング言語として扱われています。また、Microsoft社製のため、WindowsのOSと相性が良く、PCゲーム開発にも適性が高いです。「C++」への変換も行えるため、コンシューマーゲームへの移植にも向いています。
プログラミングのフレームワーク・ライブラリや、メモリを管理する「ガベージコレクション」など、ゲーム開発をサポートするための機能が多いことも「C#」の特徴です。