
この記事の要点
- C言語ならメモリが少ないハードでもゲーム開発は可能
- まずはコマンドプロンプト上で動く簡単なゲームを作成してみるのがおすすめ
- 本格的なゲーム作成には、DXライブラリなどを活用する
C言語はできることが多く、本格的なゲーム開発をすることも可能です。
以前、C言語でできることや利用される業務など、基本を解説していました。
当記事では、初心者向けにC言語でゲーム制作をするための具体的なステップや、便利なライブラリについて解説します。
今後ゲーム開発をしていきたい方や、よりC言語を詳しく学習したい方は、ぜひ参考にしてみてください。
C言語とは
C言語は、1970年代に開発された、かなり歴史の長いプログラミング言語です。
非常に知名度が高く、C++やJavaなど、C言語の影響を受けて開発されたプログラミング言語もあります。
ざっくり言うと、最近の言語のような便利機能がないかわりに、細かいところまで制御できる言語、というイメージです。
C言語の特徴
自由度が高い
C言語は、かなりハードウェア寄りの制御が可能です。
そのため、他の言語と比較してさまざまなことができます。
例えばメモリ管理について、Javaなどでは実行環境が自動で行う部分がありますが、C言語では動的に確保したメモリを自分で解放するなど、直接管理できるため、ぎりぎりまで最適化できます。
つまり、C言語ならメモリが限られた環境でもプログラムを動作させられます。
コードが複雑化しやすい
モダンな言語では、コーディングを簡潔にする仕組みが整っています。
C言語にはそれが少ないため、他の言語では書かなくてよい、複雑な処理の記述が必要になります。
また、できることが多い反面、注意しないとスパゲッティコードと呼ばれる、読みづらいコードになってしまいます。
C言語でできること
C言語は、メモリが限られた環境でも使えるため、ロボットや家電といった、いわゆる「組み込み系」で使われることが多いです。
また、ハードウェアレベルの制御ができるため、OSの開発にも使われています。
C言語でゲームを作成するための前提条件
当記事の手順でゲームを開発するためには、以下の2点が前提となります。
Windows環境を用意する
後述するDXライブラリのWindows版を使うため、当記事ではWindows環境を前提に解説しています。
まずはWindowsがインストールされたPCを用意しましょう。
C言語そのものはMacやLinuxでも利用できます。当記事のWindows向けの手順と、C言語を使える環境は分けて考えてください。
C言語の一通りの知識がある
C言語の基礎的な文法を一通り学習し終えている必要があります。
C言語はただでさえ習得難易度が高いと言われているので、あまり理解していない状態でさらに難易度の高いゲーム開発を行うと、学習の負担が大きくなることがあります。
もし早く確実にスキルを習得したい場合は、プログラミングスクールで学ぶのも1つの学習方法です。
Winスクールでは一人ひとりに合わせた学びを直接指導でサポートしてくれるので、習得が難しいC言語の学習におすすめです。無料体験ができるので、受講前に不安を解消してから学習に取り組めるのもポイントです。
C言語でゲームを作るためのステップ
C言語でゲームを作るステップは、以下のようになっています。
C言語の開発環境を用意する
まずは、C言語の開発環境を整える必要があります。
C言語の開発環境は、
- Visual Studioなどの統合開発環境を導入する
- コンパイラ(GCC)をインストールして、コマンドプロンプト上でコンパイル、実行する
といった方法があります。
ゲーム開発をする場合は、頻繁にコンパイルやデバッグをする必要があるため、前者のVisual Studioを導入する方法がおすすめです。
Visual Studioの導入からC言語プログラム実行までの流れは、こちらの動画がわかりやすいので、参考にしてみてください。
動画と現在の画面が異なる場合は、MicrosoftのC言語開発手順も参考になります。Visual Studioでは「C++によるデスクトップ開発」を追加すると、C言語のコンパイラも利用できます。標準設定では、拡張子が.cならC言語、.cppならC++としてコンパイルされます。
コマンドプロンプト上で動く簡単なゲームを作ってみる
本格的なゲーム作成の前に、コマンドプロンプト上で動く簡単なゲームを作成してみることを強くおすすめします。
なぜなら、「C言語の学習を完了した」ということと、「実際に動くプログラムを自力で作成した」ということでは、理解度が全く異なるからです。
早く本格的なゲーム制作に入りたい気持ちもわかりますが、まずはコマンドプロンプトでプログラムを動かして、C言語やゲーム制作の流れをつかみましょう。
ゲーム作成用のライブラリを導入する
文字を入力して結果を表示するゲームは、C言語の標準機能だけでも実装可能ですが、画像や音声を使うゲームでは、OSの機能や専用のライブラリを利用します。
また、コマンドプロンプト上で動くゲームでも、Enterキーを押さずに矢印キーを読み取ったり、画面上の表示位置を変えたりする処理は、標準Cだけでは用意されていません。OSや開発環境に対応した機能を使います。
C言語のゲーム開発ライブラリでは、「DXライブラリ」が有名です。
無料で利用できる上に、公式サイトに丁寧な解説が掲載されているため、初心者でも扱いやすいライブラリです。
C++用のライブラリですが、C言語の知識だけで扱えるよう工夫されています。
ただし、ビルドにはC++用の開発環境を使います。公式の使い方でVisual Studioの版に合う手順を選び、ソースファイルは.cppとして作成してください。C言語の学習用に作った.cのファイルと混同しないようにしましょう。
作りたいゲームを作ってみる
ここまで来れたら、あとは実践あるのみです。
何が作りたくて、そのためにはどんな機能が必要なのか、それを実現するにはどのライブラリを使って、どのように実装するのか、試行錯誤を繰り返して進めていきます。
例えば迷路なら、「壁には進めない」「出口に着いたら終了する」と、動作を1つずつ確かめていくと、問題がある箇所を探しやすくなります。機能を小さく分け、期待する動きを確認しながら作り進めましょう。
C言語で作成できるゲーム例
具体的にどのようなゲームを作成できるのかをご紹介します。
レベルの高いものもあるので、いきなり似たものを作るのではなく、まずは最小限の要素から実装していき、徐々にそれを改良していくやり方がおすすめです。
当記事では、ゲームの制作例と、実際のソースコードが公開されているDXライブラリのサンプルを紹介しています。
DXライブラリのサンプルは、もしわからなくなってもお手本を見られるので安心です。
紹介するDXライブラリのサンプルは古い開発環境で作成されています。現在の環境で使う場合は、ライブラリやプロジェクトの設定を調整する必要があります。まずは公式の入門サンプルで画面が表示されることを確かめてから、ゲームのサンプルへ進んでみてください。
コマンドプロンプト上で動くゲーム
迷路脱出ゲーム

矢印キーを使って自キャラを操作し、出口への到達を目指すというゲームです。
シンプルながら、ユーザからの入力を受け取り画面上に反映する、変数の状態に応じて条件分岐させるなど、ゲーム開発に必要な要素を一通り体験できます。
シューティングゲーム

こちらも矢印キーを使って操作するゲームです。
ただし、時間経過で敵キャラや弾の移動も行うため、迷路より難易度は上がります。
DXライブラリを使ったゲーム
じゃんけん

シンプルな見た目、処理となっていますが、このような画像を使った画面表示はC言語の標準機能だけでは実現できず、OSの機能やライブラリが必要になります。
コマンドラインで動くプログラムを作った後だと、ソースコードの短さに驚くかもしれません。
DXライブラリの入門として、作ってみてはいかがでしょう。
RPG

DXライブラリを使うと、画面描画などの難しい処理を簡単に実装できます。
RPGのように、複雑な条件分岐が必要なプログラムも実現可能です。
AIが作ったゲームのコードを使う前に確認したいこと
生成AIを使えば、ゲームのたたき台となるコードを得ることもできます。ただし、見た目がもっともらしいコードでも、そのまま手元の環境で動くとは限りません。GitHubの公式説明でも、生成コードには誤りが含まれる可能性があり、レビューとテストが必要とされています。
C言語とC++、使うライブラリを確認する
例えば「C言語のゲーム」として受け取ったコードに、std::coutやstd::vectorがあれば、C++の機能が使われています。Cとしてコンパイルする設定のままでは動きません。
Visual Studioは標準設定で.cをC、.cppをC++として扱います。コンパイル方法は設定で変更もできるため、拡張子とプロジェクト設定の両方を確認してください。
DXライブラリを使うつもりなのに、別のライブラリ専用の関数が含まれている場合も、貼り付けるだけでは動きません。読み込むヘッダ、必要なライブラリ、画像のファイル名や置き場所を確認しましょう。
迷路なら、移動・壁・出口を順に試す
最初は、自分の位置を文字で表示して、1回の入力で移動するところまで動かします。次に壁への移動を止め、最後に出口へ着いたら終了する処理を加えると、問題の場所を切り分けやすくなります。
例えば、壁へ向かって入力したら位置が変わらないか、迷路の端で範囲外へ進まないか、出口で終了するかをそれぞれ確かめます。動く版を保存してから次の変更へ進んでください。
画面が表示されたことだけで完成と判断しないのがポイントです。AIのコードを使う場合も、ゲームのルールに沿って動くかは、自分で試して確かめましょう。
C言語でのゲーム制作についてよくある質問
最初はどんなゲームを作ればよい?
数当てや、文字を入力して遊ぶじゃんけんなど、入力と結果の表示だけで遊べるものから始める方法があります。まずは1回遊べる形にして、その後で繰り返し遊ぶ機能や得点を加えると、少しずつ作り進められます。
C言語を勉強しているのに、C++の設定が必要なの?
DXライブラリを使う場合は、C++用の設定が必要です。C言語で学んだ変数や条件分岐、繰り返し、関数などの知識は使えますが、C言語とC++は別の言語です。標準Cの練習と、DXライブラリを使ったゲーム制作では、ファイルの拡張子やプロジェクトの設定を分けてください。
サンプルをコピーしたのに動かないときは?
まずは、サンプルが想定するOSや開発環境を確認してみてください。DXライブラリなら、ライブラリへのパス、x86・x64の設定、画像などの素材ファイルの置き場所も確認する箇所です。古いプロジェクトをそのまま開いて動かない場合は、公式手順で作成したプロジェクトで、短いプログラムから試す方法もあります。
まとめ
当記事では、C言語でのゲーム制作のステップや、具体的にどんなゲームを作成可能なのかをご紹介しました。
C言語は、機能が充実したプログラミング言語とは言えないため、学習難易度は高めです。
しかし、ゲーム作成を通してなら、楽しく学習できる方も多いのではないでしょうか。
C++やJavaなど、C言語の影響を受けた言語も多いため、C言語を身に着けたときのメリットは大きいと言えます。
興味を持った方は、ぜひC言語でのゲーム作成にチャレンジしてみてください。
また、C言語の中でも初心者がつまずきやすい「ポインタ」や「配列」についても解説しています。
こちらの記事を参考に、スキルアップを目指しましょう。