目次 [#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のバージョンや関連ツールの更新により、手順が一部変更される可能性があります。