ゲームのプログラミングに興味があったとしても、どのようなプログラミング言語があり、どういったゲームができるのかということまでは分からない…という方も多いかと思います。
本記事では、ゲームプログラマーとして学ぶべき言語とゲームエンジンについてご紹介していきます。
記事の概要
ゲームを作る土台は「ゲームエンジン」
「自分でゲームを作りたい!」「ゲームプログラマーになりたい!」というときに、まずはゲームがどのように作られているかを理解することが大切です。同じスマートフォンでもiPhoneとAndroidには違いがあるように、ゲームを作るときも「ゲームエンジン」と呼ばれる制作の土台があります。それぞれ特徴があり、どのようなゲームを作るかによって選ぶ必要があります。
例として、日本でヒットした人気ゲームのゲームエンジンを見てみましょう。
ゲームタイトル | 使われているゲームエンジン |
Pokémon GO(ポケモンゴ―) スーパーマリオ ランドラゴンクエストⅧ など |
Unity(ユニティ) |
FORTNITE(フォートナイト)グランブルーファンタジーヴァーサス など | Unreal Engine(アンリアルエンジン) |
ディズニーツムツムモンスターストライク など | Cocos2D-x(ココス・ツー・ディー・エックス) |
よく使われるゲームエンジンの特徴
ゲームエンジンの登場によって制作工程の効率化やコスト削減が可能となり、ゲーム特有のオーディオやアクションシーンのサウンド等も扱いやすくなりました。ここでは代表的なゲームエンジンについて内容や特徴などを見ていきます。
Unity(ユニティ)
ユニティ・テクノロジーズが開発した「Unity」は、さまざまなゲームエンジンの中でも一番使われており、全世界で100万人以上の開発者に使用されています。複数のOSに向けたアプリ開発が可能な「クロスプラットフォーム」対応により、モバイルゲーム・パソコン(PC)ゲーム・ブラウザゲームといった幅広いゲーム開発を行うことができます。「Pokémon GO」や「スーパーマリオ ラン」などに使われており、遊んだことがある方も多いのではないでしょうか。
Unity公式オンラインストアである「アセットストア」では、クリエイターが作った3D素材やプログラム部品、キャラクターの音声などが販売されています。中には無料のものもあり、購入可能なだけでなく、あなたが作った素材を登録して公開したり、有料で販売したりすることもできます。
アセットストアを使えば、ゲームステージ・キャラクター・ゲーム背景なども作成可能です。プログラミング無しで3Dキャラクターを動かすことやレベルデザイン(※)もできるため、ゲーム開発が初心者の方であっても簡単にクオリティの高いゲーム開発ができるのです。
UI変更・細かいデザイン調整・機能追加といった高度な作業を行う際には、「C#」などのプログラミング言語を習得する必要があります。プロのプログラマーになるには、プログラミング言語を学び、Unityを使いこなせるレベルを目指しましょう。
※レベルデザイン…ゲームのキャラクターが使うアイテムや敵の配置、空間、仕掛けなどをデザインすること。戦いのステージやマップなどの設定によって、ユーザーがゲームに夢中になれるかどうかを左右します。
Unreal Engine(アンリアル・エンジン)
「Unreal Engine」は「Epic Games」からリリースされているゲームエンジンです。Unreal Engineの特徴は、スクリプト(すぐに実行できる簡易プログラム)を視覚的に追加できる機能「ブループリント」が搭載されていることにあり、プログラミング言語の知識がない場合でもゲーム開発を進めることができます。
とくに3Dゲーム開発のシーンで使われることが多く、「Maya」「3ds Max」といったツールで作った素材を統合できるという点も魅力の一つです。画面を切り替えずにバトル場面を作ることができ、臨場感あふれる「FORTNITE」の映像も3Dゲーム開発に適した「Unreal Engine」だからこそといえるでしょう。
Cocos2d-x(ココス・ツー・ディー・エックス)
「Cocos2d-x」は、ディズニーツムツムやモンスターストライクのように、2Dゲーム制作に特化している性質を持っています。誰であっても扱えるオープンソースとして無料で提供され、動作が軽く開発環境も構築しやすいことが特徴です。
複数のOSに向けたアプリ開発が可能なクロスプラットフォームに対応可能であるため、iOS・Androidのアプリを同時に進行して作成できます。スマートフォンゲームの制作を行っている開発者に支持されており、現在でもCocos2d-xで開発されたアプリは多く存在します。
2Dゲーム自体の需要が減少しているということはなく、Cocos2d-xが活躍できる場面はまだまだ残されていると言えるため、 2Dゲーム開発を目指す方は押さえておくと良いでしょう。
ゲームプログラマーとして身につけたい言語
仕事として「ゲームプログラマー」を目指すには、より高度なスキルを身につけるため、プログラミング言語を学ぶ必要があります。ゲームエンジンによって使用するプログラミング言語も異なり、複数のプログラミング言語を扱えることは就職や転職時のアピールポイントにもなります。主なプログラミング言語を見ていきましょう。
C言語とは
1972年に開発された「C言語」は、プログラミング言語を語る上で外せない歴史ある言語です。当時では画期的と言われた「UNIX」というOS(オペレーションシステム)開発のために作られ、その後も「MacOS」や「Linuxカーネル」などはC言語で作られています。
実行速度の速さに優れ、OS開発だけでなくソフトウェアやアプリケーション、ゲーム・カーナビ・ロボット開発などさまざまな分野で使用されています。用途やハードウェアに限定されることなく動かせるため、登場してから半世紀以上経っても汎用性の高い言語として使われています。歴史があるがゆえに言語としての難解さがあり、他の言語に比べるとハードルが高く感じられるかもしれません。「プログラミングの基礎としてしっかり学びたい」「AIやIoTの分野でプログラミングをしてみたい」という方に向いていると言えます。
需要の高いC++(シープラスプラス)
「C++」はC言語を一層高度に使用できるよう拡張されたものを指します。C言語との互換性があり、「C言語を進歩させたもの」といえます。プログラミング言語の中でも「コンピュータが理解できる言葉に近しい書き方をする」という特徴があることから、非常に難易度の高いものにあたります。その分、「コンピュータが早く理解できるプログラムができる」ため、処理速度が非常に速く、なめらかに動くゲームを制作することができるでしょう。
企業単位での業務システム開発やAI開発、ゲーム開発など使われている場面も多種多様となっており、エンジニアの需要もあります。将来フリーランスとして働くことを視野に入れている方は習得しておきたい言語の1つです。
ゲーム開発にオススメなC#(シーシャープ)
Unityの登場により、一気にその認知度が広まったとされているのが「C#」です。ゲーム制作において近年とくに人気が高まりつつあります。Javaを基盤としてマイクロソフト社により開発された言語であり、C言語およびC++言語と互換性はないものの、後継言語として認知されています。
なお、C#の「#」の記号は、この言語が「C++++言語」にあたるという意味を含んでいます。C++の難しい概念をすべて理解しきれなくても問題はなく、プログラミングとして比較的書きやすいこともメリットの一つ。複雑なゲーム制作もスムーズに進み、スマホアプリゲーム・PCゲーム・コンシューマーゲーム・XRコンテンツといった開発の際も用いられており、Unityとあわせてゲーム開発に無くてはならない存在です。C#は、今後ゲーム開発やゲームプログラマーを目指すなら一番おすすめのプログラミング言語だと言えます。
ウェブサイトやブラウザゲームならJavaScript(ジャバスクリプト)
「JavaScript」はブラウザゲームで頻繁に使用されてきましたが、近年ではさまざまな環境で広範囲に利用されるようになってきています。多くのWEBサイトで使われている、学びやすく身近な言語だとされていますが、HTML・CSSとの関連性も強いので、JavaScriptを学ぶのであればHTML・CSSといったものもあわせて学ぶのが良いでしょう。
高速でWEBアプリを作れるRuby(ルビー)
料理サイトの「クックパッド」や動画配信の「Hulu」、「Twitter」はRudyによって開発されたサービスの一例です。他のプログラミング言語に比べてWEBアプリケーションを高速で作れるという特徴から、起業時(スタートアップ)でのサービス作成時に使用されています。近年ではソーシャルゲーム・モバイルゲームの開発時にも使われており、基本的に内部処理がメインとされているサーバーサイド開発用の言語といえます。
Unityと比較するとゲームを制作するにあたって本格的なプログラミングになるため、学習の難易度は少し高くなるかと思います。日本人が開発したものなので、日本語での参考書も多数。積極的にRubyを使用している現場はそこまで多いわけではありませんが、一方で本格的にしっかりと使い込んでいる会社もあります。将来的に就職を希望する会社やプロジェクトに合わせて勉強優先度を変えていくと良いでしょう。
iOSアプリ専用のプログラミング言語・Swift(スウィフト)
Appleより提供されている、Apple製品アプリを開発するためのプログラミング言語とされているのが「Swift」です。iPhoneなどですべての機能を利用可能であるという要素から、「本格的なiOSアプリを作ってみたい」という方に利用される傾向にあります。
プログラミング入門者にとっては学習の難易度が少し高めではあるのですが、その分凝ったアプリも作ることができます。開発環境はMacのみであるため、開発したアプリが動作できるのもiOS上だけという点には注意が必要です。
学ぶ環境が整っているPHP(ピーエイチピー)
スマートフォンアプリ・ブラウザを使ったソーシャルゲームサーバーで使用されることが多いプログラミング言語が「PHP」です。ゲーム開発だけでなく、WEBアプリケーションやブログ、ECサイト、予約システムなどを作ることができます。シンプルな構文ですぐに動作を確認することができるため、初心者でも学びやすいと言われています。
サーバーに最初からインストールされていることが多く、参考文献も豊富です。よく使われる基礎的なコードを構造化した「フレームワーク」を使うことで、より効率的に開発を行うことができます。
プログラミング言語で作成するゲームの種類
ゲーム機といえばあなたは何を連想するでしょうか?スマホゲームを思い浮かべる方もいれば、「Switch」や「Xbox」「Playstation」などを思い浮かべる方もいると思います。ゲーム業界への就職は、どのゲーム機のソフトを作りたいかによっても進む道が違ってきます。改めて、ゲーム機の種類についておさらいしておきましょう。
スマホアプリ
スマートフォン上で起動させるアプリゲームであり、iPhoneのiOS用とAndroid用とが作られています。
スマホゲームは単独で行うゲームもあるのですが、近年ではソーシャルゲームが主流になってきているため、オンライン前提としたアプリ開発も多く行われるようになっています。手軽に楽しめるスマホアプリはたくさんのユーザーに支持されており、ゲームプログラマーのニーズも高まっていくでしょう。
PCゲーム
ゲーム機を購入せずとも気軽に本格的なゲームを楽しめるのがPCゲームです。Windows向けのものが主流であり、大半はオンライン接続が前提とされています。制作環境以外はライセンスは不要であるため個人でのゲーム制作が可能であり、同人ゲームの制作にも利用されています。
最近では多くのゲーム制作のWEBページが公開されており、ゲームプログラマーを目指す方にとってプログラミング言語に触れることができる良い場所だと言えます。
ブラウザゲーム
ブラウザゲームは、インターネットに接続して「Google Chrome」などのブラウザを通じてゲームを行うことが可能です。このゲームで頻繁に利用されている言語が「C#」「C++」「JavaScript」といったものになります。ブラウザ上であるため、あまりに派手な演出といったものはできませんが、初めてゲームをするユーザーであれば手軽に始められるという利点があります。
コンシューマーゲーム
市販されている家庭用のゲーム機で遊ぶことを前提としたコンピューターゲームです。コンシューマーゲームでは「C++」のプログラミング言語がよく用いられます。クオリティの高いゲーム制作に関わることができ、ゲームプログラマーとして非常にやりがいのある現場であると言えるでしょう。最近ではオンラインでゲームを楽しむことができるものも増えてきており、今後の進展も期待が高まっている分野だと言えます。
VRゲーム
VRは臨場感を楽しむことができるゲームであり、3Dの空間が出現します。Unityの場合は主に「C#」、「Unreal Engine」は「C++」というように、「Unity」「Unreal Engine」のどちらを利用するかによって、プログラミング言語が異なります。スマホでのVRゲームも可能になったうえ、5Gも開始され、今後ますます需要が高まることが期待されています。
プログラミング言語の選び方は?
ゲームエンジンやプログラミング言語の種類、ゲームの種類をみてきました。上記に挙げたプログラミング言語はあくまで一例で、「Python」や「Kotlin」など他にも多数の言語があります。ゲーム制作に興味がある方は、「結局、どのプログラミング言語から学べばいいの?」とお悩みの方も多いはず。ここではプログラミング言語の選び方についてご紹介します。
作りたいゲームの種類から選ぶ
ゲーム好きなあなたがこれからゲームを設計する側になるとして、どのようなゲームを作ってみたいかを考えていきましょう。スマホでもできる2Dゲームを作りたいのか、3Dで迫力あるゲームを作りたいのか、イメージだけでも構いません。「こういうゲームを作ってみたい!」という気持ちがあればプログラミング言語を学ぶ意欲も湧いてくるはずです。
汎用性の高さや理解のしやすさで選ぶ
「JavaScript」や「C#」などは、他のプログラミング言語に比べて初心者でも学びやすいと言われています。いきなりiOS専用の言語やハイレベルな言語を学ぶよりも幅広く利用でき、汎用性の高いプログラミング言語を身につけることは将来役に立つ可能性も多くあります。すべてのプログラミング言語を完璧にマスターしなければならないというわけでもありません。まずは学びやすいものから取り組むことをお勧めします。
志望中の会社の求人項目を確認する
就職活動や転職活動を行う場合、ゲーム会社のプログラマーの求人票には、採用条件として必要なプログラミング言語が記載されていることがあります。
例)活かせる経験
C++/C#プログラミング実務経験
コンシューマーゲーム開発経験全般
企業によってメインで使用されるプログラミング言語は異なるため、目指したい企業があれば求人票や採情報で確認しておく必要があります。
記載されているプログラミング言語をある程度習得しておくことで、即戦力として採用される可能性が高くなります。小さい頃から憧れを持ち、「絶対このゲーム会社に入りたい!」という希望がある場合、ぜひ一度求人情報を確認してみましょう。
ゲーム業界の動向
ゲームエンジンは今も進化を続けており、近年ではプログラミング言語に対しての完璧な理解が無い状態であっても、ゲームの仕組みを作成できるようになってきています。デザイナーやプランナーなど別職種であっても、ゲームの大まかな枠組みは作ることができるようになっているのです。
しかし、規模の大きいソーシャルゲームやコンシューマーゲームの制作現場では、プログラミング言語を深く理解している「技術者」としてのプログラマーの存在が必要不可欠。今後もゲームプログラマーは需要の高い状態が続く職業だと言えるでしょう。
おわりに
いかがでしたか?本記事では、ゲームプログラマーが学ぶべき言語とゲームエンジンについてご紹介しました。常に変化が伴う職業であるゲームプログラマーになるにあたり、重要なことは「自分が作りたいというゲームに合わせて、学ぶプログラミング言語を選ぶ必要がある」ということです。土台や基礎となるプログラミング言語を身につけ、経験を積みながら少しずつ他のプログラミング言語を学んで、スキルの幅を広げていきましょう。