Learn about the 5 SFML Modules
The 5 SFML Modules
If you have read the tutorial Graphics Window, you know about the SFML Graphics Module. There are 4 other modules that together with the Graphics Module, form the SFML Library. One of those modules (The System Module) is independent and can be used alone while the others depend on one or two other modules.
- The System Module
- The Window Module (depends on System)
- The Graphics Module (depends on Window, which depends on System)
- The Audio Module (depends on System)
- The Network Module (depends on System)
The System Module
The System module provides basic classes like
- sf::Vector2 and sf::Vector3 : classes that represent coordinate in 2D (x,y) and 3D (x, y, z)
- sf::Time : a class to store time in seconds, milliseconds, or microseconds
- sf::Clock : a timer class to measure the time that passes
- sf::String : SFML own implementation of std::string
- sf::NonCopyable : a class that disables derived classes copy constructor and assignment operator, forcing the derived classes to only have one instance at a time
- sf::Thread and sf::Mutex : classes to create and handle threads
The complete list of the System Module headers can be found here : System Module Headers
The Window Module
The Window module provides the following features :
- Create a window with the class sf::Window
- Capture all sort of user inputs (Keyboard, Mouse, Joystick, Touch, and Sensor for phone devices)
- Store and Retrieve data in the Clipboard : When you copy a text with CTRL + C or Mouse right-click then copy, the data goes into the Clipboard
- Customize the mouse cursor
The complete list of the Window Module headers can be found here : Window Module Headers
The Graphics Module
This module is the reason why SFML is so simple to use for creating games. The module is created on top of the System module and the Window module and offers a very simple interface to handle Shapes, Images, Texts and Window views (camera). This module provides the following things:
- Create a window with the class sf::RenderWindow
- Create simple and complex shapes like Circle, Rectangle, and Convex Polygons.
- Load Images then create Textures and Sprites
- Load fonts then create Texts
- Manipulate Shapes, Sprites, and Text properties : Position, Rotation, Scale, Color
- Manage window views (Cameras)
- Load and use OpenGL Shaders
- Render on Textures
The Audio Module
The Audio module allows you to play sound effects and music of different formats (WAV, OGG/Vorbis, and FLAC). It also allows you to record sounds coming from your microphone. The module contains the following classes :
- sf::Sound and sf::SoundBuffer : classes used to load and play sound effects (very short sounds)
- sf::Music : a class used to play music (relatively long sounds)
- sf::Listener : a class used to position a virtual listener in your game scene created a special effect.
- sf::SoundBufferRecorder : a class used to record sounds from your microphone.
The complete list of the Audio Module headers can be found here : Audio Module Headers
The Network Module
The Network module provides multiple ways of communicating through the internet using the following protocols :
- TCP (Transmission Control Protocol) : a protocol that offers reliable packets transmission.
- UDP (User Datagram Protocol) : a protocol that offers unreliable packets transmission.
- HTTP (Hypertext Transfer Protocol) : a protocol used to communicate with Web Servers
- FTP (File Transfer Protocol) : a protocol used upload or download file on the internet
The complete list of the Network Module headers can be found here : Network Module Headers