I started SDLAda a few years after I left the games industry for good knowing that Ada was a better language for developing games. After years of dealing with slow C++ compiles and constant issues with C and C++, usually when dealing with other people's work, Ada seemed like the better way forward, even though I don't want to work in the games industry any more.
Ada was designed to for developing correct, readable programs. It was designed for many areas but one in particular, embedded applications, i.e. fighter jet simulators, controlling planes, ships, trains, heart monitors. Games is just another embedded area, especially when you're dealing with consoles with little to no OS, 🙋♀️ PS2.
With SDLAda I think I've proven how a highly portable library and a highly portable type safe language could work together to make game development faster and easier.
The aim is to be able to download the bits you need to create a portable game easily, initially using Alire, to add in the dependencies and handle building, testing and eventually (hopefully) packaging.
Only non-GPL'd projects will be found here (LGPL maybe, possibly). The GPL causes issues in these places where I'd like to see these libraries used and therefore I won't allow any GPL'd library, especially GPL'd bindings, here. Only projects with permissive licences will be allowed here.
There will be bindings to commercial libraries, but these libraries will be useable on platforms with their specific commercial licences, trying to restrict their use by enforcing a binding with a more restrictive licence doesn't make sense.
Remember SDL2 was originally licensed under the GPL which changed back to ZLib when Valve got involved because they could see the issues.
We still need legal clarification of using the GNAT RTS (GPLv3 with linking exception) in these places. The GPL's IR clause is still an issue.
You'll see a lot of negativity around Ada, so I thought adding some positivity from industry giants would help people get on board with this.
This "reputation" was spread by people who hated the language before even seeing the final specification for it. This was confirmed to me by someone who worked as a programmer in the DoD back when the language was being defined.
FYI, it was never designed (warning big PDF) by committee.
Re: Doom in Ada…
The plan is to provide a set of Ada libraries which will enable someone or a company to create a game and/or game engine based on top of said libraries, these could be bindings or ports.
There will be overlap between projects as there are for any programming language and you can choose whichever you want to use.
You can imagine the set of libs as follows:
Your game
-----------------------------------------------------------------------
Other
|
+--------+---+----+---------+
| | | |
KTX* Spine* Tiled AssImp*
Physics
|
+---------+--------+
| | |
Chipmunk* Box2D+ Bullet+
Networking Platform Integration
| |
+--------+-------+ +----+----+
| | | |
SDL_Net* GameNetworkingSockets* Steamworks* ?
GUI
+-------------+----------+
| |
Immediate In Game Audio
| | |
+-----+-----+ +-----+-----+ +-------+--------+
| | | | | | |
cimGUI+ Nuklear* Ultralight* NoesisGUI* FMOD* Wwise* OpenAL
Graphics Video
| |
+----------+-----+----+---------+ +---+
| | | | |
OpenGL* Vulkan* Metal* DX3D* libavif*
Maths*
-----------------------------------------------------------------------
Base libs, i.e. SDL, ASFML
* My own projects, once I get moved, I will set up Github sponsors on my profile so if anyone would like to sponsor the work, they can.
+ Projects which (might) need to be patched to work with SDLAda.
I have an old library I wrote about 20 years ago after coming out of the games industry, it was developed for OpenGL, but I am going to reuse/rewrite it to create a fast/optimised library to base everything on.
I intend for this to use SIMD machine instructions where appropriate.
Back around the time I was developing the NeHe ports, I was developing a binding generator for OpenGL, this was never completed.
There exists a binding to this lib which seems to be a fork of an unmaintained binding.
I chose to do this one first as there is a C API which can be bound a bit more easily, plus it's a smaller, although still large, API compared to Wwise. Another reason is that they now provide a Linux client and Wwise don't.
[X] Thin bindings
- Charlie5 has bindings and ports of Box2D and bullet ongoing.
- darkestkhan has a binding which seems to be for OpenAL-soft, I don't know why he named it Oto.
- There is no Alire crate for this yet.
- Fabien Chouteau from AdaCore has a Tiled lib which I haven't checked out yet. I'm not sure if this is going to be everything required for a Tiled runtime.
- His binding uses XMLAda which is way too heavy for games, so I think we can cross this off.
- I really don't know much about networking, so not sure what to do here. I know there ie enet, yojimbo and now just found out of about Valve's GameNetworkingSockets.
- iOS
- Android
- WinRT (UWP)
The way I have written the bindings to SDL2 should make the transition to SDL3 pretty easy as a lot of the changes in SDL3 are changes to names to make them more consistent and readable, which I already did in the bindings.
Ryan also rewrote the SDL_Net library for SDL3 as he wasn't happy with it.
I thought about this about 10 years ago and now with SDL3 it kind of makes sense to do it. A platform independent Ada based shader language which compiles to SDL3's shader bitcode.
There should be demonstration programs / games which show how to actually use the various libraries published here.
Your company logo / profile here.