Simple and Fast Multimedia Library[Language binding |] is a cross-platform software development library designed to provide a simple application programming interface to various multimedia components in computers. It is written in C++ with bindings available for C, Crystal, D, Euphoria, Go, Java, Julia,.NET, Nim, OCaml, Python, Ruby, and Rust. Experimental mobile ports were made available for Android and iOS with the release of SFML 2.2. SFML handles creating and input to windows, and creating and managing OpenGL contexts. It also provides a graphics module for simple hardware acceleration of 2D computer graphics which includes text rendering using FreeType, an audio module that uses OpenAL and a networking module for basic Transmission Control Protocol and User Datagram Protocol communication. SFML is free and open-source software provided under the terms of the zlib/png license. It is available on Linux, macOS, Windows and FreeBSD. The first version v1.0 was released on 9 August 2007, the latest version v2.5.1 was released on 15 Oct 2018.
Software architecture
Modules
SFML consists of various modules:
System – vector and Unicode string classes, portable threading and timer facilities
Window – window and input device management including support for joysticks, OpenGL context management
Graphics – hardware acceleration of 2D graphics including sprites, polygons and text rendering
Audio – hardware-accelerated spatialised audio playback and recording
Network – TCP and UDP network sockets, data encapsulation facilities, HTTP and FTP classes
While the graphics module is one of the main features of SFML, developers who are interested in only creating an environment to program directly in OpenGL can do so by using the Window module on its own without the graphics module. Similarly, the other modules can also be used independently of each other, except forthe System module which is used by all of the modules.
Language bindings
SFML is written in C++ and provides a C++ interface. Several language bindings exist that enable using SFML in other programming languages. This table lists supported bindings for SFML as of 2017.
Name
Language
Supported version
1
C
2.5
1
.NET
2.5
2.5
D
2.4
D
2.1
Euphoria
2.4
Free Pascal
2.4.0
Go
2.0
Haskell
2.3.2
Java
2.2
Julia
2.5.1
Nim
2.3
OCaml
2.3
OCaml
2.0
Pascal
2.4
Python
2.3.2
Ruby
2.3.2
Rust
2.4
1 Official bindings
Unofficial add-ons
SFML provides the basic functions on which higher-level software can be built. Add-on libraries exist that provide added support for graphical user interfaces, 2D lighting, particle systems and animation, video playback and tilemaps.
Reception and adoption
SFML is primarily used by hobbyist game developers, small independent video game developers, and startup companiesconsisting of several developers at most. Because SFML does not require writing large amounts of code, it has been adopted by many Ludum Dare participants also. Compared to older libraries such as Simple DirectMedia Layer and Allegro, the SFML user base is relatively small but growing., its GitHubsoftware repository has been starred by 4255 users. SFML has been used in teaching at universities and in scientific projects.