Page 1 of 2

SDL 2.0 released

Posted: Tue Aug 13, 2013 7:17 pm
by clofresh
Hey, looks like SDL 2.0 got released: http://forums.libsdl.org/viewtopic.php?t=9375

I remember from a past post slime saying that SDL 2.0 is the future, mentioning among other things, iOS and Android support. Now that it's out, what needs to get done to move towards LÖVE using SDL 2 and eventually getting iOS and Android support?

I ask because I'd like to help out if possible.

Re: SDL 2.0 released

Posted: Tue Aug 13, 2013 10:16 pm
by Eamonn
SDL 2.0 supports iOS and Android? Would this not make the Android port easier to write?

About iOS support: Apple are very locked down, so maybe an iOS port wont happen(you can write iOS games in C I believe, if not you can always call the C from Obj. C I think(I've played around with Obj. C, but never used it for anything because it's one of the languages I hate(along with REBOL and VB))). If it did, I'd be over the moon happy! I'd be over the LÖVElyMoon(hehe...)!

I would assume that the Android Port of LÖVE would have to be rewritten. Also, I don't know if there's much point in porting it over, since 0.9.0 is pretty close from what I've heard. Maybe when that comes out there port will be worked on again.

An interesting question though. I just wanted to say It'd be awesome if it happened, especially for iOS, but I don't know if it'll happen.

Then again, LibGDX allows you to make iOS games in Java, but I think that Xamarian.iOS does something funny there and converts it to native iOS code.

Re: SDL 2.0 released

Posted: Tue Aug 13, 2013 10:22 pm
by slime
So first, SDL 2 makes it possible to implement several long-wanted features that aren't related to Android / iOS. LÖVE will probably have official support for Android and iOS in the future, but not the immediate future. SDL 2 isn't just a stepping stone towards mobile, it's a big thing on its own. :)

For a while it wasn't certain whether LÖVE 0.9.0 or SDL 2.0 would release first, so I have been keeping an experimental branch of LÖVE 0.9.0's code which has several changes now possible with SDL 2, but the main 0.9.0 code doesn't have any of those changes yet.

Unless something goes horribly wrong, those changes will make it into 0.9.0, but there are still a couple minor things to work out before I'm satisfied with them enough to merge the stuff into the main repository.

You can check out the commits I've made for the experimental SDL 2 branch here: https://bitbucket.org/bartbes/love-expe ... ranch/SDL2 (you may need to go back several pages to see all of them.)

Not all of SDL 2's new features are a good fit for LÖVE right now, for example multiple windows is a niche feature for games and would probably add more complexity and issues than it's worth.
Haptic (force feedback) support is not in the SDL 2 branch of LÖVE right now, partly because the API is complex and difficult to integrate nicely into LÖVE's style, partly because many joystick drivers can't do force feedback very well at all, and partly because there were still important bugs in SDL 2's haptic code when I last looked at it (although many have been resolved by now.)

Some of the features that are in the SDL 2 branch of LÖVE:
  • Display-choosing and 'fullscreen-desktop' for love.window.setMode
  • Setting and getting system clipboard text
  • Proper unicode text input support
  • Custom hardware cursors
  • Completely reworked Joystick API, complete with true hot-plugging and integrated SDL_GameController support (so it's way easier to do gamepad input across platforms and gamepads.) Pretty much all of love.joystick has changed significantly.
There are a few other minor changes I've integrated as well, but those are the biggest ones.

Android and iOS support will come when we're ready to actually support the platforms. The biggest two blocks to having LÖVE on mobile is an OpenGL ES 2 backend (although I did some work on that already) and the fact that providing a quality tool for two platforms which are very different from the currently supported ones goes way beyond just making most of it work.


EDIT: Here is a blog post by Ryan Gordon (an SDL developer and Mac/Linux game porter, AKA icculus) talking about SDL 2's development and its future: https://plus.google.com/103391075724026 ... erid=gplp0
Great read. :)

Re: SDL 2.0 released

Posted: Wed Aug 14, 2013 1:32 am
by clofresh
Awesome, thanks for the detailed update! Is there a particular area of work for 0.9.0 or beyond that needs attention but neither you nor the other core contributors have the bandwidth to work on?

Re: SDL 2.0 released

Posted: Wed Aug 14, 2013 5:51 pm
by jjmafiae
better android support would make my year.

Re: SDL 2.0 released

Posted: Wed Aug 14, 2013 6:08 pm
by Davidobot
slime wrote:Display-choosing and 'fullscreen-desktop' for love.window.setMode
What does that mean? And copying to and from the clipboard is awesome.

Re: SDL 2.0 released

Posted: Wed Aug 14, 2013 7:08 pm
by Ranguna259
You can have more than one screen connected to you computer, display choosing is (I guess) changing between displays that are connected to you computer, like dual monitors setup and such

EDIT: OMG clipboard integration, my jimmies are officially rustled, can't wait for mobile support (and if you have trouble with iOS then just forget it and go full Android, just sayin')

Re: SDL 2.0 released

Posted: Thu Aug 15, 2013 11:05 am
by Murii
When Android comes then I`ll come back to love otherwise I just waste time!

Re: SDL 2.0 released

Posted: Thu Aug 15, 2013 1:33 pm
by ki
slime wrote:Android and iOS support will come when we're ready to actually support the platforms. The biggest two blocks to having LÖVE on mobile is an OpenGL ES 2 backend (although I did some work on that already)
SDL 2.0 seems to support both OpenGL ES 1 and 2. (There's a folder "src\render\opengles2" in the SDL 2.0 Zip file.) Do you intend to use SDL's backend, or write a new one?

Re: SDL 2.0 released

Posted: Thu Aug 15, 2013 5:44 pm
by slime
clofresh wrote:Awesome, thanks for the detailed update! Is there a particular area of work for 0.9.0 or beyond that needs attention but neither you nor the other core contributors have the bandwidth to work on?
I'm not sure, looking at the issue tracker there's a suggestion for reworking ImageFonts, a suggestion for SpriteBatch-like objects for shapes and lines, one for getting microphone input support working with OpenAL, and one for video playback (although I think rude has "claimed" that one for when he has the time.)

It might also be interesting to test out whether a nice unobtrusive API could be made for multiple mouse support (via ManyMouse probably.) It could also potentially be useful to have a sort of "shared memory" object for accessing and storing the same data in multiple threads, as long as it can be proven to have significant advantages over Channels in at least some use cases.
Davidobot wrote:
slime wrote:Display-choosing and 'fullscreen-desktop' for love.window.setMode
What does that mean? And copying to and from the clipboard is awesome.
It means you can detect how many monitors are connected to the computer and what fullscreen resolutions they support, and choose which one to show the window in, so you could have a menu in your game for selecting what monitor to use when going fullscreen.
ki wrote:
slime wrote:Android and iOS support will come when we're ready to actually support the platforms. The biggest two blocks to having LÖVE on mobile is an OpenGL ES 2 backend (although I did some work on that already)
SDL 2.0 seems to support both OpenGL ES 1 and 2. (There's a folder "src\render\opengles2" in the SDL 2.0 Zip file.) Do you intend to use SDL's backend, or write a new one?
SDL 2's Render API is a very high-level abstraction over OpenGL, Direct3D, and OpenGL ES. LÖVE won't use it, it's much more basic than LÖVE's current graphics API.
SDL 2 also has backends for creating an OpenGL ES 2 context and letting the program (LÖVE) use it as it sees fit, similarly to how SDL already does this for regular OpenGL. That is what LÖVE will (eventually) take advantage of, but it means LÖVE's graphics module will need to be made to work with OpenGL ES 2 as well as regular OpenGL. :)