Is SFML a better choice over SDL?
#2 Staff - Reputation: 8925
Posted 05 November 2012 - 06:17 PM
Some notes, in no particular order:
- SDL is more of a C-based API (but is still easily and very commonly used with C++), while SFML is more C++ oriented with an object oriented structure. SFML does provide a less commonly used C version.
- SDL is older, but both APIs have impressive-looking new versions under active development, and you can use these versions now if you wish to do so -- in the case of SFML I'd say using the newer version is even recommended.
- Due to it's maturity there are more tutorials and example code around for SDL, although obviously less so for the under-development 2.0 version which has some differences. However, this is somewhat balanced by what I personally think is higher quality official documentation for SFML.
- Unless you use the newer version or are doing your own rendering with OpenGL or Direct3d, the drawing functions provided by SDL are not hardware accelerated, while SFML is. The new version of SDL fixes this however.
You could also consider Allegro.
Hope that's helpful!
- Jason Astle-Adams.
From my blog: 20 ways to advertise your game | What next? Intermediate to advanced C++
How to make games WITHOUT programming | 4 reasons you aren't a successful indie developer
#4 Marketplace Seller - Reputation: 8955
Posted 05 November 2012 - 07:36 PM
A naive user might say, "Look, my 'hello world' SDL program is slower than my 'hello world' SFML program, thus SFML must be faster than SDL!", not realizing or researching or caring to find out why one happened to be faster than the other, in what circumstances, for what reasons, with what settings, on what hardware, running what operating system. Then they go off and tell other users, "SFML is faster than SDL" or "DirectX is faster than OpenGL" or "Mac OSX is faster than Windows 7".
Why do people swear to it? 95% of the time, it's probably a lack of understanding.
The other 5% of the time, you have someone who actually understands it - but it's hard to know when that's actually the case or not, because the first situation occurs more often.
That said, I've used both of them, and like both of them, and can program in either of them. I'd recommend SFML over SDL, but both are good choices.
SFML pros:
- I like SFML's documentation better - mostly this is just the web interface to the documentation being more modern than SDL's web documentation.
- SFML is under active development. SDL went stagnant a few years back, though it appears it may be getting reactivated again with a new release... but that's not a guarantee.
- SFML uses more C++-directed design, SDL uses more C-directed design. (Contrast with SFML con #3, below)
- SFML has a (small) active community that is helpful and friendly.
SFML cons:
- SFML 2.0 is not officially released, though it is stable. Any SFML 1.6 question you might have often gets met with: "Use SFML 2".
- SFML may be very slightly less stable, since it hasn't been used as thoroughly over the years.
- In some situations, I've found SFML's overly OOP design gets in your way more than it should.
But most of that is personal opinion. If I was forced to use one of them on a project, and wasn't able to decide, I wouldn't complain - either is an acceptable choice. If I could choose, it would depend on the project, but SFML would probably come just slightly ahead.
All glory be to the Man at the right hand... On David's throne the King will reign, and the Government will rest upon His shoulders. All the earth will see the salvation of God.
Of Stranger Flames - [indie turn-based rpg set in a para-historical French colony] | Indie RPG development journal
#5 Staff - Reputation: 8925
Posted 05 November 2012 - 10:55 PM
Often benchmarks are very specific or are designed to the strengths of one API rather than another, giving the impression of better performance, but unless your own usage will very closely match the situation that was benchmarked this usually has little meaning for you as a would-be user of the library.
- Jason Astle-Adams.
From my blog: 20 ways to advertise your game | What next? Intermediate to advanced C++
How to make games WITHOUT programming | 4 reasons you aren't a successful indie developer
#6 Members - Reputation: 145
Posted 07 November 2012 - 07:58 PM
SFML is under active development. SDL went stagnant a few years back, though it appears it may be getting reactivated again with a new release... but that's not a guarantee.
according to the mailing list; it's for the most part finished, and Sam has stated he could ship it; but has been to busy with working with Valve for Steam on Linux at the moment; and that once he's more settled in it should be much closer to release.
#7 Marketplace Seller - Reputation: 8955
Posted 07 November 2012 - 08:14 PM
Edited by Servant of the Lord, 07 November 2012 - 08:18 PM.
All glory be to the Man at the right hand... On David's throne the King will reign, and the Government will rest upon His shoulders. All the earth will see the salvation of God.
Of Stranger Flames - [indie turn-based rpg set in a para-historical French colony] | Indie RPG development journal
#8 Members - Reputation: 241
Posted 07 November 2012 - 09:46 PM
The game is a tile-based RTS, and I had developed it to the point where I had a fully functioning scrollable map + minimap + menu system. I started to use per-pixel alpha with some transition tiles that fade through varying degrees of transparency, and hit a brick wall with SDL's performance with this (a well known limitation of the library).
So I decided to give SFML a try, and converted my map engine to use this library ... and as expected the frame rate more than doubled. I'll be using SFML going forward on this project, due to the requirements of my game.
As others have said, it all depends on what you want to do. For complex alpha transparency, SDL is definitely not the way to go at the moment.
#11 Marketplace Seller - Reputation: 8955
Posted 08 November 2012 - 10:12 AM
All glory be to the Man at the right hand... On David's throne the King will reign, and the Government will rest upon His shoulders. All the earth will see the salvation of God.
Of Stranger Flames - [indie turn-based rpg set in a para-historical French colony] | Indie RPG development journal
#13 Staff - Reputation: 8925
Posted 08 November 2012 - 05:43 PM
- Jason Astle-Adams.
From my blog: 20 ways to advertise your game | What next? Intermediate to advanced C++
How to make games WITHOUT programming | 4 reasons you aren't a successful indie developer
#15 Members - Reputation: 957
Posted 09 November 2012 - 03:35 AM
I'd say the "close to release" thing went to waste considering it's again in the process of new features getting added =P What's already there should be safe to use though... unless you're developing for a phone, I never tried it there but it seems that on phones there are still some serious issues (not surprising, given that phone apps have a completely different environment than PC programs).
SFML is under active development. SDL went stagnant a few years back, though it appears it may be getting reactivated again with a new release... but that's not a guarantee.
according to the mailing list; it's for the most part finished, and Sam has stated he could ship it; but has been to busy with working with Valve for Steam on Linux at the moment; and that once he's more settled in it should be much closer to release.
#16 Members - Reputation: 243
Posted 12 November 2012 - 01:37 AM
I'd say the "close to release" thing went to waste considering it's again in the process of new features getting added =P What's already there should be safe to use though... unless you're developing for a phone, I never tried it there but it seems that on phones there are still some serious issues (not surprising, given that phone apps have a completely different environment than PC programs).
SFML is under active development. SDL went stagnant a few years back, though it appears it may be getting reactivated again with a new release... but that's not a guarantee.
according to the mailing list; it's for the most part finished, and Sam has stated he could ship it; but has been to busy with working with Valve for Steam on Linux at the moment; and that once he's more settled in it should be much closer to release.
SDL works great on mobile devices iOS and Android, angry birds used it when it was young and seems to be doing alright. I'm currently working on an iOS app using SDL2.0 and OpenGL for my rendering. If anyone has an issue or bug in SDL you need to report it to get a fix. You can even apply fixes yourself by posting it. If you check http://hg.libsdl.org/SDL/ you will see change sets getting added frequently.
Both SFML and SDL are great libraries though. Who knows maybe the OP is still learning so in the end it might not even matter, the experience he will gain will matter more.
Also note great improvement in rendering SDL 2.0 over the old SDL 1.2 or you could use OpenGL.
#17 Members - Reputation: 564
Posted 12 November 2012 - 08:50 AM
#18 Members - Reputation: 370
Posted 20 November 2012 - 04:11 AM







