Simple and Fast Multimedia Library
![]() SFML logo
|
|
Original author(s) | Laurent Gomila, and others |
---|---|
Developer(s) | SFML Team |
Stable release | 2.3.2 / September 12, 2015 |
Written in | C++ |
Operating system | Linux, OS X, Windows, FreeBSD |
Type | API |
License | zlib License[1][2] |
Website | www |
Simple and Fast Multimedia Library (SFML) is a cross-platform software development library designed to provide a simple application programming interface (API) to various multimedia components in computers. It is written in C++ with bindings available for C, D, Euphoria, Go, Java, Julia, .NET, Nim, OCaml, Python, Ruby, and Rust.[3] Experimental mobile ports were made available for Android and iOS with the release of SFML 2.2.[4]
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 (TCP) and User Datagram Protocol (UDP) communication.
SFML is free and open-source software provided under the terms of the zlib/png license. It is available on Windows, Linux, OS X and FreeBSD.[5][6]
Contents
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 for the 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.[3]
This table lists supported bindings for SFML as of 2015[update].
Name | Language | Supported version |
---|---|---|
CSFML1 | C | 2.3 |
SFML.Net1 | .NET | 2.2 |
JSFML | Java | 2.2 |
DSFML | D | 2.1 |
pySFML | Python | 2.2 |
rbSFML | Ruby | 2.0 |
GoSFML2 | Go | 2.1 |
rust-sfml | Rust | 2.1 |
Ocsfml | OCaml | 2.2 |
ocaml-sfml | OCaml | 2.0 |
EuSFML2 | Euphoria | 2.0 |
nim-csfml | Nim | 2.3 |
SFML.jl | Julia | 2.2 |
SFML | Haskell | 2.0 |
PasSfml | Pascal | 2.3 |
crsfml | Crystal | 2.3 |
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 (GUIs),[7][8] 2D lighting,[9] particle systems and animation,[10] video playback[11] and tilemaps.[12]
Reception and adoption
SFML is primarily used by hobbyist game developers and startup companies consisting 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.[13] Compared to older libraries such as Simple DirectMedia Layer (SDL) and Allegro, the SFML user base is relatively small but growing. As of 26 August 2015[update], its GitHub software repository has been starred by 2274 users.[14]
SFML has been used in teaching at universities and in scientific projects.[15][16][17][18][19][20]
Video game use examples
- Atom Zombie Smasher,[21] real-time strategy game.
- Chesster,[22] puzzle game.
- Cosmoscroll,[23] free open-source space-based shoot 'em up game.
- Crea,[24] moddable 2D sandbox game.
- HolySpirit,[25] 3D isometric hack and slash game.
- Kroniax,[26] minimalistic side-scroller, and the first SFML game for Android.
- M.A.R.S.,[27] multiplayer shoot 'em up game.
- Moonman,[28] pixel art exploration sandbox game.
- Ovid The Owl,[29] puzzle platform game.
- Project Black Sun,[30] retro 2D side-scrolling video game.
- The Duke,[31] action platform game.
- Vagante,[32] action RPG platform game.
- The Shooting of Isaac,[33] vertical shooter game.
- Open Hexagon,[34] free open-source Super Hexagon clone.
- Pirates Treasure[35]
- Enchanted Forest[35]
- Limit Theory,[36] infinite, procedural space game.
- Postmortem: one must die,[37] narrative adventure game.
- Pioneers,[38] turn based exploration game with some RPG elements.
- Zloxx,[39] 2D action platformer.
- KeeperRL,[40] dungeon simulator with rogue-like and RPG elements.
- Hope,[41] point and click adventure game (like Myst).
Further examples of games using SFML are listed on IndieDB here.
Other software use
- Aquila,[42] open source digital signal processing (DSP) library for C++.
- Otter,[43] a 2D C# framework built on SFML 2.
- GDevelop,[44] open source game creation software.
- Immersion Engine,[45] tool to visualize detailed landscapes and architecture.
Version history
- 1.0 – July 2007
- 1.1 – 18 September 2007
- 1.2 – 16 January 2008
- 1.3 – 22 June 2008
- 1.4 – 7 January 2009
- 1.5 – 4 June 2009
- 1.6 – 6 April 2010, mainly a bug-fix release
- 2.0 – 29 April 2013
- 2.1 – 27 July 2013
- 2.2 – 17 December 2014
- 2.3 – 9 May 2015
- 2.3.1 – 11 July 2015
- 2.3.2 – 12 September 2015
See also
- Simple DirectMedia Layer (SDL)
- ClanLib
- Allegro
- GLFW
- OpenGL Utility Toolkit (GLUT)
- OpenGL
- Cross-platform support middleware
References
<templatestyles src="Reflist/styles.css" />
Cite error: Invalid <references>
tag; parameter "group" is allowed only.
<references />
, or <references group="..." />
Further reading
- Jan Haller, Henrik Vogelius Hansson, Artur Moreira: SFML Game Development, Packt Publishing, ISBN 1-849696-84-5
- http://www.lifehacker.com.au/2013/02/xna-is-dead-3-alternatives-that-let-you-use-your-c-and-net-skills/
- https://www.binpress.com/tutorial/creating-a-city-building-game-with-sfml/137
- http://www.gamefromscratch.com/page/Game-From-Scratch-CPP-Edition-The-Introduction.aspx
External links
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ https://github.com/SFML/SFML/blob/master/license.txt
- ↑ 3.0 3.1 Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ 35.0 35.1 Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- Pages with reference errors
- Articles containing potentially dated statements from 2015
- Articles containing potentially dated statements from August 2015
- Official website not in Wikidata
- Application programming interfaces
- Audio libraries
- C++ libraries
- Cross-platform software
- Free software
- Graphics libraries
- Linux APIs
- OS X APIs
- Software using the zlib license
- Video game development
- Video game development software for Linux
- Windows APIs