Simple DirectMedia Layer ( SDL ) は、コンピュータのマルチメディアハードウェアコンポーネントのハードウェア抽象化レイヤーを提供するように設計されたクロスプラットフォームのソフトウェア開発ライブラリです。ソフトウェア開発者はこれを使用して、 AmigaOS、Android、iOS、Linux、MorphOS、macOS、Windowsなどの多くのオペレーティングシステムで実行できる高性能コンピュータゲームやその他のマルチメディアアプリケーションを作成できます。[ 9 ]
SDL は、ビデオ、オーディオ、入力デバイス、スレッド、共有オブジェクトの読み込み、コンピュータ ネットワーク、タイマーを管理します。[ 10 ] 3D グラフィックスに関しては、 OpenGL、Vulkan、[ 11 ] Metal、またはDirect3D12 [ 12 ] (古い Direct3D バージョン 11 および 9 もサポートされています) のコンテキストを処理できます。よくある誤解として、SDL はゲーム エンジンであるというものがあります。ただし、このライブラリはゲームを直接構築するのに適しているか、または、その上に構築されたエンジンによって間接的に使用できます。
ライブラリは内部的にはCで記述されており、ターゲット プラットフォームによってはC++またはObjective-C で記述される可能性があり、アプリケーション プログラミング インターフェイスはC で提供され、他の言語へのバインディングも利用可能です。[ 13 ]バージョン 2.0 以降はzlib ライセンスの要件に従うフリーでオープンソースのソフトウェアであり、それ以前のバージョンはGNU Lesser General Public Licenseに従っていました。[ 8 ] zlib ライセンスの下では、SDL 2.0 はSDL 1.2 とは異なり、クローズド ソースプロジェクトでの静的リンクに自由に利用できますが、 [ 14 ]ユーザーが静的にリンクされたライブラリを独自に提供したもので上書きすることは可能です。[ 15 ] 2013 年にリリースされた SDL 2.0 は、以前のバージョンから大きく変更され、3D ハードウェア アクセラレーションの機会が増えましたが、後方互換性が失われました。1.2 の呼び出しを 2.0 に変換するラッパー ライブラリが後に利用可能になりました。[ 16 ]
SDLは業界で大小さまざまなプロジェクトで広く使用されています。2010年までに、700以上のゲーム、180のアプリケーション、120のデモがライブラリのウェブサイトに掲載されました。[ 17 ]
SDLはEmscripten(つまり、ウェブページ上で実行されるプログラム)をサポートしています。
SDL 3 は、安定版として 2025 年 1 月にリリースされました。移行ガイドと、新しいメジャー バージョンへの移行を支援するCoccinelleツールのサポートがあります。SDL 3 では、プログラムのエントリ ポイントを制御する新しい方法があり、[ 18 ]オプションでフレームワーク以外の方法で実行を制御できます。
サム・ランティンガは、ロキ・ソフトウェアで働いていた1998年初頭にこのライブラリを作成し、最初にリリースしました。彼はWindowsアプリケーションをMacintoshに移植しているときにこのアイデアを得ました。その後、彼はSDLを使用してDoomをBeOSに移植しました(Doomソースポートを参照)。[ 19 ]作成当時、SDLはDirectXのシンプルな代替品と見なされていました。[ 20 ] SMPEGやOpenALなど、SDLと連携して動作する他のいくつかのフリーライブラリが開発されました。彼はまた、SDLの商業的サポートを支援するために2008年にGalaxy Gameworksを設立しましたが、時間的な制約により、会社の計画は現在保留されています。[ 21 ]
Galaxy Gameworks を一時中断した直後、Lantinga は SDL 1.3 (後に SDL 2.0 となる) がzlib ライセンスの下でライセンスされることを発表した。[ 22 ] Lantinga は 2012 年 7 月 14 日に SDL 2.0 を発表し、同時にValveに入社することも発表した。その最初のバージョンは、彼が入社したのと同じ日に発表された。[ 23 ] Lantinga は 2013 年 8 月 13 日に SDL 2.0.0 の安定版リリースを発表した。[ 24 ]
SDL 2.0 は、SDL 1.2コードベースのメジャーアップデートであり、異なる、後方互換性のない[ 25 ] APIを採用しています。1.2 API のいくつかの部分を、複数の入力および出力オプションに対するより一般的なサポートに置き換えています。追加された機能には、マルチウィンドウのサポート、ハードウェアアクセラレーションによる 2D グラフィックス、およびUnicodeサポートの改善などがあります。[ 26 ]
MirとWaylandのサポートはSDL 2.0.2 [ 27 ]で追加され、SDL 2.0.4 [ 28 ]でデフォルトで有効になりました。バージョン2.0.4ではAndroidのサポートも改善されました。[ 29 ]
2024年にSDL 3.1.3の安定版プレビューがリリースされ(そして2025年1月には3.2.0が安定版としてリリースされた)、APIの一貫性が向上し、デバイスのより多くの部分へのアクセスが可能になったほか、他の機能も追加された。[ 30 ]
SDL は、プログラムがアクセスする必要のあるオペレーティングシステム固有の関数をラップするものです。SDL の唯一の目的は、複数のオペレーティングシステム (クロスプラットフォーム) でこれらの関数にアクセスするための共通のフレームワークを提供することです。 [ 31 ] SDL は、2D ピクセル操作、サウンド、ファイルアクセス、イベント処理、タイミング、スレッド処理をサポートします。OpenGLはレンダリングのみで構成されているため、SDL はグラフィカル出力の設定やマウスおよびキーボード入力の提供によってOpenGL を補完するためによく使用されます。
Simple DirectMedia Layer(SDL)を使用するゲームは、すべてのオペレーティングシステムで自動的に動作するわけではありません。追加の調整が必要になります。ただし、SDLにはオペレーティングシステムが提供する一般的な機能のための抽象化APIがいくつか含まれているため、調整は最小限に抑えられます。
SDLの構文は関数ベースです。SDLで行われるすべての操作は、サブルーチン(関数)にパラメータを渡すことによって実行されます。また、SDLが処理する必要のある特定の情報を格納するために、特別な構造体も使用されます。SDL関数は、いくつかの異なるサブシステムに分類されます。
SDLはいくつかのサブシステムに分割されています。[ 32 ]
この基本的な低レベルサポートに加えて、さらに多くの機能を提供する公式ライブラリがいくつか存在します。これらは「標準ライブラリ」を構成し、公式ウェブサイトで提供され、公式ドキュメントにも含まれています。
他にも、標準規格に当てはまらないライブラリが存在する。例えば、SourceForgeでAmir Taaki氏が作成したSDL_Collideなどが挙げられる。
SDL 2.0ライブラリには、以下の言語バインディングが含まれています。

SDL の設計方法により、ソースコードの大部分は各オペレーティングシステムごとに個別のモジュールに分割され、基盤となるシステムへの呼び出しが行われます。SDL がコンパイルされる際には、ターゲットシステムに適したモジュールが選択されます。以下のバックエンドが利用可能です: [ 9 ]
SDL 1.2 用の非公式Sixelバックエンドが利用可能です。[ 60 ]
Rockbox MP3プレーヤーのファームウェアには、Quakeなどのゲームを実行するために使用されるSDL 1.2のバージョンも含まれています。[ 61 ]

長年にわたり、SDL は多くの商用および非商用のビデオゲーム プロジェクトで使用されてきました。たとえば、MobyGames は2013 年に SDL を使用しているゲームを 120 個リストアップしており[ 62 ]、SDL の Web サイト自体も 2012 年に約 700 個のゲームをリストアップしています[ 63 ] 。重要な商用の例としては、Angry Birds [ 64 ] 、Unreal Tournament、ValveのSource Engineを使用して開発されたゲームがあり、Source Engine はクロス プラットフォーム互換性のために SDL を幅広く使用しています。オープンソース ドメインの例としては、 OpenTTD [ 65 ] 、The Battle for Wesnoth [ 66 ]、Freeciv [ 67 ]などがあります。
Linux、Mac、Android向けの人気ゲームバンドル「Humble Indie Bundles」のクロスプラットフォーム版は、多くの場合SDLをベースとしている。
SDLは、レガシーコードを持つ新しいプラットフォームへの後からの移植にもよく使用されます。たとえば、PCゲームのHomeworldは、SDLを介してPandoraハンドヘルド[ 68 ]やJagged Alliance 2 for Android [ 69 ]に移植されました。
また、ビデオゲーム以外のプログラムでもSDLが使用されているものがいくつかあります。例えば、 DOSBox、FUSE ZX Spectrumエミュレータ、VisualBoyAdvanceなどのエミュレータです。
SDLを用いた開発に関する書籍はいくつか出版されている(参考文献を参照)。
SDLは、マルチメディアやコンピュータサイエンスを教える大学の授業で使用されています。例えば、 2010年にカディス大学で開催されたlibSDLを使用したゲームプログラミングに関するワークショップや、2015年にUTFPR(ポンタ・グロッサキャンパス)のゲームデザイン学科で使用されました。
非常に移植性の高い Simple DirectMedia Layer を使用するゲーム。
{{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク)[...] HomeworldSDLのリリースされた移植版。フォーラムメンバーのEdglexにより、PandoraでHomeworldSDLの素晴らしい作品を体験できます。
...SDL >= 1.2.5...
Simple DirectMedia Layer - クロスプラットフォームゲームウィンドウ用のSDL...
ユーザーの皆様へ、SDL2はLinuxでデフォルトで有効になりました。
...
SDLに基づく
...