I've recently added autobatching to my SFML fork (https://github.com/vittorioromeo/VRSFML/tree/bubble_idle). Drawing multiple objects that use the same RenderStates will now be automatically coalesced into a single draw call, for example:
for (int i = 0; i < 10000; ++i)
renderWindow.draw(sf::Sprite{/* ... */});
This (opinionated) fork of SFML also supports many other changes:
- Modern OpenGL and first-class support for Emscripten
- Batching system to render 500k+ objects in one draw call
- New audio API supporting multiple simultaneous devices
- Enhanced API safety at compile-time
- Flexible design approach over strict OOP principles
- Built-in SFML::ImGui module
- Lightning fast compilation time
- Minimal run-time debug mode overhead
- Uses SDL3 instead of bespoke platform-dependent code
The target audience is mostly developers familiar with SFML who are looking for a library very similar in style but offering more power and flexibility. Upstream SFML remains more suitable for complete beginners.
BubbleByte is a laid-back incremental game that mixes clicker, idle, automation, and a hint of tower defense, all inspired by my cat Byte’s fascination with soap bubbles.
for (int i = 0; i < 10000; ++i) renderWindow.draw(sf::Sprite{/* ... */});
Upstream SFML: - 10000 draw calls (!) - My fork: 1 draw call
This (opinionated) fork of SFML also supports many other changes:
- Modern OpenGL and first-class support for Emscripten - Batching system to render 500k+ objects in one draw call - New audio API supporting multiple simultaneous devices - Enhanced API safety at compile-time - Flexible design approach over strict OOP principles - Built-in SFML::ImGui module - Lightning fast compilation time - Minimal run-time debug mode overhead - Uses SDL3 instead of bespoke platform-dependent code
It is temporarily named VRSFML (https://github.com/vittorioromeo/VRSFML) until I officially release it.
You can read about the library and its design principles in this article: https://www.vittorioromeo.com/index/blog/vrsfml.html
You can read about the batching system in this article: https://www.vittorioromeo.com/index/blog/vrsfml2.html
You can find the source code here: https://github.com/vittorioromeo/VRSFML
You can try out the interactive demos online in your browser here: https://vittorioromeo.github.io/VRSFML_HTML5_Examples/
The target audience is mostly developers familiar with SFML who are looking for a library very similar in style but offering more power and flexibility. Upstream SFML remains more suitable for complete beginners.
I have used this fork to create and release my second commercial game, BubbleByte. It's open-source (https://github.com/vittorioromeo/VRSFML/tree/bubble_idle) and available now on Steam: https://store.steampowered.com/app/3499760/BubbleByte/
BubbleByte is a laid-back incremental game that mixes clicker, idle, automation, and a hint of tower defense, all inspired by my cat Byte’s fascination with soap bubbles.
A trailer is available here: https://www.youtube.com/watch?v=Db_zp66OHIU