C++とは?
C言語の拡張として開発された言語です。
初期の名称は『C With Classes』だったそうです(Wiki情報)。
C言語は1972年にデニス・リッチーさんがB言語を改良して開発したプログラム言語です。
それからUNIXの共同開発者であった事もあり、開発後にUNIXの殆どはC言語に書き換えられました。
これによりUNIX上で動作するユーティリティもC言語で開発されるようになっていきました。
C言語で開発されるメリットとして、コンパイラを通してビルドされるのでハードの仕様が変わっても対応するコンパイラさえ開発してしまえば互換が確保されることがあります。
これは現在でもC言語が使用され続けている要因の一つだと思います。
ただC言語だけでは大規模な開発で管理やコードの可読性が問題になってきました。
そこでクラスという概念を取り入れることをしたのがC++です。
俗にオブジェクト指向プログラミングと言われるものです。
当時はSimulaと呼ばれるクラスを使用したプログラム言語がありました。
それが大規模な開発でも耐えうる機能を有していることに気付いたビャーネ・ストロヴストルップさんが開発しました。
何故そのままSimulaを使用しないのかと言うとインタプリタ言語だったので速度面が遅かった事が原因のようです。
そして1983年にC++が開発されました。
C言語の拡張なのでC++もコンパイルして機械語に変換されるのでインタプリタ言語と比べて高速になっています。
又、現在でも多く使用されているので、数年に一度は規格の更新が行われており、次回は2020年に規格が更新される予定です。
ゲーム業界での開発
現在の開発は下記のようなパターンが多いです。
C++を使った開発
C++を使って各プラットフォームに応じたコンパイラを使って開発します。
『C++とは?』の項目にも書きましたがコンパイラさえ変えればある程度は互換性があります。
ただ各プラットフォーム毎に用意されたハードウェア的な機能は異なる事が基本なので、それぞれのプラットフォーム向けに実装してくことになります。
iOSではObjective-Cと呼ばれる言語が使用されていますが、C++でもプログラムが出来るようになっています。
比較的に動作の高速なプログラムが書けますが、パフォーマンスは開発者の能力に大きく左右されます。
ゲームエンジンを利用した開発
有名なのはUnity、UnrealEngineです。
ゲームエンジンを使うことで個々でシステムの開発を行う必要が無くなるので、開発の効率化が図れます。
ただし、ゲームエンジンの使用方法を習得する必要や売り上げに応じたお金の支払いが生じます。
Unityはネット上に情報も多く、無償で使える機能も豊富なので個人開発者も利用している方は多いです。
プログラムを書かなくてもゲームを作れてしまう可能性すらありますが、規模が大きくなると大体プログラムが必要になってきます。
UnityはC#でスクリプトを書いて実装していきます。
※Unity自体はC++で作られています。
UnrealEngineはC++でプログラムを書いて実装していきます。
他にもパターンは色々ありますが、現在の開発で多いのはこの2パターンだと思います。
Unityはスマートフォンでの開発に利用されることが多いので、コンシューマーでゲームを開発する際は大体C++が必要になってきます。