Simple and Fast Multimedia Library ( SFML ) は、コンピュータ内のさまざまなマルチメディア コンポーネントにシンプルなアプリケーション プログラミング インターフェイス(API) を提供するように設計されたクロス プラットフォームソフトウェア開発ライブラリです。C ++で記述されており、 Ada、C、Crystal、D、Euphoria、Go、Java、Julia、.NET、Nim、OCaml、Python、Ruby、Rust、Node.js、Beef、Zuko用の バインディングが利用可能です。[ 3 ] SFML 2.2 のリリースに伴い、AndroidおよびiOS用の実験的なモバイル ポートが利用可能になりました。 [ 4 ]
SFML は、ウィンドウの作成と入力、およびOpenGLコンテキストの作成と管理を処理します。また、 FreeTypeを使用したテキスト レンダリングを含む2D コンピュータ グラフィックスのシンプルなハードウェア アクセラレーションのためのグラフィックス モジュール、 OpenALを使用するオーディオ モジュール( v3.0.0 以降はminiaudioに置き換えられました) [ 5 ] 、および基本的な伝送制御プロトコル(TCP) およびユーザー データグラム プロトコル(UDP) 通信のためのネットワーク モジュールも提供します。
SFML は、 zlib/png ライセンスの条件に基づいて提供される無料のオープンソース ソフトウェアです。Linux 、macOS、Windows、FreeBSDで利用可能です。[ 6 ] [ 7 ]最初のバージョン v1.0 は 2007 年 8 月 9 日にリリースされ、最新バージョン v3.0.0 は 2024 年 12 月 21 日にリリースされました。[ 8 ]
SFMLは様々なモジュールで構成されています。
グラフィックスモジュールはSFMLの主要機能の一つですが、OpenGLで直接プログラミングするための環境だけを作成したい開発者は、グラフィックスモジュールを使用せずにWindowモジュールのみを使用することで実現できます。同様に、Systemモジュールを除き、他のモジュールもそれぞれ独立して使用できます。Systemモジュールはすべてのモジュールで使用されます。
SFMLはC++で記述されており、C++インターフェースを提供します(公式のCSFMLバインディングを介してCインターフェースも提供します)。SFMLを他のプログラミング言語で使用できるようにする言語バインディングがいくつか存在します。[ 3 ]
この表は、2024年時点でサポートされているSFMLのバインディングの一覧です。。
1公式バインディング
SFML は、より高レベルのソフトウェアを構築するための基本機能を提供します。グラフィカルユーザーインターフェイス(GUI) [ 9 ] [ 10 ] 2Dライティング[ 11 ]パーティクルシステムとアニメーション[ 12 ]ビデオ再生[ 13 ]およびタイルマップ[ 14 ]の追加サポートを提供するアドオンライブラリが存在します。
これはチュートリアルページに掲載されているSFMLの基本的な例で、緑色の円を描画します。[ 15 ]
#include <SFML/Graphics.hpp>import std ;using sf :: Color ; using sf :: CircleShape ; using sf :: Event ; using sf :: RenderWindow ; using sf :: VideoMode ;int main () { RenderWindow window ( VideoMode ({ 200 , 200 }), "SFML が動作します!" ); CircleShape shape ( 100.0f ); shape . setFillColor ( Color :: Green );while ( window . isOpen ()) { while ( const std :: optional event = window . pollEvent ()) { if ( event -> is < Event :: Closed > ()) { window . close (); } }window.clear ( ) ; window.draw ( shape ) ; window.display ( ) ; } }SFMLは主に、趣味でゲーム開発を行う人、小規模な独立系ビデオゲーム開発者、そしてせいぜい数人の開発者で構成されるスタートアップ企業によって使用されています。SFMLは大量のコードを書く必要がないため、多くのLudum Dare参加者にも採用されています。[ 16 ] Simple DirectMedia Layer(SDL)やAllegroなどの古いライブラリと比較すると、SFMLのユーザーベースは比較的小さいものの、成長を続けています。2024年12月25日現在 GitHubのソフトウェアリポジトリには1万人以上のユーザーがスターを付けている。[ 17 ]
SFMLは大学での教育や科学プロジェクトで使用されています。[ 18 ] [ 19 ] [ 20 ] [ 21 ] [ 22 ] [ 23 ]