C#

最終更新日: 2022.07.01 (公開: 2022.07.01)

C言語でゲーム開発!ゲーム開発までのステップとおすすめサイトを紹介

C言語でゲーム開発!ゲーム開発までのステップとおすすめサイトを紹介

C言語は「ゲーム開発に最適なプログラミング言語」だといわれています。それは、C言語がハードウェアに近い処理ができ、プログラムの実行速度が非常に速いからです。しかし、C言語でのゲーム開発について、下記のような悩みを抱えている人は少なくありません。

  • C言語でどのようなゲームが作れるかわからない
  • C言語でゲームが作れるようになるまでのステップを知りたい
  • C言語でのゲーム開発を学習できるサイトを知りたい

本記事では、C言語でゲーム開発ができるようになるまでのステップや、ゲーム開発のスキルが学べるWebサイトを厳選して紹介します。C言語でのゲーム開発は決して簡単ではありませんが、本記事を参考にしてもらえれば着実に上達できるはずです!

目次

C言語とは

C言語とは

「C言語」とは、1972年に登場したプログラミング言語の名称です。デニス・リッチーとブライアン・カーニハンが開発し、元々の目的はコンピューターの「OS(オペレーティングシステム)」の開発・移植を行いやすくすることでした。OSはコンピューターの根幹を担う部分なので、ハードウェアに近い部分を制御できるプログラミング言語が必要です。

このような背景から、C言語は非常にハードウェアに近く、なおかつ汎用性が高いプログラミング言語となりました。そのためC言語はOSの開発はもちろん、各種ソフトウェアやゲーム開発まで幅広く活用されています。C言語をさらに発展させた言語が「C++(Cプラスプラス)」で、こちらもC言語と同じく多分野で活躍しています。

「C言語にできないことはない」といわれるほど、C言語は万能なプログラミング言語です。ロボットや家電製品に搭載する「組み込みプログラム」も、C言語で開発されることが多くあります。さらに、現在ではC言語の処理能力や汎用性を活かして、AIやディープラーニングなど最先端の分野にもC言語やC++が開発されるなど、将来性も高い言語だといえるでしょう。

C言語がゲーム開発に最適な理由

C言語がゲーム開発に最適な理由

C言語はゲーム開発に最適なプログラミング言語です。その理由は「実行速度の速さ」と「ハードウェアの操作性」にあります。C言語は「コンパイル方式」の言語で、コンピューターが理解できる「機械語」に近い形式で、「実行ファイル(exeファイル)」を生成できます。そのため、プログラムをスムーズに実行し、速度を最大限に高められるのです。

C言語は元々OSの開発や移植のために作られたので、ハードウェアに近い処理を行いやすいこともポイントです。とくに「メモリ」の操作に関しては、C言語の右に出るものはほかにありません。メモリを操作することにより、ほかのプログラミング言語ではできない高度な処理や、極めて速い実行速度を実現することができます。

また、C言語はおよそ50年前に登場し、現在でも第一線で使用されているプログラミング言語です。そのため、C言語にはこれまで積み上げられてきた「情報」という資産があり、さまざまな情報を簡単に得ることができます。ゲームプログラミングを学ぶためには、情報やサンプルコードが必要ですが、C言語ならそういった点で困ることはないでしょう。

C言語で作れるゲームの種類

C言語で作れるゲームの種類

C言語では、主に下記4種類のゲームを作ることができます。本章では、それぞれのゲームの種類について解説します。

  • コンソール画面・コマンドプロンプトでの2Dゲーム
  • 既存のゲームエンジンを使用した2D・3Dゲーム
  • DXライブラリを使用した2D・3Dゲーム
  • DirectXやOpenGLを直接使用する2D・3Dゲーム

なおゲームの「ジャンル」については、工夫と技術、さらにビジョン次第でどのようなジャンルでも作ることができます。

コンソール画面・コマンドプロンプトでの2Dゲーム

C言語で作れる最も基本的なゲームが、「コンソール画面」や「コマンドプロンプト」で動く、2D形式のゲームです。コマンドプロンプトは、Visual Studioなどで通常どおりC言語のプログラムを実行したときに表示される、下記のような画面を指します。

コンソール画面・コマンドプロンプトでの2Dゲーム

ゲームが作れそうな画面には思えませんが、実はコマンドプロンプトの画面でも、ゲームを作ることはできるのです。たとえば、じゃんけんゲームや迷路ゲームなど、ごく単純なゲームであれば、十分に楽しめるものが作れます。実際に、ゼロからゲーム制作を学ぶ人の多くが、まずコマンドプロンプトでのゲームの作り方を学びます。

コマンドプロンプトは文字を表示するための画面ですが、文字にも「■」「▲」「●」など、さまざまな図形があります。こうした文字を組み合わせて画面を作り、キャラクターもこれらの図形で表現し、移動や画面の書き換えなどを行うのです。さらに、コマンドプロンプトは文字や背景の色をプログラムで変えられるので、意外と制作の幅は広いです。

もちろん、画面の描画自体は非常に単純なので、コマンドプロンプトでは表現力に限界があります。一方でゲームのプログラム自体は、本格的なゲームに通じるものがあります。つまり、コマンドプロンプトでのゲーム制作方法を学んでおくと、「より高度な制作方法にステップアップしやすくなる」ということです。

既存のゲームエンジンを使用した2D・3Dゲーム

現在最も主流になりつつあるのが、「既存のゲームエンジン」を使用して制作するゲームです。コマンドプロンプトとは異なり、2Dだけではなく3Dのリアルなゲームを作れることが魅力です。「ゲームエンジン」とは、ゲームを開発するための環境のことです。効率的なプログラミングはもちろん、グラフィックス描画のあらゆる機能も備わっています。

ゲーム制作をゼロから行うのは、非常に大変で困難な作業です。なぜなら、ゲームの開発環境そのものを自分で構築しないといけないからです。一方で、既存のゲームエンジンを使用すると、必要な機能を組み合わせるだけで、それなりのレベルのゲームを作れるのです。有名なゲームエンジンとして、「Unreal Engine」と「Unity」があります。

Unreal Engine

引用元:Unreal Engine 5

世界中で最も広く活用されているのが、Epic Gamesが開発した「Unreal Engine」です。Epic Gamesというと、TPSゲーム「Gears of War」や、バトルロイヤルゲーム「Fortnite(フォートナイト)」など、数々の人気タイトルを開発した大手デベロッパーです。

Unreal Engineは汎用ゲームエンジンで、キャラクター制御やアニメーション、物理演算やグラフィック描画・サウンド再生など、ゲーム開発に必要なあらゆる機能が備わっています。Unreal Engineを使うことで、ハイレベルでリアルなゲームを効率的に制作することができます。

実際に世界中で多くのゲーム制作会社が、このUnreal Engineを採用しています。「エースコンバット7 スカイズ・アンノウン」や「ファイナルファンタジーVII リメイク」など、リアルさや映像美に魅力があるタイトルの多くは、Unreal Engineで作られました。

Unreal Engine

引用元:Unity

小規模なスタジオやインディーのゲーム制作者に人気が高いのが、ユニティ・テクノロジーズ社が開発した「Unity(ユニティ)」です。UnityはUnreal Engineと比べると機能性が控えめですが、日本語のドキュメントが充実していることや、他ユーザーが作った素材を購入できる「アセットストア」などが魅力です。

Unreal EngineとUnityは、どちらも無料でさまざまな機能が使えます。そのため、コンソール画面のゲームよりハイレベルなゲームを作りたいと感じたら、どちらも試してみることをおすすめします。ただし、将来的にゲーム業界で活躍したいのであれば、できればUnreal Engineを集中的に学習して、ゲームエンジンに慣れておくほうがいいでしょう。

DXライブラリを使用した2D・3Dゲーム

DXライブラリ

引用元:DXライブラリ

DXライブラリ」は、山田巧さんが開発した、無料のゲーム開発用ライブラリです。こちらはUnreal EngineやUnityとは異なり、ゲームエンジンではなく、DirectXを使ってゲームを開発するためのライブラリです。詳細は後述しますが、DirectXを直接扱おうとすると、極めて高度な知識と技術が要求されるため、ゲーム制作は容易ではありません。

DXライブラリは、いわゆるDirectXの「ラッパーライブラリ」で、DirectXの高度で難しい部分をうまく隠蔽して、使いやすいようにまとめたものです。つまり、DXライブラリを使ってゲームをプログラミングすることで、間接的にDirectXを操れるようになるということです。DXライブラリの登場により、ゲームプログラミングの敷居が下がりました。

さらに、DXライブラリは「PlayStation 4」「PlayStation Vita」「Nintendo Switch」など、家庭用ゲーム機向けのゲームも制作できます。Android版やiOS版のアプリも制作できるため、非常に幅広い用途に活用できることも魅力です。既存のゲームエンジンではなく、DirectXを直接いじってみたいと感じた人は、DXライブラリに触れてみましょう。

DirectXやOpenGLを直接使用する2D・3Dゲーム

既存のゲームエンジンを使わず、DXライブラリも利用せず、「DirectX」や「OpenGL」を直接叩いてゲームを制作することもできます。しかし極めて難易度が高いので、ゲームプログラムの最も深い部分を学びたい人や、Unreal EngineやUnityに不満を感じている人以外にはおすすめできません。

そもそもDirectXやOpenGLは、コンピューターで画面上にグラフィックスを描画するための、グラフィックスAPI(インターフェイス)です。DirectXはMicrosoft、OpenGLはクロノス・グループが開発しました。両者は性質が大きく異なっており、DirectXは基本的にMicrosoft社製PCやゲーム機向け、OpenGLはクロスプラットフォーム対応です。

DirectXとOpenGLは設計思想が異なり、ゲーム開発でより広く活用されているのがDirectXです。一方で、OpenGLはさまざまなプラットフォーム、たとえばPCだけではなくスマホやMicrosoft社製以外のゲーム機にも使えます。そのため、PC向けソフト開発ならDirectX、スマホ向けに開発したいならOpenGLを学習するのが基本です。

いずれの場合も難易度は極めて高いですが、マスターすればオリジナルのゲームエンジンを開発することもできます。いまどきDirectXやOpenGLを直接叩くのは、「時代遅れ」「車輪の再発明」ともいわれますが、それだけに得られるものは大きいです。ただし繰り返しになりますが、初心者の方はUnreal Engline・Unityをおすすめします。

C言語でゲームを開発できるようになるまでの6つのステップ

C言語でゲームを開発できるようになるまでの6つのステップ

C言語はゲーム開発に向いていますが、それでもC言語でゲームが作れるようになるまでには、膨大な知識や技術を身につける必要があり、その道のりは決して容易ではありません。しかし、あらかじめ下記6つのステップについて理解し、「何を学ぶべきか」「何をすべきか」を意識しておけば、効率的に学びやすくなるでしょう。

  • ステップ1:C言語の開発環境を構築する
  • ステップ2:C言語の基本部分を理解する
  • ステップ3:ゲーム開発のスキルを身に着ける
  • ステップ4:単純なゲームを1本完成させてみる
  • ステップ5:ステップアップ先・ライブラリを選定する
  • ステップ6:スキルを向上させながら好きなゲームを作る

ステップ1:C言語の開発環境を構築する

どんなゲームを作る場合でも、まずはC言語の「開発環境」を構築することが大切です。すでにC言語のプログラミング環境を構築していたとしても、それがゲーム開発に向いていない場合は、より適切なものに乗り換える必要があります。ゲーム開発に最も向いている開発環境は「Microsoft Visual Studio」です。

Microsoft Visual Studio

引用元:Microsoft Visual Studio

Microsoft Visual StudioはMicrosoft社が開発した統合開発環境 (IDE) で、C言語やC++はもちろん、C#やPython、JavaScriptなどさまざまな言語にも対応しています。さらに、Microsoft Visual StudioはDirectXと連携しているので、特別なライブラリなどをダウンロードしなくてもゲームの開発環境が整うのも魅力。

また、Microsoft Visual StudioはUnreal EngineやUnityのような、既存のゲームエンジンとの連携も簡単にできます。ゲームプログラミングを学びたいなら、Microsoft Visual Studio以外の選択肢はないといっても過言ではありません。なお、Microsoft Visual Studioは無料でダウンロードできるので、ぜひこの機会に乗り換えてみましょう。

ステップ2:C言語の基本部分を理解する

ゲームプログラミングを学ぶためには、C言語の基本的な部分をしっかり理解しておく必要があります。文法や構文、関数や構造体などの使い方はもちろん、「ポインタ」もぜひ身につけておきたいです。なぜなら、ゲームプログラミングは全体の規模が大きいため、効率化のためにあらゆる点でポインタを使用し、「ポインタだらけ」になるのが普通だからです。

ポインタに苦手意識がある人は少なくありませんが、その概念や演算子の意味さえ押さえれば、ポインタは決して複雑怪奇なものではありません。ポインタは変数宣言時に「*」でポインタ変数であることを示し、「&で変数のアドレスを取得する」ことで使えるようになります。この点について、簡単なサンプルプログラムで確認しておきましょう。

//サンプルプログラム
#include <stdio.h>

#include <conio.h>

int main() {

  // 変数iの中身は100

  int i = 100;

  // ポインタ変数「p」を宣言する

  int *p;

  // pにiのアドレスを格納する

  p = &i;

  // 変数iの中身を表示する

  printf(“変数iの中身:%d\n”, i);

  // 変数pの中身を表示する

  // アドレス表示時は「%p」を使用する

  printf(“変数pの中身:%p\n”, p);

  // プログラム終了

  _getch();

  return 0;

}

 

//実行結果
変数iの中身:100

変数pの中身:006FF9D8

上記のプログラムは、ポインタ変数の宣言とアドレスの取得という基本的な内容ですが、この時点では「頭がこんがらがる」ほど難しくはないはずです。通常の変数「i」には整数値が入りますが、ポインタ変数「p」にはアドレスが入ります。しかし、C言語で混乱しやすいのは下記のように、「*」という演算子にもうひとつの役割があることです。

//サンプルプログラム
#include <stdio.h>

#include <conio.h>

// 引数の「int *p」は、単に「ポインタ変数を宣言する」という意味

void test(int *p) {

  // しかしこの「*」には、ポインタ(アドレス)をたどって「実体に」アクセスする

  // という意味があり、変数宣言の「*」とは完全に別の演算子!

  *p = -1;

}

int main() {

  // 変数iの中身は100

  int i = 100;

  // 変数iの中身を表示する

  printf(“関数呼び出し前の変数i:%d\n”, i);

  // 関数testの引数にiのアドレスを引き渡す

  test(&i); // 先ほどのサンプルプログラム同様に「&」で変数のアドレスを取得する

  // 変数iの中身を表示する

  printf(“関数呼び出し後の変数i:%d\n”, i);

  // プログラム終了

  _getch();

  return 0;

}

 

//実行結果
関数呼び出し前の変数i:100

関数呼び出し後の変数i:-1

上記のサンプルプログラムのように、変数宣言時の「*」と、ポインタ(アドレス)から実体にアクセスする「*」はまったく別の演算子なのです。ポインタ関連のサンプルプログラムを何度もこなしていけば、この意味が少しずつ理解できるはずです。C言語はポインタさえ理解できれば、言語仕様自体はむしろ多言語より「簡単」なのでご安心ください。

ステップ3:ゲーム開発のスキルを身に着ける

C言語の知識がある程度身についたら、まず簡単なプログラムを作成してみましょう。たとえば、構造体やファイル入出力の機能を使って、複数人の住所氏名・年齢・性別・身長・体重のデータを管理するプログラムなどです。これくらいのプログラムが作れるようになれば、そう苦労することなくゲームプログラミングへ移行できるでしょう。

実は「ゲームプログラミング」といっても、何か特別なことをするわけではありません。ゲームは突き詰めれば細かなデータや処理の集合で、やること自体はC言語の基本的なサンプルプログラムの延長です。したがって、C言語の通常のプログラミングスキルが身についていれば、ゲーム開発のスキルも多少は身についた状態になっているのです。

しかし、ゲームにはキャラクターの移動や衝突判定など、特有の処理もあります。こうした特有の処理に慣れるために、まずは「コンソール画面」でのゲーム開発を学びましょう。退屈そうな感じがするかもしれませんが、コンソール画面でも意外とおもしろいゲームは作れます。コンソール画面でのゲーム制作が学べるWebサイトについては後述します。

ステップ4:単純なゲームを1本完成させてみる

コンソール画面でのゲーム開発をある程度学んだら、簡単なゲームを1本完成させてみましょう。1ステージだけでもOKなので、最初から最後まで機能するゲームを作ることが大切です。サンプルプログラムを自分なりに改変して、オリジナリティのあるソースコードならベストです。作成するゲームは複雑なものではなく、ごく簡単なテーマで構いません。

たとえば、じゃんけんゲーム・数あてゲーム・迷路ゲームなどが、コンソール画面でのゲームの題材として一般的です。工夫すれば縦スクロール・横スクロールのシューティングゲームも作れるので、興味のある方はぜひチャレンジしてみてください。コンソール画面でシューティングを作成できるのであれば、相当の実力がついていると考えていいでしょう。

ステップ5:ステップアップ先・ライブラリを選定する

前述したように、コンソール画面のゲームには限界があります。表示できるのは文字や記号だけなので、どうしても見た目の点で見劣りし、「理想的なゲーム」とは呼びがたいでしょう。そのため、コンソール画面である程度ゲームが作れるようになったら、次のステップアップ先を検討することをおすすめします。

ほとんどのケースでは、Unreal EngineかUnityに移行することをおすすめします。よりグラフィカルな2Dゲーム・3Dゲームを作るためには、グラフィックスライブラリが必須です。しかし、DirectXやOpenGLを自分で叩くのは困難なので、Unreal EngineやUnityのようなゲームエンジンを利用するのが現実的な選択肢です。

プログラミングスキルに相当の自信があるなら、グラフィックスライブラリを直接使うのもいいでしょう。この場合はDXライブラリを利用するか、DirectXやOpenGLを直接叩くことになります。DXライブラリであれば、後述するようにサンプルプログラムも豊富なので、難しい部分を考えずにゲームを作りやすいです。

ステップ6:スキルを向上させながら好きなゲームを作る

このステップまで進むことができたのなら、あとはとにかく「ゲームを作り続けるだけ」です。これはプログラミングに限らないことですが、どんなことでも「場数」を踏むことでスキルが向上します。

自分が「やりたい」「作りたい」と思ったことを見つけて、それをプログラミングという方法で形にしていくのです。ゲームプログラミングのスキル向上のために重要なことは、常に「より高いレベル」を目指して、新しいテーマにチャレンジしていくこと。これは既存のゲームエンジンを使用する場合も、DXライブラリを活用する場合でも同じです。

たとえば、3Dの簡単なアクションゲームを作ったあとは、敵キャラクターのAIをパワーアップさせたり、パーツやアイテムの要素を追加したりするなどです。焦らずに少しずつの「進歩」で構いません。

C言語でのゲーム開発を学ぶためにおすすめのWebサイト9選

C言語でのゲーム開発を学ぶためにおすすめのWebサイト9選

C言語でゲーム開発をするためには、さまざまなテクニックを身につけて、スキルを磨いていくことが重要です。そのためには、わかりやすいサンプルプログラムが掲載されたWebサイトを活用して、「実践」で学んでいくのが効果的です。本章では、初心者向け・中級者向け・上級者向けに分類して、下記9つのゲームプログラミング学習サイトを解説します。

  • 【初心者向け】佐伯英子技術士事務所
  • 【初心者向け】C言語ゲーム制作入門
  • 【中級者向け】DXライブラリ置き場
  • 【中級者向け】新・ゲームプログラミングの館
  • 【中級者向け】龍神録プログラミングの館
  • 【上級者向け】Unreal Engine 5 のドキュメント
  • 【上級者向け】Unity初心者向けチュートリアル集
  • 【上級者向け】マルペケつくろーどっとコム ゲームつくろー!
  • 【上級者向け】RasterTek

【初心者向け】佐伯英子技術士事務所

佐伯英子技術士事務所

引用元:佐伯英子技術士事務所

佐伯英子技術士事務所の「C言語サンプルプログラム」では、コンソール画面のゲーム開発に役立つ、さまざまなサンプルプログラムが掲載されています。特徴的なのは、ゲームそのもののプログラムだけではなく、乱数の使い方やソート・検索アルゴリズム、ビープ音の活用法など、さまざまなテーマのサンプルプログラムが網羅されていることです。

本Webサイトは「初心者向け」として分類しましたが、サンプルプログラムのなかにはハイレベルなものもあるため、すべてを理解するのは難しいかもしれません。しかし、わかるものから進めていけば、C言語の知識が少しずつ深まり、あとになって理解できるようになるはずです。初心者の方は、まず下記のようなサンプルプログラムから始めてみましょう。

いずれも短いソースコードでありながら、ゲームプログラムで極めて重要な要素が散りばめられています。とくに、「ユーザーの入力を待つ」「入力に応じた処理をする」という点は、あらゆるゲームプログラムに通用するテクニックです。要所で「音を鳴らす処理」も含まれているため、BGMや効果音を鳴らす練習にもなります。

ただし、このサイトのサンプルプログラムはやや古く、現在のVisual Studioではエラーが出て動かない部分もあります。たとえば、「kbhit()」「getch()」「strcpy」などの関数は、セキュリティが強化された「_kbhit()」「_getch()」「strcpy_s」に置き換える必要があります。これはほかのサイトでも同様なので、あらかじめご承知おきください。

【初心者向け】C言語ゲーム制作入門

C言語ゲーム制作入門

引用元:C言語ゲーム制作入門

C言語ゲーム制作入門」は、C言語の基本的な知識を身につけた人を対象に、ゲームプログラミングのテクニックを解説しているWebサイトです。前述したように、C言語の知識をある程度身につければ、実はゲームプログラミングもある程度はできます。しかし実際には、「何から手をつければいいかわからない」ということも珍しくありません。

このWebサイトでは、そんな悩みを解決するために、さまざまなサンプルプログラムが掲載されています。注目すべきポイントは、C言語の開発環境さえあれば動作し、数学的な内容がほとんどないため、初心者でも安心して学んでいける点です。

各ページの最初には、そのテーマに関する解説やサンプルコードの断片が記載されており、最後にすべてのソースコードがまとめて掲載されています。プログラム自体は、そこをコピー&ペーストすれば基本的には動作します。

ただし、このサイトのサンプルプログラムも、「sscanf()」などの関数でセキュリティエラーが表示されます。Visual Studioでこうしたエラーを防ぐには、プログラムの先頭に「#define _CRT_SECURE_NO_WARNINGS」と記載しましょう。

また、最初のほうのサンプルプログラムは、実行と同時に画面が消えてしまいます。これを防ぐために、プログラムの先頭に「#include <conio.h>」と書き、main関数の「return 0;」の前に「_getch();」と記載しましょう。こうすることで、プログラムの終了前にキーボード入力の待機処理が入り、プログラムの実行結果をきちんと確認することができます。

【中級者向け】DXライブラリ置き場

【中級者向け】DXライブラリ置き場

引用元:DXライブラリ

【中級者向け】DXライブラリ置き場

引用元:DXライブラリ

ここからは中級者向けのWebサイトを紹介していきます。先ほど紹介した「DXライブラリ」の公式サイトには、さまざまなサンプルプログラムが掲載された、専用のチュートリアルが用意されています。DXライブラリは2Dと3Dの双方に対応しているため、サンプルプログラムも2D用3D用どちらも利用できるので便利です。

サンプルプログラムの種類は豊富で、キー入力やジャンプ、マップ表示やスクロールなど基本的なものから、サウンドやパーティクル、シューティングゲームの開発方法など広い範囲が網羅されているのが特長です。これらのサンプルプログラムは、基本的にソースコードをコピー&ペーストして、必要なファイルをダウンロードすれば動作します。

ただし、サンプルプログラムを正常に動かすためには、DXライブラリを正しくインストールし、Visual Studioのプロジェクトのプロパティを正確に設定する必要があります。最新のVisual Studio 2022でDXライブラリの初期設定を行う方法に関しては、こちらで詳しく解説されているので、ぜひ参考にして環境を整えましょう。

なお、3D用のサンプルプログラムも非常に魅力的です。3D迷路の表示やアクションゲームの作り方、基本的な光源処理やアニメーションのテクニックなど、これから3Dゲームを制作するうえで欠かせない知識が詳しく解説されています。これらのサンプルプログラムを進めていけば、DXライブラリでゲームが作れるようになるはずです。

【中級者向け】新・ゲームプログラミングの館

新・ゲームプログラミングの館

引用元:新・ゲームプログラミングの館

新・ゲームプログラミングの館」は、DXライブラリの基本的な使い方はもちろん、応用的なゲームプログラミング手法まで解説されているWebサイトです。実際にゲームを制作するという内容ではありませんが、このWebサイトの内容を網羅しておけば、DXライブラリを使いこなし、実際にゲームが作れるようになるはずです。

サンプルプログラムや解説の質も高く、基本的には指示どおりにサンプルプログラムをコピペすれば動きます。解説を読みながらソースコードを追いかけて、自分なりにアレンジしていけば、みるみるうちにゲームプログラミングのスキルが身についていきます。

ただし、サンプルプログラムでは画像ファイルなどを多用するため、上記のWebサイトにアクセスして、「VisualStudio2017のプロジェクト」をクリックし、プロジェクトファイルをダウンロードする必要があります。また、使用しているVisual Studioのバージョンによっては、下記のようにコンパイルエラーで実行できないので注意が必要です。

新・ゲームプログラミングの館

このようなエラーが発生する場合、ほとんどの原因は「プロジェクトの設定」にあります。上部メニューの「プロジェクト」から「プロパティ」に進み、「全般」の「Windows SDK バージョン」をクリックすると、適切な設定値の候補が出てきます。そのなかから最も新しいバージョンを選べば、ほとんどのケースで正しく動作するはずです。

新・ゲームプログラミングの館

【中級者向け】龍神録プログラミングの館

龍神録プログラミングの館

引用元:龍神録プログラミングの館

龍神録プログラミングの館」は、いわゆる「東方Project」系の「弾幕縦スクロールシューティングゲーム」を、DXライブラリで制作する方法を解説しているWebサイトです。サンプルプログラムの質が非常に高く、最終的には本格的なシューティングゲームを目指すことも可能です。

こちらのサイトでも、基本的にはソースコードをコピペしていけば動作します。さらに、各チャプターごとに少しずつ機能を追加していく流れになっているので、「ゲームを作っている感覚」を味わえてワクワク・ドキドキできることが魅力です。すべてのサンプルプログラムがセットになった、Visual Studioのプロジェクトファイルもダウンロードできます。

龍神録プログラミングの館

実際にプロジェクトファイルをダウンロードしてみると、問題なくコンパイル・実行することができました。このWebサイトのサンプルプログラムを理解できるレベルになれば、「ゲームプログラマーとして必要なスキルが身についている」といえるでしょう。あとはサンプルプログラムがなくても、自分で好きなゲームが作れるようになるはずです。

【上級者向け】Unreal Engine 5 のドキュメント

Unreal Engine 5 のドキュメント

引用元:Unreal Engine 5のドキュメント

Unreal Engine 5のドキュメント」は、Unreal Engineの開発元「Epic Games」が公式に提供している、Unreal Engineのチュートリアルです。Unreal Engineは極めて便利なゲームエンジンで、ありとあらゆるジャンルのゲームを制作できます。ただし、Unreal Engineを使いこなすのは容易ではなく、さまざまな知識を身につける必要があります。

この公式チュートリアルでは、最新版Unreal Engine 5の機能や、テーマごとの詳しい解説とサンプルプログラムが掲載されています。また、上記サイトの右側にある「関連するコース」では、Unreal Engineの基本的な使い方を解説する講座も受けられるので、ぜひ活用してみてください。短期間でUnreal Engineで簡単なゲームが作れるようになるでしょう。

なお、Unreal Engineでは基本的にC++でプログラミングを行いますが、「ブループリント」というビジュアル・スクリプティング・システムを活用すれば、ノンプログラミングでもゲーム開発ができます。そのため、「C言語はいまいちわからないけれど、とりあえずゲーム制作を体験してみたい」という人にも、Unreal Engineはおすすめです。

Unreal Engine 5 のドキュメント

【上級者向け】Unity初心者向けチュートリアル集

Unity初心者向けチュートリアル集

引用元:Unity初心者向けチュートリアル集

Unity初心者向けチュートリアル集」は、Unityが公式に提供しているチュートリアルプログラムです。UnityもUnreal Engine同様に、極めて便利なゲームエンジンではありますが、使いこなすのは決して容易ではありません。さまざまな機能が搭載されているからこそ、「何をどのように使えばいいかわからない」ということもあります。

そんなときに心強い味方になってくれるのが、このチュートリアルプログラムです。RPGやFPS、パズルなどさまざまなジャンルのゲームをテーマとして、Unityの使い方を学ぶことができます。また、C#で試行錯誤しながらUnityでのゲーム開発が学べるサンプルもあるため、すべてのサンプルをクリアすれば大幅なスキルアップが実現するはずです。

UnityはUnreal Engineとは異なり、日本語のチュートリアルが充実している点がポイントです。グラフィックス機能や世界的なシェアの点では、Unreal Engineより控えめな点も多いですが、「気軽に学べる」という点ではUnityに軍配が上がります。このチュートリアルも、プログラマーが着実に学べるよう工夫されているので、ぜひご活用ください。

【上級者向け】マルペケつくろーどっとコム ゲームつくろー!

ここからは「最上級者向け」のWebサイトを解説していきます。まずは、ゲームプログラマーの間でとくに評価が高く、プログラミングスキルの習得時にお世話になった人も多い「マルペケつくろーどっとコム ゲームつくろー!」です。

マルペケつくろーどっとコム ゲームつくろー!

引用元:マルペケつくろーどっとコム ゲームつくろー!

マルペケつくろーどっとコム ゲームつくろー!」は、DirectXやOpenGLを直接叩きたい人向けに、ゲームプログラミングやグラフィックス関連のテクニックを解説したサイト。非常に難易度が高いですが、書籍にもなかなか掲載されていないような専門的な知識が学べます。ちなみにこのサイトの作者は、ゲームプログラマーとしての実務経験が豊富です。

DirectX関連の情報が充実していることが、このサイトの特徴。とくに役に立つのが、DirectX 9の「DirectX技術編」と「プログラマブルシェーダ編」です。DirectXを直接叩くときは、膨大な量のソースコードを書く必要があります。DXライブラリが隠蔽してくれていた部分を、すべて自身でプログラミングする必要があるからです。

そのためDirectXの初学者は、「何をどうすればいいかわからない」と挫折してしまうことが多いのです。しかし「マルペケつくろーどっとコム」では、サンプルプログラムをコピペすることで、実際に動作するDirectXのプログラムが手に入ります。詳細な解説をひとつずつ読み進めることで、プログラムの処理内容も少しずつ理解できるでしょう。

このWebサイトのサンプルプログラムを網羅しておけば、DirectXでゲームが作れるようになるだけではなく、オリジナルのゲームエンジンを作ることも可能です。また、グラフィックス関連のプログラミングや、シェーダープログラミングの奥深い知識も身につくので、Unreal EngineやUnityを使ってゲーム制作するときも大きな力になります。

ただし、このサイトで解説されているのは、DirectX 9やDirectX 10など古いバージョンのものがほとんどです。DirectXにはバージョンがあり、現在ではDirectX 11やDirectX 12が使用されています。現在では、DirectX 9やDirectX 10でゲームを開発するための「SDK(ソフトウェア開発キット)」が搭載されていないため、別途ダウンロードが必要です。

DirectX

引用元:DirectX Software Development Kit

ます「DirectX Software Development Kit」にアクセスし、言語を日本語に設定して「Download」をクリックしてください。ダウンロードしたファイルを実行し、画面の表示どおりに進めていきます。なお、インストールするディレクトリやオプションは、できるだけデフォルト設定を推奨します。

DirectX

ただし、環境によっては上記のようなエラー画面が表示されます。この場合は、「Visual C++ 再配布可能パッケージ」がインストール済みであることが原因なので、下記の手順で再度インストールし直してください。

  1. 「Visual Studio Installer」を起動する
  2. 「C++関連のパッケージ」にチェックを入れて削除する
  3. 「コントロールパネル」を開く
  4. 「Microsoft Visual C++ 20XX Redistributable XXX」をすべてアンインストールする
  5. 「DXSDK_Jun10.exe」を再度インストールする

以上で、DirectX 9または10でのプログラミング環境はインストールできましたが、まだ「マルペケつくろーどっとコム」のサンプルプログラムは動かないはずです。これは、Visual Studioのプロジェクト設定が整っていないことが原因です。まずは、DirectX SDKの「環境変数」が通っているか、下記の手順で確認しましょう。

DirectX
  1. デスクトップ画面で「Windowsキー」と「Rキー」を同時に押す
  2. 「ファイル名を指定して実行」が開くので「cmd」と入力する
  3. 「rundll32 sysdm.cpl,EditEnvironmentVariables」と入力する
  4. 「システム環境変数」の変数に「DXSDK_DIR」があるか確認する
  5. 値が「C:¥Program Files (x86)¥Microsoft DirectX SDK (June 2010)¥」か確認する

変数や値を確認できない場合は、「Microsoft DirectX SDK (June 2010)」のディレクトリを自身で探し、あとでそのパスを直接指定する必要があります。

DirectX

次にVisual Studioを開き、プロジェクトのプロパティを設定します。なおこの設定は、新しいプロジェクトを作成するたびに、行う必要があるので注意してください。

  1. 上部メニューの「プロジェクト」から「プロパティ」に進む
  2. 「構成プロパティ」の「VC++ディレクトリ」を開く
  3. 「インクルードディレクトリ」のドロップダウンメニューから編集を選択する
  4. 「$(DXSDK_DIR)include」と入力する
  5. 「ライブラリディレクトリ」のドロップダウンメニューから編集を選択する
  6. 「$(DXSDK_DIR)lib¥x86」と入力する
  7. 「OK」をクリックする

以上の手順で、「マルペケつくろーどっとコム」のサンプルプログラムが動作するようになるはずです。事前にさまざまな準備は必要ですが、これさえ完了していれば、DirectXを直接叩く楽しみを味わうことができます。なお、上記の準備や設定は、後述する「RasterTek」のサンプルプログラムを実行するためにも必要なので、必ず行っておきましょう。

【上級者向け】RasterTek

RasterTek

引用元:RasterTek

RasterTek」は、Direct Xの各バージョンごとの使い方やプログラミングスキル、応用テクニックなどを網羅したWebサイトです。海外のサイトなのですべて英語で記載されていますが、それだけにサンプルプログラムのレベルが非常に高いことが魅力。

サンプルプログラムとしての実用性は「マルペケつくろーどっとコム」より高く、何よりも現在の主流である「DirectX 11」のチュートリアルが豊富です。DirectXの最新バージョンはDirectX 12ですが、個人でのプログラミングにはあまりに高機能で複雑なので、現在でも個人のゲームクリエイターや小規模スタジオでは、DirectX 11が活用されています。

「RasterTek」は基本的なサンプルプログラムも充実していますが、「DirectX 11 Terrain Tutorials」や「DirectX 11 Tutorials – Series 2」がとくに魅力的です。これは、画像ファイル(ハイトマップ)から立体的な地形を生成するというプログラムで、実際のゲーム開発にも役立つハイレベルなテクニックが凝縮されています。

また、「RasterTek」ではHLSLシェーダー関連のプログラミングテクニックも、深い部分まで学ぶことができます。前述したように、シェーダープログラミングは現代のゲーム開発には必須の技術。このサイトでは、基本的なライティングや陰影処理はもちろん、パーティクルやシャドウマップなどの応用テクニックも学べます。

ただし、「RasterTek」のサンプルプログラムはハイレベルなので、基本的なプログラミングスキルが欠かせません。さらに、古いサンプルプログラムも多いので、「マルペケつくろーどっとコム」同様に、Direct X SDKのインストールやプロジェクト設定も必須です。

C言語でのゲーム開発でよくある質問

C言語でのゲーム開発でよくある質問

C言語でのゲーム開発に関する「よくある質問」をまとめました。下記6つのポイントは、ゲームプログラマー・ゲームクリエイターを目指す多くの人が気になるところなので、ぜひ参考にしてみてください。

  • C++の知識は必要?
  • 数学や物理の知識は必須?
  • 英語ができるほうが良い?
  • DirectXやOpenGLの知識は必須?
  • シェーダー関連の知識はあるほうが良い?
  • ゲームプログラミングの上達方法は?

C++の知識は必要?

C++の知識があるほうが有利です。今回ご紹介したゲーム開発サイトの大半は、C++の機能を少なからず使用しています。そもそもC++とは、C言語の機能を拡張した、いわば「C言語の進化版」です。とくに「オブジェクト指向」は特徴的で、C#やJavaなどモダンな言語にも大きな影響を与えました。C++の要は、オブジェクト指向といってもいいでしょう。

オブジェクト指向は、プログラムの処理や機能を細かく分けて、それらを組み合わせてプログラムを構成するという概念です。しかし、C++は「オブジェクト指向でなければ使えない」という言語ではなく、「C言語の延長線」として使うこともできます。こうしたC++の使い方は「ベターC」と呼ばれ、「C++の便利なところだけ使おう」という考え方です。

たとえばC++独自の機能として、STLやストリーム、stringクラスなどがあります。STLは「Standard Template Library」のことで、配列やリストなどが標準機能として実装されています。ストリームは文字列やファイルの入出力がスムーズに行える便利な機能です。何よりも嬉しいのは、C言語でとくに面倒だった「文字列」を簡単に扱えるstringクラスでしょう。

何が言いたいのかというと、「C言語だけではなく、C++の便利機能も使いこなせるほうが良い」ということ。C言語を使っていて不便だと感じることの多くは、C++の機能で簡単に解決できます。もちろん、新しい構文を覚える必要はありますが、ゲームプログラムを効率化できるメリットは計り知れないので、適材適所で臨機応変に対応していきましょう。

数学や物理の知識は必須?

数学や物理に関しては、高校生レベルの知識があるほうが有利です。なぜなら、キャラクターの動作や当たり判定、物理演算などにベクトル・三角関数・ニュートン力学などの知識が欠かせないからです。2Dゲーム・3Dゲームのいずれも、これらはゲームの根幹を担う部分となります。

しかし、Unreal EngineやUnityなど既存のゲームエンジンを使うのであれば、数学や物理の知識がほとんどなくても、ゲーム制作は可能です。ゲームエンジンには、物理演算に必要なさまざまな機能が搭載されていて、必要な要素を組み合わせれば自動的に演算を行ってくれるからです。

既存のゲームエンジンを使わず、自分でDirectXやOpenGLを叩きたいという人は、数学や物理関連のライブラリ・処理も自身で作る必要があります。3Dの処理はとくに複雑です。たとえば、3Dグラフィックスに欠かせない行列やクォータニオンには、苦労することが多いでしょう。

DirectXの場合は「DirectXMath」ライブラリを活用すると、数学演算を行いやすくなるので便利です。DirectXMathは「Visual Studio」をインストールすれば利用可能。DxLibならさらに処理を簡素化できるので、いきなりDirectXに触れるのではなく、DxLibで慣れていくのがおすすめです。

英語ができるほうが良い?

英語ができなくてもゲームは作れます。近年では、日本語の書籍や解説サイトも充実しており、Unreal EngineやUnityは日本語もサポートしています。そのため、既存のゲームエンジンを活用する範囲においては、「英語ができなくて困る」場面はほとんどないでしょう。

しかし、ゲームエンジンを使わずにゲームを制作する場合や、Unreal Engineのより高度な機能を利用する場合などは、英語が必要になることもあります。最先端の知識や深い情報は、やはり英語の情報が新しいため、英語ができなければなかなか手に入らないからです。

前述した「RasterTek」のような海外のプログラミングサイトも、英語が読めなければ難しい部分があります。ゲームプログラマーとして就職する場合は、常に新しい知識が要求される場面が多いため、英語ができるほうが将来性が広がり、より有利な立場で活躍できます。

つまり、ゲームプログラマーを目指すなら「英語ができて損はない」ということです。英語を学ぶといっても、あくまで「読んで理解」できればOK。プログラミングで使う英単語は限られているので、Google翻訳を活用して慣れていけば理解が深まっていくでしょう。

DirectXやOpenGLの知識は必須?

Unreal EngineやUnityなど、既存のゲームエンジンを使うのであれば、DirectXやOpenGLの知識は不要です。ただし、後述するようにグラフィックス関連の「シェーダー」の知識は必須です。一方で、自分でハードウェアを叩きたい、ゲームエンジンから作ってみたいという場合は、DirectXもしくはOpenGLの使い方も学ぶ必要があります。

前述した「マルペケつくろーどっとコム」や「RasterTek」では、DirectXを直接叩いてプログラムを制作する方法が学べます。学習難易度は非常に高く、自身でさまざまなことを調べる必要はありますが、既存のゲームエンジンからは学べない、ゲームプログラミングの奥深い部分を習得できることが魅力です。

近年では、ゲームプログラマーにDirectXやOpenGLの知識はあまり求められなくなりました。インディーゲーム制作者、小中規模スタジオの大半はUnreal EngineやUnityを採用しているからです。しかし、大規模スタジオは今でも自社エンジンを使っているので、学べるのであればDirectXやOpenGLを学んでおいて損はありません。

シェーダー関連の知識はあるほうが良い?

シェーダー関連の知識は、現代のゲームプログラミングでは必要不可欠です。そもそも「シェーダー」とは、描画方法や陰影処理など、グラフィックを描画するための処理を細かく記述するプログラムのこと。現代のゲームの映像美は、「シェーダーによって成り立っている」といっても過言ではありません。

たとえば、ゲーム内のオブジェクトには影や反射があるが、それらはすべてシェーダーが行っています。また、フィールドの地面やキャラクターの衣装などには、細かな凹凸があって陰影が付いていますよね。実はこれは3Dモデル自体に、このような凹凸が付いているわけではなく、「バンプマップ」という技術でシェーダー内で凹凸を表現しているのです。

既存のゲームエンジンでも、シェーダーは基本的に自身で記載する必要があります。シェーダーは専用の「HLSL」などの言語で記載しますが、HLSLはC言語に近いので言語仕様自体は単純です。しかし、シェーダーはGPUと密接に関わっており、独特の難しさがあります。ゲームプログラマーを目指すのなら、ぜひシェーダーに触れてみてください。

ゲームプログラミングの上達方法は?

ゲームプログラミングの上達方法は、「とにかくプログラムをいじる」ことに尽きます。サンプルコードをコピー&ペーストし、動作内容を理解しながら自分なりに改変するというサイクルを繰り返すことが近道です。プログラミングの学習でよく誤解されることですが、プログラムは1文字ずつ自分で打ち込んでいく必要はありません。

たとえば、先ほど紹介した「新・ゲームプログラミングの館」は、基本的に指示どおりにコピペしていけばそれなりのレベルのゲームが作れます。しかし、単にコピペを繰り返していては上達しません。「なぜこのプログラムで動くのか」「どの部分にどういう機能があるのか」など、コピペしたプログラムの内容を理解することが大切です。

ゲームプログラムを理解するためには、解説を何度も読み、デバッグモードでステップを追うのが基本。さらに、数値を適当に書き換えてみるのも役立ちます。たとえば「0.1」を「10」に書き換えてみると、ゲーム内の動作も変わります。ゲームプログラミングは可視化される部分が多いので、どこがどんな機能を果たすのかわかりやすいのです。

どうしてもわからない部分はこだわらず、後回しにしてとりあえず進めるというのもアリです。ある程度進めた段階で振り返ってみると、過去の疑問が解消されることもあります。「手を動かすこと」「進めること」が、ゲームプログラミング上達の近道です。完璧さにこだわらず、70点でも50点でも良いので少しずつ積み上げていきましょう。

C言語を学んでゲーム開発にチャレンジしてみよう

C言語を学んでゲーム開発にチャレンジしてみよう

C言語でゲーム開発ができるようになるまでの道のりや、ゲームプログラミングの技術を学ぶために最適なWebサイトなどを解説しました。ゲームプログラミングにはさまざまな方法があります。いずれの場合でも、基本的なC言語の知識をしっかり学び、コンソール画面でシンプルなゲームを作成して、ステップアップしてスキルを磨いていくことが重要です。

今回ご紹介したWebサイトやサンプルプログラムは、いずれもゲームプログラミングを学ぶために役立ちます。Unreal EngineやUnityは、公式のチュートリアルが充実しています。DXライブラリやDirectXは学習が非常に難しいですが、わかりやすい解説・ハイレベルなサンプルなどが充実しているので、ぜひこの機会にゲーム開発にチャレンジしてみてください。

著者紹介

084tjsfdsf983asdlk03

084tjsfdsf983asdlk03

コードカキタイがオススメする記事!

  1. 子供におすすめのプログラミングスクール10選!学習メリットや教室選びのコツも紹介

    2022.01.06

    子供におすすめのプログラミングスクール10選!学習メリットや教室選びのコツも紹介

    #プログラミングスクール

  2. 【完全版】大学生におすすめのプログラミングスクール13選!選ぶコツも詳しく解説

    2022.01.06

    【完全版】大学生におすすめのプログラミングスクール13選!選ぶコツも詳しく解説

    #プログラミングスクール

  3. 【未経験でも転職可】30代におすすめプログラミングスクール8選!

    2022.01.06

    【未経験でも転職可】30代におすすめプログラミングスクール8選!

    #プログラミングスクール

  4. 初心者必見!独学のJava学習方法とおすすめ本、アプリを詳しく解説

    2022.01.06

    初心者必見!独学のJava学習方法とおすすめ本、アプリを詳しく解説

    #JAVA

  5. 忙しい社会人におすすめプログラミングスクール15選!失敗しない選び方も詳しく解説

    2022.01.06

    忙しい社会人におすすめプログラミングスクール15選!失敗しない選び方も詳しく解説

    #プログラミングスクール

  1. 【無料あり】大阪のおすすめプログラミングスクール14選!スクール選びのコツも紹介

    2022.01.06

    【無料あり】大阪のおすすめプログラミングスクール14選!スクール選びのコツも紹介

    #プログラミングスクール

  2. 【目的別】東京のおすすめプログラミングスクール20選!スクール選びのコツも徹底解説

    2022.01.06

    【目的別】東京のおすすめプログラミングスクール20選!スクール選びのコツも徹底解説

    #プログラミングスクール

  3. 【無料あり】福岡のおすすめプログラミングスクール13選!選び方も詳しく解説

    2022.01.06

    【無料あり】福岡のおすすめプログラミングスクール13選!選び方も詳しく解説

    #プログラミングスクール

  4. 【徹底比較】名古屋のおすすめプログラミングスクール13選!選び方も詳しく解説

    2022.01.06

    【徹底比較】名古屋のおすすめプログラミングスクール13選!選び方も詳しく解説

    #プログラミングスクール

  5. 【徹底比較】おすすめのプログラミングスクール18選!失敗しない選び方も徹底解説

    2022.01.06

    【徹底比較】おすすめのプログラミングスクール18選!失敗しない選び方も徹底解説

    #プログラミングスクール