oh hey, didn't know you had a UA-cam channel! I've used PhysicsFS a lot and it's been very helpful. I really appreciate that it's easy to modify, I was able to add hash buckets to the search path conflict check in around an hour (had to mount ~15k files). Didn't even realize you were involved in game ports & SDL until I was reading about Quake derivatives on Wikipedia.
53:10 "capture" is actually better, because "recording" means the data is being saved somewhere. But capture - is just capturing a stream of data, without necessarily saving it.
Stumbled across this in my recommended and as i'm watching, i remembered that i still have the 4 classic quake games installed from when i had PC Game Pass. Apparently Microsoft does exactly nothing to restrict those files in case your Game Pass sub ends and you're free to copy all the necessary files to use a source port like ioquake3 or whatever is applicable for the game in question to play it without Game Pass.
I did some SDL2 in 2018-2019. I found the interfaces quiet nasty. Been waiting for this. Now I got a MSC in computer science and math, and 3 more years in the industry as a programmer/data scientist. Lets make some games!
Nice work on the porting, thanks for this very interesting video! I think you made one small mistake: At 1:00:10 you specify sdlCaptureDevice, but shouldn't it be sdlPlaybackDevice? In the end, you would want to reduce the gain on the output, not the input, right? Are there plans to mainline this port to ioq3? Also, overall, does SDL3 come with performance improvements over SDL2 or is ist just more about better consistency in terms of API and possible race conditions?
You're totally right, that should be sdlPlaybackDevice. Good catch! SDL3 has a bunch of good stuff over SDL2--including better consistency, more performance, and less race conditions--and you can get a quick overview of Cool New Stuff at wiki.libsdl.org/SDL3/NewFeatures !
interesting video! i wonder if the migration patch script could also replace those integer != 0 checks with the correct boolean ones, but maybe that would be too slow/complicated if it has to check every SDL function name which work that way
Congrats. I've used SDL2 in hobby projects for years but will think about 3 soon. Is it usable today by people on 5 y/o Debian computers? I'm on Windows but try to be considerate of people who don't have the latest libraries
It is! It has support for newer things (like PipeWire, Wayland, etc), but it looks for those things at runtime and chooses what to use based on what's available on the system (if not PipeWire, maybe PulseAudio, if not PulseAudio, maybe ALSA, etc). The only thing SDL3 links directly against is the C runtime (and even that is optional on some platforms!). This is true on all platforms. On Windows, we support back to Windows XP, and someone is maintaining some small patches outside of our repo to get Windows 95 up and running.
I may, but the patch in the video needs more work before it would be PR-ready (for example, I skipped all the non-Linux pieces of the Makefile). They also have to decide if they're willing to drop PowerPC Mac support (as they seem to have SDL2 headers specifically for that), and maybe other ancient platforms, or keep a _lot_ of ifdefs to continue to support SDL2 in parallel.
So we've built something called sdl12-compat ( github.com/libsdl-org/sdl12-compat ) which makes SDL-1.2-based games work with SDL2, and this contains support for the idTech4 functions that were added to their fork of SDL 1.2. We've _also_ built sdl2-compat to make SDL2 games work with SDL3, and it explicitly works to chain all this together...so you drop a few new libraries into your idTech4 game folder and they're running on SDL3 without even recompiling the games. For games that aren't getting updates, this is the right thing to do. I chose quake3 for this video because ioquake3 is still actively maintained, so it makes sense to modernize its source code to use SDL3.
You should make a twitch channel and speed run porting games
i actually love this idea lol, gotta have a speedrun clock too
BLESS the improved documentation library-wide.
That was a blast, thank you for the guide!
oh hey, didn't know you had a UA-cam channel! I've used PhysicsFS a lot and it's been very helpful.
I really appreciate that it's easy to modify, I was able to add hash buckets to the search path conflict check in around an hour (had to mount ~15k files).
Didn't even realize you were involved in game ports & SDL until I was reading about Quake derivatives on Wikipedia.
Fantastic video. I was not expecting such a good commentary.
Not only helping us understanding the porting process but also the rational!
Top work bro!
Incredible, you did something in 1 hour that I would take months or weeks... =(
Incredibly useful information. Looking forward to moving to SDL3!
Subscribed. You are awesome
53:10 "capture" is actually better, because "recording" means the data is being saved somewhere. But capture - is just capturing a stream of data, without necessarily saving it.
by that logic, recording fits as well, since you are saving the data on the heap
Stumbled across this in my recommended and as i'm watching, i remembered that i still have the 4 classic quake games installed from when i had PC Game Pass. Apparently Microsoft does exactly nothing to restrict those files in case your Game Pass sub ends and you're free to copy all the necessary files to use a source port like ioquake3 or whatever is applicable for the game in question to play it without Game Pass.
I did some SDL2 in 2018-2019. I found the interfaces quiet nasty. Been waiting for this. Now I got a MSC in computer science and math, and 3 more years in the industry as a programmer/data scientist. Lets make some games!
Amazing video
congrats on stable abi
I fucking love SDL, it's amazing
Nice work on the porting, thanks for this very interesting video!
I think you made one small mistake: At 1:00:10 you specify sdlCaptureDevice, but shouldn't it be sdlPlaybackDevice? In the end, you would want to reduce the gain on the output, not the input, right?
Are there plans to mainline this port to ioq3?
Also, overall, does SDL3 come with performance improvements over SDL2 or is ist just more about better consistency in terms of API and possible race conditions?
You're totally right, that should be sdlPlaybackDevice. Good catch! SDL3 has a bunch of good stuff over SDL2--including better consistency, more performance, and less race conditions--and you can get a quick overview of Cool New Stuff at wiki.libsdl.org/SDL3/NewFeatures !
@@RyanGordon Thanks for your quick response and pointing to this very helpful overview on SDL3! Happy coding!
@@RyanGordon Addendum: I created a pull-request in your GitHub-fork-repository for the change.
interesting video! i wonder if the migration patch script could also replace those integer != 0 checks with the correct boolean ones, but maybe that would be too slow/complicated if it has to check every SDL function name which work that way
Congrats. I've used SDL2 in hobby projects for years but will think about 3 soon. Is it usable today by people on 5 y/o Debian computers? I'm on Windows but try to be considerate of people who don't have the latest libraries
It is! It has support for newer things (like PipeWire, Wayland, etc), but it looks for those things at runtime and chooses what to use based on what's available on the system (if not PipeWire, maybe PulseAudio, if not PulseAudio, maybe ALSA, etc). The only thing SDL3 links directly against is the C runtime (and even that is optional on some platforms!). This is true on all platforms. On Windows, we support back to Windows XP, and someone is maintaining some small patches outside of our repo to get Windows 95 up and running.
Would you make a PR with the port to ioquake3 repo?
I may, but the patch in the video needs more work before it would be PR-ready (for example, I skipped all the non-Linux pieces of the Makefile). They also have to decide if they're willing to drop PowerPC Mac support (as they seem to have SDL2 headers specifically for that), and maybe other ancient platforms, or keep a _lot_ of ifdefs to continue to support SDL2 in parallel.
What TUI editor is that at the end? It's a bit hard to google "edit". A link to source would be much appreciated!
I was curious also, but I found it - it's the FTE text editor.
Foldable Text Editor - FTE
@@xusdom Thanks... but it crashes with anything bigger than 1080p. Unusable for me >
@@bparker06 It's my fork of FTE, which has a bunch of fixes and uses SDL! github.com/icculus/fte
How about SDL1.2 games? Also, has id Tech 4 patches for ETQW and Quake 4 carried on to SDL3?
So we've built something called sdl12-compat ( github.com/libsdl-org/sdl12-compat ) which makes SDL-1.2-based games work with SDL2, and this contains support for the idTech4 functions that were added to their fork of SDL 1.2. We've _also_ built sdl2-compat to make SDL2 games work with SDL3, and it explicitly works to chain all this together...so you drop a few new libraries into your idTech4 game folder and they're running on SDL3 without even recompiling the games. For games that aren't getting updates, this is the right thing to do. I chose quake3 for this video because ioquake3 is still actively maintained, so it makes sense to modernize its source code to use SDL3.
I don’t know why I watched this(yup all of it), didn’t work on any SDL app in my life 😂
yes
i know this OS! is Ubuntu linux
SDL 3 API is super icky.
Tries to be C++ but falls flat.
Okay.