Simple and Fast Multimedia Library

Last updated
Original author(s) Laurent Gomila, and others
Developer(s) SFML Team
Initial releaseAugust 9, 2007;16 years ago (2007-08-09)
Stable release
2.6.1 / November 4, 2023;49 days ago (2023-11-04)
Repository
Written in C++
Operating system Linux, macOS, Windows, FreeBSD
Type API
License zlib License [1] [2]
Website www.sfml-dev.org

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 Ada, C, Crystal, 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]

Contents

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 Linux, macOS, Windows and FreeBSD. [5] [6] The first version v1.0 was released on 9 August 2007, and the latest version v2.6.1 was released on 4 November 2023. [7]

Software architecture

Modules

SFML consists of various modules:

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 (it also provides a C interface through the official CSFML binding). Several language bindings exist that enable using SFML in other programming languages. [3]

This table lists supported bindings for SFML as of 2017.

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), [8] [9] 2D lighting, [10] particle systems and animation, [11] video playback [12] and tilemaps. [13]

Reception and adoption

SFML is primarily used by hobbyist game developers, small independent video 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. [14] Compared to older libraries such as Simple DirectMedia Layer (SDL) and Allegro, the SFML user base is relatively small but growing. As of 20 June 2023, its GitHub software repository has been starred by 8,774 users. [15]

SFML has been used in teaching at universities and in scientific projects. [16] [17] [18] [19] [20] [21]

Video game use examples

Further examples of games using SFML are listed on IndieDB. [47]

Other software use

See also

Related Research Articles

<span class="mw-page-title-main">Blitz BASIC</span>

Blitz BASIC is the programming language dialect of the first Blitz compilers, devised by New Zealand-based developer Mark Sibly. Being derived from BASIC, Blitz syntax was designed to be easy to pick up for beginners first learning to program. The languages are game-programming oriented but are often found general purpose enough to be used for most types of application. The Blitz language evolved as new products were released, with recent incarnations offering support for more advanced programming techniques such as object-orientation and multithreading. This led to the languages losing their BASIC moniker in later years.

<span class="mw-page-title-main">OpenGL</span> Cross-platform graphics API

OpenGL is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardware-accelerated rendering.

<span class="mw-page-title-main">Simple DirectMedia Layer</span> Free software multimedia library

Simple DirectMedia Layer (SDL) is a cross-platform software development library designed to provide a hardware abstraction layer for computer multimedia hardware components. Software developers can use it to write high-performance computer games and other multimedia applications that can run on many operating systems such as Android, iOS, Linux, macOS, and Windows.

<span class="mw-page-title-main">Allegro (software library)</span> Software library for video game development

Allegro is a software library for video game development. The functionality of the library includes support for basic 2D graphics, image manipulation, text output, audio output, MIDI music, input and timers, as well as additional routines for fixed-point and floating-point matrix arithmetic, Unicode strings, file system access, file manipulation, data files, and 3D graphics. The library is written in the C programming language and designed to be used with C, C++, or Objective-C, with bindings available for Python, Lua, Scheme, D, Go, and other languages. Allegro comes with extensive documentation and many examples.

Irrlicht is an open-source game engine written in C++. It is cross-platform, officially running on Windows, macOS, Linux and Windows CE and due to its open nature ports to other systems are available, including FreeBSD, Xbox, PlayStation Portable, Symbian, iPhone, AmigaOS 4, Sailfish OS via a QT/Qml wrapper, and Google Native Client.

Game programming, a subset of game development, is the software development of video games. Game programming requires substantial skill in software engineering and computer programming in a given language, as well as specialization in one or more of the following areas: simulation, computer graphics, artificial intelligence, physics, audio programming, and input. For multiplayer games, knowledge of network programming is required. In some genres, e.g. fighting games, advanced network programming is often demanded, as the netcode and its properties are considered by players and critics to be some of the most important metrics of the game's quality. For massively multiplayer online games (MMOGs), even further knowledge of database programming and advanced networking programming are required. Though often engaged in by professional game programmers, there is a thriving scene of independent developers who lack a relationship with a publishing company.

<i>SuperTux</i> Free and open-source 2D platform game

SuperTux is a free and open-source two-dimensional platform video game published under the GNU General Public License (GPL). The game was inspired by Nintendo's Super Mario Bros. series; instead of Mario, the hero in the game is Tux, the official mascot of the Linux kernel.

Pygame is a cross-platform set of Python modules designed for writing video games. It includes computer graphics and sound libraries designed to be used with the Python programming language.

<span class="mw-page-title-main">Free and open-source graphics device driver</span> Software that controls computer-graphics hardware

A free and open-source graphics device driver is a software stack which controls computer-graphics hardware and supports graphics-rendering application programming interfaces (APIs) and is released under a free and open-source software license. Graphics device drivers are written for specific hardware to work within a specific operating system kernel and to support a range of APIs used by applications to access the graphics hardware. They may also control output to the display if the display driver is part of the graphics hardware. Most free and open-source graphics device drivers are developed by the Mesa project. The driver is made up of a compiler, a rendering API, and software which manages access to the graphics hardware.

<span class="mw-page-title-main">Open-source video game</span> Video game whose source code is open-source software

An open-source video game, or simply an open-source game, is a video game whose source code is open-source. They are often freely distributable and sometimes cross-platform compatible.

<i>SuperTuxKart</i> Open source arcade racing game

SuperTuxKart (STK) is a free and open-source kart racing game, distributed under the terms of the GNU General Public License, version 3. It features mascots of various open-source projects. SuperTuxKart is cross-platform, running on Linux, macOS, Windows, iOS (beta), Android systems and Nintendo Switch (homebrew).

Cocos2d is an open-source game development framework for creating 2D games and other graphical software for iOS, Android, Windows, macOS, Linux, HarmonyOS, OpenHarmony and web platforms. It is written in C++ and provides bindings for various programming languages, including C++, C#, Lua, and JavaScript. The framework offers a wide range of features, including physics, particle systems, skeletal animations, tile maps, and others.

Blink is a browser engine developed as part of the Chromium project with contributions from Apple, Google, Meta, Microsoft, Opera Software, Vivaldi Technologies, Adobe, Intel, IBM, Samsung, and others. It was first announced in April 2013.

MonoGame is a free and open source C# framework used by game developers to make games for multiple platforms and other systems. It is also used to make Windows and Windows Phone games run on other systems. It supports iOS, Android, macOS, tvOS, Linux, PlayStation 4, PlayStation 5, PlayStation Vita, Xbox One and Nintendo Switch. It implements the Microsoft XNA 4 application programming interface (API). It has been used for several games, including Bastion, Celeste,Fez, and Stardew Valley.

<span class="mw-page-title-main">Godot (game engine)</span> Cross-platform, open-source game engine

Godot is a cross-platform, free and open-source game engine released under the permissive MIT license. It was initially developed by Argentine software developers Juan Linietsky and Ariel Manzur for several companies in Latin America prior to its public release in 2014. The development environment runs on many platforms, and can export to several more. It is designed to create both 2D and 3D games targeting PC, mobile, and web platforms and can also be used to develop non-game software, including editors.

<span class="mw-page-title-main">ORX</span> Game Engine

Orx is an open-source, portable, lightweight, plug-in-based, data-driven and easy to use 2D-oriented game engine written in C.

<span class="mw-page-title-main">Immediate mode GUI</span> Type of graphical user interface

An immediate mode graphic user interface (GUI), also known as IMGUI, is a graphical user interface design pattern which uses an immediate mode API to render controls, as opposed to a retained mode one.

LÖVE is a free, open-source, cross-platform framework released under the zlib license for developing video games. The framework is written in C++ and uses Lua as its scripting language and is still maintained by its original developers. The framework is cross-platform supporting the platforms Microsoft Windows, macOS, Linux, Android, and iOS.

raylib Game programming library

Raylib is a cross-platform open-source software development library. The library was made to create graphical applications and games.

References

  1. "License".
  2. "GitHub - SFML/SFML: Simple and Fast Multimedia Library". GitHub . 14 December 2021.
  3. 1 2 "Bindings (SFML / Download)". SFML. Retrieved 13 November 2014.
  4. "Changelog (SFML / Development)" . Retrieved 18 December 2014.
  5. Gomila, Laurent. "SFML 2.1 (SFML / Download)". SFML. Retrieved 9 August 2014.
  6. "SFML/Config.cmake at f24ca9a84012531cf886f72354c1f88341dd7ac7 · SFML/SFML". GitHub . Retrieved 13 November 2014.
  7. "Release SFML 2.6.1 · SFML/SFML". GitHub. Retrieved 2023-12-23.
  8. "SFGUI". SFGUI. Retrieved 13 November 2014.
  9. "TGUI". TGUI. Retrieved 13 November 2014.
  10. "hovatterz/light". GitHub . Retrieved 13 November 2014.
  11. "Bromeon :: Thor". Jan Haller. Retrieved 13 November 2014.
  12. "sfeMovie". sfeMovie. Retrieved 13 November 2014.
  13. "Tiled SFML Map Loader | SourceForge.net". SourceForge . Retrieved 13 November 2014.
  14. "sfml | Ludum Dare". Ludum Dare . Retrieved 13 November 2014.
  15. "SFML/SFML". GitHub. 10 May 2018. Retrieved 10 May 2018.
  16. "SFML Setup". University of Mary Washington . Retrieved 13 November 2014.
  17. "Rensselaer Center for Open Source Software". Rensselaer Polytechnic Institute . Retrieved 13 November 2014.
  18. "CSCI 261 - Programming Concepts". Colorado School of Mines . Retrieved 13 November 2014.
  19. "COMPSCI 464: Computer Graphics". Boise State University . Retrieved 13 November 2014.
  20. "Engaging Computing Group | Comp4spr14 / PS5b". University of Massachusetts Lowell . Retrieved 13 November 2014.
  21. "Tianyu Cheng's Homepage". University of Texas at Austin . Retrieved 13 November 2014.
  22. Chung, Brendon (20 August 2011). "Atom Zombie Tech « Blendo news". Blendo Games . Retrieved 9 August 2014.
  23. "The Away Team - Sci-fi Interactive Fiction". 7 July 2016. Retrieved 1 April 2020.
  24. "Chesster [SFML Puzzle Game]". 18 October 2011. Retrieved 13 November 2014.
  25. "cosmoscroll - SFML-based shoot'em up game. - Github". GitHub . Retrieved 19 July 2015.
  26. "Development Update - Lighting and Saving | Siege Games". Siege Games. 3 April 2012. Retrieved 13 November 2014.
  27. 1 2 "Pirate's Treasure & Enchanted Forest" . Retrieved 13 November 2014.
  28. "NEWS for Extreme Tux Racer". Revision 698. 27 August 2017. Retrieved 12 September 2017.
  29. "HolySpirit Windows game | Desura". Desura. 13 November 2014. Retrieved 19 July 2015.
  30. "FAQ - Hope Dev Blog". 2015-08-11. Retrieved 11 August 2015.
  31. "I Can Transform" . Retrieved 9 November 2018.
  32. "miki151/keeperrl". GitHub . Retrieved 11 January 2015.
  33. "Kroniax available in the Play Store!" . Retrieved 15 November 2014.
  34. "Limit Theory Forums • View topic - SFML::Texturing" . Retrieved 13 November 2014.
  35. "M.A.R.S. - a ridiculous shooter - M.A.R.S. 0.7.2 Bugfix Release". M.A.R.S. 26 April 2011. Retrieved 13 November 2014.
  36. "SFML 2.0 | BP | I make video games". Ben Porter. Retrieved 13 November 2014.
  37. "Open Hexagon - challenging fast paced game" . Retrieved 13 November 2014.
  38. "LZR Ovid the Owl". Leeran Z. Raphaely. Retrieved 13 November 2014.
  39. "Eigen's development notes". Eigen Lenk. Retrieved 13 November 2014.
  40. "Tools and resources for making an indie game | Koobazaur's Domain". Jakub Kasztalski. 2013-04-20. Retrieved 13 November 2014.
  41. "Version 1.0.2 is available of PC and Linux news - Project Black Sun Game - Indie DB". Indie DB. 20 December 2011. Retrieved 13 November 2014.
  42. "TacWars puzzle RPG home page". Facebook .
  43. "The Duke". 8 June 2009. Retrieved 13 November 2014.
  44. "Philippe Offermann » The Shooting Of Isaac". Philippe Offerman. Retrieved 13 November 2014.
  45. "Vagante | Tools of the Trade". Vagante Game. 3 December 2013. Archived from the original on 13 November 2014. Retrieved 13 November 2014.
  46. "Zloxx II - An action Jump'n'Run" . Retrieved 15 November 2014.
  47. sfml/games
  48. "Download | Aquila - a C++ library for digital signal processing". Zbigniew Siciarz. Retrieved 13 November 2014.
  49. "Otter - A 2D C# Framework built on SFML 2". Kyle Pulver. Retrieved 13 November 2014.
  50. "Florian Rival's personal website". Florian Rival. Retrieved 14 November 2014.
  51. "Good news for ImmersionEngine". Facebook. Retrieved 12 February 2015.
  52. "is::Engine - 2D C++ game engine for Android and PC". Is Daouda. Retrieved 19 February 2020.

Further reading