
Arch Linuxでも十分にゲーム開発が可能である。C言語は基本的に単調な処理が多いが、ゲーム制作は、実践的なスキルを身につけるには最適だ。
Arch Linuxの公式リポジトリには、常に最新に近いバージョンのソフトウェアが用意されている。C言語用のコンパイラやライブラリも例外ではなく、追加作業をほとんど必要とせずに、新しい機能や改善点をすぐに試せる環境が整っている。
SDL(Simple DirectMedia Layer)は、ゲームやマルチメディアアプリを開発するためのライブラリだ。SDL2やSDL3を導入することで、画像描画、音声再生、キーボードやゲームパッド入力などを統一された手順で扱える。さらに、LinuxだけでなくWindowsやmacOSでも動作するため、1つのコードを複数環境で活用できるのも大きな利点である。
https://www.libsdl.org
https://maruhiro-ver0.github.io/sdl2manual-ja/index.html
Arch Linux上でSDLを導入すれば、軽量な環境で最新の機能をすぐに試せる。ここでは、SDL2とSDL3のインストール方法から、C言語による単純なサンプルプログラムの実行まで、開発準備の流れを解説する。
必要な開発環境の準備(gccと基本ツール)
Arch LinuxでC言語を使うには、まず開発に必要なパッケージをそろえる。標準の状態ではコンパイルに必要なツールが入っていないので、自分で導入する必要がある。
基本となるのが「base-devel」グループである。これはソースコードからソフトをビルドするときに必要になるツール一式をまとめたもので、makeやbinutilsなどが含まれている。合わせてC言語のコンパイラであるgccも導入する。
sudo pacman -S --needed base-devel gccインストールが終わったら、コンパイラが動作するかを確認する。テキストエディタで「hello.c」というファイルを作り、以下のコードを書き込む。
/home/username/downloads/内に、helloディレクトリを作成し、その中にhello.cというファイルを作るとする。
テキストエディタで /home/username/downloads/hello/hello.c というファイルを作成し、次の内容を書き込む。
#include <stdio.h>
int main(void) {
printf("Hello, World!\n");
return 0;
}保存ができたら、ターミナルでそのディレクトリに移動する。
cd /home/username/downloads/hello作成したプログラムをコンパイルする。
username Downloads $ gcc hello.c -o helloGNU C コンパイラを使って、hello.c をコンパイルし実行できるファイル hello を作れ」というコマンドだ。-o の後に続く名前が、コンパイル後に生成される実行ファイルの名前になる。この例では「hello」という名前の実行ファイルを作る、という意味だ。
実行ファイルが生成されたら、次のコマンドで動作を確かめる。
username Downloads $ ./hello画面に「Hello, World!」と表示されれば、C言語の開発環境が正しく整ったことを確認できる。これでSDLの導入に進む準備が整う。
SDL2のインストールと開発用パッケージ設定
C言語の基本環境が整ったら、次にSDL2を導入する。SDL2はゲームやマルチメディア処理に必要な描画、音声、入力制御をまとめて扱えるライブラリである。Arch Linuxでは公式リポジトリから直接インストールできるので、複雑な手順は不要である。
SDL2本体に加えて、画像や音声、文字描画を扱う追加ライブラリを導入すると開発が進めやすい。具体的には「sdl2_image」「sdl2_mixer」「sdl2_ttf」の三つを組み合わせることで、PNGやJPEGの読み込み、MP3やOGGの再生、TTFフォントの描画が可能になる。ゲームを作るときにはほぼ必須の構成である。
sudo pacman -S sdl2 sdl2_image sdl2_mixer sdl2_ttfインストール後に大切なのは、コンパイル時に必要なフラグを確認することだ。SDL2を使ったプログラムは、ただgccでビルドするだけではリンクエラーが出る場合がある。そこで「pkg-config」を利用して適切なオプションを取得する。
pkg-config --cflags --libs sdl2このコマンドを実行すると、-I/usr/include/SDL2 や -lSDL2 といったフラグが表示される。プログラムをコンパイルするときは、この出力をgccに渡すことでエラーなくリンクできる。
gcc sample.c -o sample $(pkg-config --cflags --libs sdl2)この手順を理解しておくと、複数のSDL2関連ライブラリを組み合わせるときも同じように処理できる。SDL2の導入と設定が終われば、実際に動作するサンプルコードを試す準備が整う。
SDL3を試す:最新バージョンの導入方法
SDL3がArch Linuxで広がってきてはいるが、SDL2から移行するにはいくつか注意すべき点がある。ここではSDL3を導入する手順と、SDL2との違い、およびビルド時のトラブル防止策を具体的に説明する。
SDL3の導入手順
- 公式リポジトリ確認
最新のSDL3本体はArch Linuxの extra リポジトリに存在する。バージョン 3.2.22-1 のようなパッケージが公開されており、これを使えばAURを通さずにinstallできる。
sudo pacman -S sdl3これでSDL3本体がシステムに導入される。バージョンを確認するには次のように入力するとよい。
pacman -Qi sdl3- 追加ライブラリ(画像・フォントなど)をAURから導入する
SDL3の sdl3_image,sdl3_ttf,sdl3_mixer などの補助的なライブラリは、公式リポジトリに揃っていないことが多く、AUR(Arch User Repository)で入手する必要がある。 - AURヘルパーを使う
AURからライブラリを導入するときは yay や paru といったAURヘルパーを使うと便利である。AURヘルパーでPKGBUILDを取得し、依存関係も含めてビルド・インストールできる。例:
yay -S sdl3_image-git sdl3_ttf-git sdl3_mixer-gitプログラムをコンパイルするときのコマンドはSDL2と異なるので注意。
gcc sample.c -o sample $(pkg-config --cflags --libs sdl3)このようにSDL3を導入すると、SDL2とは異なる点をいくつか乗り越える必要があるが、新しい機能を使いたいなら,SDL3へ移行してもいいだろう。
サンプルコードでSDLの動作を確認する
SDLが正しく動くかを確かめるには、実際にプログラムを動かすのが一番である。ここでは小さなウィンドウを表示し、背景を青色に塗りつぶすサンプルを紹介する。このコードが動けば、ライブラリの導入とリンク設定が正しくできている証拠になる。
SDL2とSDL3では書き方が異なる部分があるので注目だ。
SDL2のとき
#include <SDL.h>
int main(int argc, char* argv[]) {
SDL_Init(SDL_INIT_VIDEO);
SDL_Window* window = SDL_CreateWindow("SDL Test",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
640, 480, 0);
SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, 0);
SDL_SetRenderDrawColor(renderer, 0, 0, 255, 255);
SDL_RenderClear(renderer);
SDL_RenderPresent(renderer);
SDL_Delay(2000);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}SDL2では、次のようにコンパイルして実行する。
// コンパイル
gcc sdl_test.c -o sdl_test $(pkg-config --cflags --libs sdl2)
// 実行
./sdl_testSDL3のとき
#include <SDL3/SDL.h>
int main(int argc, char* argv[]) {
if (!SDL_Init(SDL_INIT_VIDEO)) {
SDL_Log("SDL_Init failed: %s", SDL_GetError());
return 1;
}
SDL_Window* window;
SDL_Renderer* renderer;
// SDL3ではフラグは0でOK
if (!SDL_CreateWindowAndRenderer("SDL Test", 640, 480, 0, &window, &renderer)) {
SDL_Log("SDL_CreateWindowAndRenderer failed: %s", SDL_GetError());
SDL_Quit();
return 1;
}
SDL_SetRenderDrawColor(renderer, 0, 0, 255, SDL_ALPHA_OPAQUE);
SDL_RenderClear(renderer);
SDL_RenderPresent(renderer);
SDL_Delay(2000);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}// コンパイル
gcc sdl_test.c -o sdl_test $(pkg-config --cflags --libs sdl3)
// 実行
./sdl_test実行すると画面中央に青い背景だけのウィンドウが数秒間表示される。ここまで到達できれば、開発環境は正しく整っている。次の段階として画像や音声を組み込めば、簡単なゲーム作りに進める。
ゲーム開発をさらに進めるために
SDLの導入が終われば、次はゲーム開発に必要な機能を組み合わせていく段階に進む。SDLは画像を読み込んで表示する処理や、効果音や音楽を再生する処理をサポートしている。さらにキーボードやゲームパッドからの入力を受け取り、キャラクターを動かすこともできる。これらを組み合わせることで、2Dアクションやパズルなどのゲームを作れるようになる。



