目次 [#k602c5bf]
#contents
SDL3で始めるクロスプラットフォームゲーム開発 - 環境構築ガイド [#y205cba4]

ゲーム開発やマルチメディアアプリケーションを作りたいなら、SDL3(Simple DirectMedia Layer 3)は強力な選択肢です。この記事では、Windows、macOS、Linux向けのSDL3環境構築方法を解説します。
** SDL3とは? [#sd96f0eb]
SDL3は、グラフィックス、サウンド、入力デバイスなどを扱うための低レベルAPIを提供するクロスプラットフォームなライブラリです。C言語で書かれていますが、多数の言語バインディングがあり、以下のような機能を備えています:

2Dレンダリング
ハードウェアアクセラレーション
入力デバイス(キーボード、マウス、ジョイスティックなど)のサポート
オーディオ再生と録音
ウィンドウ管理
ネットワーキング

多くの有名ゲームやエミュレータがSDLを採用しており、ValveのSteamもSDLを利用しています。SDL3はSDL2の後継バージョンで、APIの改良やパフォーマンスの向上が図られています。
それでは早速、各OS向けの環境構築方法を見ていきましょう。
** Windows での環境構築 [#o67065c3]
*** 必要なもの [#pcec8ad7]
*** SDL3(Simple DirectMedia Layer)をVisual Studio 2022で動かす環境を構築してみる 2025年版 [#k6ed919e]
https://massie0414.com/index.php/sdl/10604/

Visual Studio(無料のCommunity Editionで十分)
SDL3開発ライブラリ

*** 手順 [#dfb6daf1]



Visual Studioのインストール



Visual Studioからダウンロードし、インストール
インストーラーで「C++によるデスクトップ開発」ワークロードを選択



SDL3のダウンロード



SDL公式GitHubから「SDL3-3.2.8-win32-x64.zip」などの最新リリースをダウンロード
ZIPファイルを任意の場所に解凍(例:C:\SDL3)
SDL3.dllというファイルが入っており、これを配置するだけでインストール不要



プロジェクトの設定


Visual Studioで新しいC++プロジェクトを作成
プロジェクトのプロパティを開き、以下を設定:

C/C++ > 追加のインクルードディレクトリにC:\SDL3\includeを追加
リンカー > 追加のライブラリディレクトリにC:\SDL3\lib\x64を追加
リンカー > 入力 > 追加の依存ファイルにSDL3.libを追加






SDL3.dllのコピー


C:\SDL3\lib\x64フォルダからSDL3.dllをプロジェクトの実行ファイルと同じディレクトリにコピー



*** サンプルコード [#x18a1b4d]
#include <SDL3/SDL.h>
#include <iostream>
int main(int argc, char* argv[]) {
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
std::cout << "SDL初期化に失敗: " << SDL_GetError() << std::endl;
return -1;
}
コピー SDL_Window* window = SDL_CreateWindow(
     "SDL3テストウィンドウ",
     640, 480,
     SDL_WINDOW_RESIZABLE
 );

 if (!window) {
     std::cout << "ウィンドウ作成に失敗: " << SDL_GetError() << std::endl;
     SDL_Quit();
     return -1;
 }

 SDL_Renderer* renderer = SDL_CreateRenderer(window, NULL,
SDL_RENDERER_ACCELERATED);
if (!renderer) {
std::cout << "レンダラー作成に失敗: " << SDL_GetError() << std::endl;
SDL_DestroyWindow(window);
SDL_Quit();
return -1;
}
コピー // メインループ
 bool running = true;
 SDL_Event event;
 while (running) {
     // イベント処理
     while (SDL_PollEvent(&event)) {
         if (event.type == SDL_EVENT_QUIT) {
             running = false;
         }
     }

     // 描画
     SDL_SetRenderDrawColor(renderer, 0, 0, 255, 255);  // 青色
     SDL_RenderClear(renderer);
     SDL_RenderPresent(renderer);
     
     // フレームレート制御
     SDL_Delay(16); // ~60fps
 }

 // 後片付け
 SDL_DestroyRenderer(renderer);
 SDL_DestroyWindow(window);
 SDL_Quit();

 return 0;
}
** macOS での環境構築 [#u403499d]
*** 必要なもの [#y8cb3086]

Xcode コマンドラインツール
Homebrew(パッケージマネージャー)

*** 手順 [#r78bd0cf]



Xcode コマンドラインツールのインストール
xcode-select --install




Homebrewのインストール(まだの場合)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"




SDL3のインストール
現在HomebrewではSDL3は正式にパッケージ化されていない可能性があるため、GitHubからソースコードを取得してビルドする:

bashコピーgit clone https://github.com/libsdl-org/SDL.git
cd SDL
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
sudo make install



コンパイルとリンク


SDL3をコンパイルとリンクに使用するには以下のコマンドを使用:
g++ -o my_program main.cpp pkg-config --cflags --libs sdl3



*** サンプルコード(Makefileを使用) [#we02ddfd]
main.cpp [#x2b251e5]
// Windowsと同じサンプルコード
Makefile [#pcd4f736]
CXX = g++
CXXFLAGS = $(shell pkg-config --cflags sdl3)
LDFLAGS = $(shell pkg-config --libs sdl3)
all: my_program
my_program: main.cpp
$(CXX) $(CXXFLAGS) -o $@ $< $(LDFLAGS)
clean:
rm -f my_program
** Linux での環境構築 [#nae833b0]
*** 必要なもの [#m837e9e5]

GCC または Clang
SDL3開発パッケージ

*** 手順 [#je2a9c57]



SDL3のインストール



Linux向けにも現時点ではSDL3のパッケージが準備されていない可能性が高いため、ソースからビルドします:
bashコピーgit clone https://github.com/libsdl-org/SDL.git
cd SDL
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
sudo make install



コンパイルとリンク
g++ -o my_program main.cpp pkg-config --cflags --libs sdl3



*** サンプルコード [#o47c19cb]

main.cpp
// Windowsと同じサンプルコード
Makefile

macOSと同じMakefile
** CMakeを使用したクロスプラットフォーム対応 [#saf1e408]
より一貫した開発環境のために、CMakeを使用することをお勧めします:

CMakeLists.txt

cmake_minimum_required(VERSION 3.16)
project(SDLTest)
SDL3をfind_packageで探す
find_package(SDL3 REQUIRED)
実行ファイルの追加
add_executable(sdl_test main.cpp)
target_link_libraries(sdl_test SDL3::SDL3)
Windowsの場合、SDL3.dllをコピー
if(WIN32)
add_custom_command(TARGET sdl_test POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${SDL3_DIR}/../../../bin/SDL3.dll $<TARGET_FILE_DIR>)
endif()
** トラブルシューティング [#xf8986e3]
*** 共通の問題 [#cf113c49]



"SDL3/SDL.h file not found"


インクルードパスが正しく設定されているか確認
パッケージが正しくインストールされているか確認
SDL3では、ヘッダーパスがSDL3/SDL.hのようにフォルダが追加されているため注意




リンクエラー


SDL3関連のライブラリがリンクされているか確認
SDL2から移行した場合、関数名やフラグ名が変更されていることがあるので注意




"SDL3.dll が見つかりません"(Windows)


SDL3.dllが実行ファイルと同じディレクトリにあるか確認




イベント名の違いによるエラー


SDL_QUIT(SDL2)からSDL_EVENT_QUIT(SDL3)に変更されたなど、イベント名が変わっていることに注意




予期しない動作


SDL3はまだ開発中であり、一部の機能が安定していない可能性があるため、公式のリリースノートや変更履歴を確認する



** 便利なSDL3の追加ライブラリ [#lc9b53ca]
SDL3への移行に伴い、関連ライブラリも順次SDL3対応に更新されています。以下のライブラリの最新版を確認してください:

SDL_image: PNG, JPG, GIFなどの画像ファイルを読み込むライブラリ
SDL_ttf: TrueTypeフォントのレンダリングライブラリ
SDL_mixer: 音楽と効果音の再生ライブラリ
SDL_net: ネットワーキングライブラリ

これらのライブラリはGitHubからソースコードを取得し、ビルドすることで最新版を入手できます。例えば:
bashコピーgit clone https://github.com/libsdl-org/SDL_image.git
cd SDL_image
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
sudo make install
** SDL2からSDL3への主な変更点 [#changes]
SDL3はSDL2からいくつかの大きな変更があります:

インクルードパス: #include <SDL.h> から #include <SDL3/SDL.h> に変更
ウィンドウ作成API: パラメータが変更され、位置指定方法が異なる
イベント名: SDL_QUIT → SDL_EVENT_QUIT など、接頭辞の変更
オーディオAPI: 大幅に刷新され、より柔軟になった
命名規則: より一貫性のある命名規則に変更

詳細な変更点については、SDL公式のマイグレーションガイドを参照してください。
** まとめ [#ef1285b0]
SDL3は強力でありながら習得しやすいライブラリです。この記事で解説した環境構築手順を踏めば、クロスプラットフォームなアプリケーション開発をすぐに始められます。ゲーム開発やマルチメディアアプリケーション開発に興味がある方は、ぜひSDL3を試してみてください。
次回は、SDL3を使った基本的なゲームループの作り方や、スプライトの描画方法について詳しく解説します。
** 参考リンク [#fb7a878a]
*** SDL公式サイト [#s0f630d3]
*** SDL GitHub [#ta2abe7c]
*** SDL Wiki [#sd38d83]
*** SDL3マイグレーションガイド [#m293bd87]

この記事は2025年3月29日に公開されました。SDL3のバージョンや関連ツールの更新により、手順が一部変更される可能性があります。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS