| 原作者 | サム・ランティンガ |
|---|---|
| 開発者 | SDLコミュニティ |
| 初回リリース | 1998年 |
| 安定版リリース | 2.30.9 [1]
/ 2024年11月1日 |
| リポジトリ |
|
| 書かれた | C |
| オペレーティング·システム | Linux(例:SteamOS)、Windows、macOS 10.4以降、iOS 3.1.3以降、tvOS、[2] Android 2.3.3以降、FreeBSD 8.4以降、Nintendo Switch、PlayStation 2、Haiku、RISC OS 3.5以降、[3] MorphOS 0.4以降[4] [5] さらにv2.0.0より前:例:AmigaOSおよびMorphOS、コンソール(PlayStation、XBox、Wiiなど)、Nintendo DS |
| プラットフォーム | ' IA-32 ' (i386)、' x86-64 '、' PowerPC '、AArch64 |
| タイプ | 翻訳 |
| ライセンス | zlibライセンス 2.0.0以前: GNU LGPL [6] |
| Webサイト | このサイトについて |
Simple DirectMedia Layer ( SDL ) は、コンピュータのマルチメディアハードウェアコンポーネントにハードウェア抽象化レイヤーを提供するために設計されたクロスプラットフォームの ソフトウェア開発 ライブラリです。ソフトウェア開発者はこれを使用して、 Android、iOS、Linux、macOS、Windowsなどの多くのオペレーティングシステムで実行できる高性能なコンピュータゲームやその他のマルチメディアアプリケーションを作成できます。[7]
SDLはビデオ、オーディオ、入力デバイス、スレッド、共有オブジェクトのロード、ネットワーク、タイマーを管理します。[8] 3Dグラフィックスでは、OpenGL、Vulkan、[9] Metal、またはDirect3D11 (古いDirect3Dバージョン9もサポートされています)のコンテキストを処理できます。 SDLはゲームエンジンであるという誤解がよくあります。ただし、ライブラリはゲームを直接構築するのに適しており、その上に構築されたエンジンによって間接的に使用することもできます。
このライブラリは内部的にはCで書かれており、対象プラットフォームによってはC++またはObjective-Cで書かれることもあり、 Cでアプリケーションプログラミングインターフェースを提供し、他の言語へのバインディングも利用できる。[10]これは無料のオープンソースソフトウェアであり、バージョン2.0以降はzlibライセンスの要件が適用され、それより前のバージョンはGNU Lesser General Public Licenseが適用された。[6] zlibライセンスの下では、SDL 2.0はSDL 1.2とは異なり、クローズドソースプロジェクトで静的リンクするために自由に利用できるが、 [11]ユーザーが静的にリンクされたライブラリを自分で提供したライブラリで上書きすることは可能である。[12] 2013年にリリースされたSDL 2.0は、以前のバージョンから大きく逸脱し、3Dハードウェアアクセラレーションの機会が増えたが、後方互換性がなくなったため、1.2の呼び出しを2.0に変換するラッパーライブラリが後に利用可能になった。[13]
SDLは業界の大規模プロジェクトから小規模プロジェクトまで幅広く使用されています。2010年までに、700以上のゲーム、180のアプリケーション、120のデモがライブラリのWebサイトに掲載されました。[14]
歴史
Sam Lantinga はライブラリを作成し、Loki Softwareで働いていた 1998 年初頭に初めてリリースしました。彼は Windows アプリケーションを Macintosh に移植しているときにこのアイデアを思いつきました。その後、彼は SDL を使用してDoom をBeOSに移植しました( Doom ソース ポートを参照)。[15] SMPEGやOpenALなど、SDL と連携して動作する他の無料ライブラリもいくつか開発されました。彼はまた、2008 年に Galaxy Gameworks を設立し、SDL の商業的サポートを支援しましたが、会社の計画は時間的制約により現在保留されています。[16]
ギャラクシーゲームワークスを保留にした直後、ランティンガはSDL 1.3(後にSDL 2.0となる)をzlibライセンスでライセンスすると発表した。[17]ランティンガは2012年7月14日にSDL 2.0を発表し、同時にValveに入社することも発表した。Valveの最初のバージョンは彼が入社したその日に発表された。[18]ランティンガは2013年8月13日にSDL 2.0.0の安定版リリースを発表した。[19]
SDL 2.0は、SDL 1.2コードベースのメジャーアップデートであり、下位互換性のない異なるAPI [20] を備えています。1.2 APIのいくつかの部分を、より一般的な複数の入出力オプションのサポートに置き換えています。追加された機能には、複数のウィンドウのサポート、ハードウェアアクセラレーションによる2Dグラフィックス、およびより優れたUnicodeサポートなどがあります。[21]
MirとWaylandのサポートはSDL 2.0.2で追加され[22]、SDL 2.0.4ではデフォルトで有効になりました。[23]バージョン2.0.4ではAndroidのサポートも強化されました。[24]
2024年には、SDL 3.1.3の安定版プレビューがリリースされました。これにより、APIの一貫性が向上し、デバイスのより多くの部分にアクセスできるようになるほか、他の機能も追加されました。[25]
ソフトウェアアーキテクチャ
SDLは、ゲームがアクセスする必要があるオペレーティングシステム固有の機能をラップしたものです。SDLの唯一の目的は、複数のオペレーティングシステム(クロスプラットフォーム)でこれらの機能にアクセスするための共通のフレームワークを提供することです。 [26] SDLは、2Dピクセル操作、サウンド、ファイルアクセス、イベント処理、タイミング、スレッドのサポートを提供します。OpenGLはレンダリングのみで構成されているため、グラフィカル出力を設定し、マウスとキーボードの入力を提供することで OpenGLを補完するためによく使用されます。
Simple DirectMedia Layer を使用するゲームは、すべてのオペレーティング システムで自動的に実行されるわけではありません。追加の調整を適用する必要があります。SDL にはオペレーティング システムによって提供される頻繁に使用される機能用の抽象化 API もいくつか含まれているため、調整は最小限に抑えられています。
SDL の構文は関数ベースです。SDL で実行されるすべての操作は、サブルーチン(関数) にパラメータを渡すことによって実行されます。また、SDL が処理する必要のある特定の情報を格納するために、特別な構造体も使用されます。SDL 関数は、いくつかの異なるサブシステムに分類されます。
サブシステム
SDLはいくつかのサブシステムに分かれている: [27]
- 基礎
- 初期化とシャットダウン、構成変数、エラー処理、ログ処理
- ビデオ
- ディスプレイとウィンドウの管理、サーフェス機能、レンダリングの高速化など。
- 入力イベント
- イベント処理、キーボード、マウス、ジョイスティック、ゲームコントローラのサポート
- フォースフィードバック
- SDL_haptic.h は「フォースフィードバック」のサポートを実装します
- オーディオ
- SDL_audio.hはオーディオデバイスの管理、再生、録音を実装します
- スレッド
- マルチスレッド: スレッド管理、スレッド同期プリミティブ、アトミック操作
- タイマー
- タイマーサポート
- ファイルの抽象化
- ファイルシステムパス、ファイルI/O抽象化
- 共有オブジェクトのサポート
- 共有オブジェクトの読み込みと関数の検索
- プラットフォームとCPU情報
- プラットフォーム検出、CPU 機能検出、バイト順序とバイトスワッピング、ビット操作
- 電源管理
- 電源管理ステータス
- 追加
- プラットフォーム固有の機能
この基本的な低レベルのサポートの他に、いくつかの追加の機能を提供する個別の公式ライブラリもいくつかあります。これらは「標準ライブラリ」を構成し、公式 Web サイトで提供され、公式ドキュメントに含まれています。
- SDL_image — 複数の画像フォーマットのサポート[28]
- SDL_mixer — 主にサウンドミキシングのための複雑なオーディオ関数[29]
- SDL_net — ネットワークサポート[30]
- SDL_ttf — TrueTypeフォントレンダリングサポート[31]
- SDL_rtf — シンプルなリッチテキストフォーマットレンダリング[32]
他にも、非標準のライブラリが存在します。たとえば、Amir Taakiが作成した SourceForge の SDL_Collide などです。
言語バインディング
SDL 2.0 ライブラリには、次の言語バインディングがあります。
サポートされているバックエンド

SDLの設計方法により、ソースコードの多くは各オペレーティングシステムごとに別々のモジュールに分割され、基盤となるシステムを呼び出すことができます。SDLがコンパイルされると、ターゲットシステムに適したモジュールが選択されます。次のバックエンドが利用可能です: [7]
- Microsoft Windows用のGDIバックエンド。
- DirectXバックエンド。古い SDL 1.2 はデフォルトで DirectX 7 を使用しますが、2.0 はデフォルトで DirectX 9 を使用し、DirectX 12 までアクセスできます。
- macOS用のQuartzバックエンド(2.0 で削除)。
- macOS / iOS / tvOS 2.0.8以降のMetalバックエンド。古いバージョンではデフォルトでOpenGLが使用される。[50] [51]
- さまざまなオペレーティングシステム上のX11ベースのウィンドウシステム用のXlibバックエンド。[52]
- 様々なプラットフォーム上のOpenGLコンテキスト。[53]
- Waylandベースのウィンドウシステムと組み合わせて使用する場合のEGLバックエンド。[54] Raspberry Pi [55]およびその他のシステム。
- Vulkanコンテキストをサポートするプラットフォーム。[9]
- sceGu バックエンドは、 PSPにネイティブな Sony OpenGL 風のバックエンドです。
SDL 1.2では非公式のSixelバックエンドが利用可能です。[56]
Rockbox MP3プレーヤーのファームウェアには、Quakeなどのゲームを実行するために使用されるSDL 1.2のバージョンも配布されています。[57]
受け入れと採用

長年にわたり、SDLは多くの商用および非商用のビデオゲームプロジェクトに使用されました。たとえば、MobyGamesは2013年にSDLを使用した120のゲームをリストし、[58] SDLのWebサイト自体も2012年に約700のゲームをリストしました。[59]重要な商用例としては、 Angry Birds、[60] Unreal Tournament、およびクロスプラットフォームの互換性のためにSDLを広範に使用しているValveのSource Engineを使用して開発されたゲームがあります。オープンソースドメインの例としては、OpenTTD、[61] The Battle for Wesnoth [62]またはFreeciv [63]があります。
Linux、Mac、Android 向けの人気のHumble Indie Bundlesのクロスプラットフォーム ゲーム リリースは、多くの場合 SDL ベースです。
SDLは、レガシーコードを持つ新しいプラットフォームへの移植にもよく使用されます。たとえば、PCゲームのHomeworldはPandora ハンドヘルド[64]に移植され、Jagged Alliance 2はAndroid [65]にSDL経由で移植されました。
また、ビデオ ゲーム以外のプログラムでも SDL が使用されています。例としては、DOSBox、FUSE ZX Spectrum エミュレーター、VisualBoyAdvanceなどのエミュレーターが挙げられます。
SDL を使用した開発向けに書かれた書籍がいくつかあります (詳細については、こちらを参照してください)。
SDL は、マルチメディアとコンピュータ サイエンスを教える大学のコースで使用されています。たとえば、 2010 年にカディス大学で開催された libSDL を使用したゲーム プログラミングに関するワークショップや、2015 年にUTFPR (ポンタ グロッサ キャンパス) で開催されたゲーム デザイン分野などです。
SDL を使用したビデオゲームの例
-
未知の地平線[66]
-
ヘッジワーズ[67]
-
スコーチ3D [68]
-
フレット・オン・ファイア[69]
-
ウーライト[70]
-
ウェスノスの戦い[71]
-
0年[72]
-
秘密のマリアクロニクル[73]
-
トライン2 [74]
-
ティーワールド[75]
参照
参考文献
- ^ “リリース 2.30.9”. 2024年10月1日. 2024年11月8日閲覧。
- ^ 「SDL 2.0.5 では、Apple TV で SDL ベースのゲームをプレイしたい人のために、公式の tvOS サポートが提供されます!」 2016 年 9 月 15 日。
- ^ 「SDL/docs/README-riscos.md at 9d83c0a65d969a902c91f4f94fd5a904c0828a33 · libsdl-org/SDL」。GitHub 。2024年3月17日閲覧。
- ^ 「MorphOS 用の素晴らしいギャラガ スタイルのトゥルー カラー ゲーム (SDL を使用)」。
- ^ 「SDL 2.30.7 ライブラリ」 。 2024年11月6日閲覧。
- ^ ab 「SDLライセンス」。2014年3月3日閲覧。
- ^ ab 「SDLがサポートするプラットフォームのリスト」。Libsdl.org。2016年4月1日時点のオリジナルよりアーカイブ。2016年4月9日閲覧。
- ^ 「SDL 公式サイト」 Libsdl.org . 2010 年3 月 19 日閲覧。
- ^ ab "CategoryVulkan - SDL Wiki'". wiki.libsdl.org . 2019年5月5日閲覧。
- ^ abcdefghij 「SDL 言語バインディング」。libsdl.org 。シンプル DirectMedia レイヤー。2014 年8 月 13 日閲覧。
- ^ 「Simple DirectMedia Layer ライブラリのライセンス」 。2012年1 月 30 日閲覧。
- ^ 「SDL/docs/README-dynapi.md at main · libsdl-org/SDL」。GitHub 。2024年6月25日閲覧。
- ^ libsdl-org/sdl12-compat、Simple Directmedia Layer、2024年6月1日、2024年6月25日閲覧
- ^ “Simple DirectMedia Layer”. 2010年6月29日. 2010年6月29日時点のオリジナルよりアーカイブ。2021年8月7日閲覧。
- ^ Lantinga, Sam (1999年9月1日). 「SDL: Linuxを楽しくする」. IBM . 2003年5月11日時点のオリジナルよりアーカイブ。 2023年12月15日閲覧。
- ^ 「銀河の探査」 2011年4月6日. 2012年1月30日閲覧。
- ^ SDL 1.3 は zLib ライセンスになります、SDL メーリング リスト、2011 年 4 月 7 日
- ^ 「SDL 2.0 が新機能とともに間もなく登場」 。2012年8 月 17 日閲覧。
- ^ SDL 2.0.0 の発表、SDL メーリング リスト、2013 年 8 月 13 日
- ^ MigrationGuide - SDL Wiki'. Wiki.libsdl.org (2013 年 11 月 21 日). 2013 年 12 月 8 日に取得。
- ^ 「SDL 1.3 ロードマップ」 2011 年 6 月 14 日. 2011 年7 月 25 日閲覧。
- ^ Sneddon, Joey-Elijah (2014 年 2 月 5 日)。「Linux の最も人気のあるゲームの一部は Mir でネイティブに動作します」 。2014年3 月 19 日閲覧。
- ^ Lantinga, Sam (2016年1月2日). 「SDL 2.0.4 Changelog」。2016年3月4日時点のオリジナルよりアーカイブ。2016年1月6日閲覧。
- ^ 「SDL_SysWMinfo」.
- ^ 「SDL 3.1.3 安定版 ABI プレビューリリース」。Phoronix . 2024 年11 月 13 日閲覧。
- ^ 「SDL 入門」 。2014年3 月 3 日閲覧。
- ^ 「APIByCategory」.
- ^ "SDL_image 2.0". libsdl.org . 2014年7月19日閲覧。
- ^ "SDL_mixer 2.0". libsdl.org . 2014年7月19日閲覧。
- ^ "SDL_net 2.0". libsdl.org . 2014年7月19日閲覧。
- ^ "SDL_ttf 2.0". libsdl.org . 2014年7月19日閲覧。
- ^ "SDL_rtf 0.1". libsdl.org . 2014年7月19日閲覧。
- ^ "cl-sdl2". GitHub . 2017年11月23日閲覧。
- ^ “f03sdl2”. GitHub . 2019年10月28日閲覧。
- ^ “gb.sdl2”.ガンバWiki 。2023 年2 月 2 日に取得。
- ^ ab Robison, Arch D. (2015年11月9日). 「Go + Julia + Fourier = Open Source Frequon Invaders」. software.intel.com . 2019年8月2日閲覧。
- ^ 「Hackage 上の SDL」。
- ^ 「Hackage 上の SDL2」。
- ^ Bieler, Jonathan (2020 年 7 月 30 日). 「jonathanBieler/SimpleDirectMediaLayer.jl」. GitHub . 2020 年8 月 8 日閲覧。
- ^ SquidSinker (2020年8月2日). 「GameZero.jlのサンプルゲーム」. GitHub . 2020年8月8日閲覧。
- ^ Daly, Nathan (2019年7月31日). 「SDL2を使用してJuliaで書かれたサンプルゲーム」. GitHub . 2019年8月2日閲覧。
- ^ 「SDL2 for Nim」。GitHub 。 2022年5月31日閲覧。
- ^ 「Odinベンダーライブラリコレクション」。
- ^ 「Odin GitHub リポジトリ」。GitHub。
- ^ 「PerlGameDev/SDL」。GitHub 。 2019年2月20日閲覧。
- ^ 「PHP-SDL」。GitHub 。 2019年10月28日閲覧。
- ^ "SDL2::Raw". modules.raku.org . 2020年5月15日閲覧。
- ^ リングプログラミング入門 - 初心者からプロまで | Mansour Ayouni | Apress.
- ^ 「RingLibSDL の使用 — Ring 1.16 ドキュメント」。
- ^ “WhatsNew.txt”. 2020年11月11日時点のオリジナルよりアーカイブ。 2020年9月28日閲覧。
- ^ 「[コミット] SDL: Metal レンダラーのビルドをデフォルトで有効にし、弱いリンクを有効にする...」 2017 年 12 月 7 日。
- ^ "SDL: README-platforms.txt@3e2f230a6d62". Hg.libsdl.org . libsdl.org. 2013年12月15日時点のオリジナルよりアーカイブ。2013年12月8日閲覧。
- ^ 「SDL での OpenGL の使用」 。2015年7 月 9 日閲覧。
- ^ 「SDL と Wayland」。
- ^ Larabel, Michael (2013 年 9 月 30 日). 「SDL2 ライブラリに Raspberry Pi サポートが追加されました」。
- ^ 「SDL 1.2 Sixel」。GitHub 。 2016年4月9日閲覧。
- ^ 「SDLPluginPort」 。 2019年8月11日閲覧。
- ^ 「ミドルウェア: SDL グループの説明」。MobyGames。2013年 9 月 27 日。2012年5 月 18 日に閲覧。非常
に移植性の高い Simple DirectMedia Layer を使用するゲーム。
[永久リンク切れ ]
- ^ “Games”. libsdl.org. 2012年5月18日. 2010年6月29日時点のオリジナルよりアーカイブ。 2012年5月18日閲覧。
- ^ 「SDL の証言」Galaxygameworks.com。2011 年 7 月 16 日時点のオリジナルよりアーカイブ。2012 年2 月 1 日閲覧。
- ^ 「開発」。OpenTTD。2014年7月10日時点のオリジナルよりアーカイブ。 2010年3月19日閲覧。
- ^ 「CompilingWesnoth」Wesnoth、2010年2月27日。2009年4月6日時点のオリジナルよりアーカイブ。 2010年3月19日閲覧。
- ^ 「SDLClient - Freeciv.org」。Freeciv.wikia.com 。 2010年3月19日閲覧。
- ^ may88 (2011 年 6 月 23 日)。「今週のゲーム #3 – Homeworld SDL」。pandorapress.net。2012年5 月 8 日閲覧。
[...] HomeworldSDL のポートがリリースされました。フォーラム メンバーの Edglex のおかげで、Pandora で HomeworldSDL の優れた成果を体験できます。
- ^ JA2 Stracciatella フィードバック » Jagged Alliance 2 Android Stracciatella ポート RC2 リリース - テストしてください。2011年 10 月 3 日、Bear's Pit フォーラムのWayback Machineに 2012 年 10 月 23 日にアーカイブされました。
- ^ 「Features · fifengine/fifengine Wiki · GitHub」。GitHub 。 2015年3月9日閲覧。
- ^ 「FAQ Hedgewars」hedgewars.org . 2014 年10 月 3 日閲覧。
...SDL >= 1.2.5...
- ^ 「開発の詳細」。scorched3d.co.uk。2014年 10 月 6 日時点のオリジナルからのアーカイブ。2014年10 月 3 日に取得。...
Simple DirectMedia Layer - クロスプラットフォーム ゲーム ウィンドウ用の SDL...
- ^ 「ゲームについて」。2021年9月20日閲覧。
- ^ 「OOlite SDL Dependencies」. GitHub . 2016年5月29日. 2021年9月21日閲覧。
- ^ 「ロードマップ - Wesnoth」www.wesnoth.org。2015年3月6日時点のオリジナルよりアーカイブ。 2015年3月9日閲覧。
- ^ 「New Release: 0 AD Alpha 19 Syllepsis」。2015年11月26日。 2021年9月20日閲覧。Linux
ユーザーの方は、LinuxではSDL2がデフォルトで有効になっていることにご注意ください。
- ^ 「Secret Maryo Chronicles」. sourceforge.net . 2014 年 8 月 28 日. 2014 年10 月 3 日閲覧.
... SDL に基づく ...
- ^ 「Frozenbyte サポート」。trine2.com。2020年9 月 1 日閲覧。
- ^ 「[HowTo] Windows で 0.7 をコンパイルする (ページ 1) — 開発 — Teeworlds フォーラム」。
さらに読む
- Alberto García Serrano: Programación de videojuegos en SDL、Ediversitas、ISBN 84-95836-08-4 (スペイン語)
- アーネスト・パゼラ:SDL に焦点を当てる、ムスカ&リップマン/プレミア・トレード、ISBN 1-59200-030-4
- Ron Penton:ゲームプログラマーのためのデータ構造、Muska & Lipman/Premier-Trade、ISBN 1-931841-94-2 ( SDL を使用したゲームプログラミングの例)
- John R. Hall: Programming Linux Games、No Starch、ISBN 1-886411-49-2 ( Loki Gamesによる最初の SDL 書籍、アーカイブされたオンライン バージョン: PDF はWayback Machineで (2003 年 1 月 22 日にアーカイブ)、LaTex ソースはWayback Machineで(2003 年 2 月 14 日にアーカイブ))
外部リンク
- 公式サイト
