
Simple and Fast Multimedia Library (SFML)
Whilst you will have experience with C++, you may not have any prior experience with SFML. That's fine, the book doesn't assume any, so now let's take a brief tour through it
Defining SFML
SFML, short for Simple and Fast Multimedia Library, is a software development library that provides easy access to multiple system components. It's written in C++ and is split into the following succinct modules:
- System
- Windows
- Graphics
- Audio
- Network
With this architecture you can easily pick and choose how you want to use SFML, ranging from a simple window manager to use OpenGL, to a complete multimedia library that is capable of making full video games and multimedia software.
Why we'll be using SFML
SFML is both free, open-source, and has a vibrant community. With active forums and a selection of great tutorials on the official site, there are plenty of resources available for those who wish to learn. Another compelling reason to use SFML is that it's written in C++ and has bindings for many other languages, meaning you can pretty much code in any language that takes your fancy. There is probably a binding available for the language that you wish to use!
The single most attractive feature of SFML is that it is a multiplatform library. An app written in SFML can compile and run on most common operating systems, including Windows, Linux, and Mac OS X, with the Android and iOS versions coming soon in the market at the time of writing this book.
Tip
For your app to be cross-compatible across various platforms, remember that you also have to ensure that your native code or the other libraries used, if any, are also cross-compatible.
Learning SFML
During the course of the book, we'll look at the features and functions of SFML that we'll use to implement our procedural systems, but nothing more. We won't be taking an in-depth look at the library, as that would require a whole book. Luckily, there are a few great books that are published by Packt Publishing dedicated to just that:
- SFML Game Development at https://www.packtpub.com/game-development/sfml-game-development
- SFML Essentials at https://www.packtpub.com/game-development/sfml-essentials
- SFML Blueprints at https://www.packtpub.com/game-development/sfml-blueprints
If you want to learn more about SFML, then these books are a great place to start. There is also a selection of great tutorials on the official SFML site along with active forums. Visit http://www.sfml-dev.org/learn.php for more information.
Alternatives
While SFML is a great option for cross-platform game development, it's not the only one. There are a number of great libraries available, each with their own approaches and styles. Therefore, though we'll use SFML for this project, it's advised that you shop around for your next one. You may just run into your new favorite library.
Here are a few suggestions for future reference:
- SDL2 at https://www.libsdl.org/download-2.0.php
- Allegro at http://liballeg.org/
- MonoGame at http://www.monogame.net/downloads/