Skip to content
@ada-game-framework

Ada Game Framework

Making game development simpler with Ada

Ada Game Framework

Introduction

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.

App stores and the GPL

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.

Positive Quotes

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.

John Carmack

I actually have thought about Ada; there is a lot of good there, but it has an undeservedly terrible reputation.

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.

I read the ada spec a decade ago,and I was very impressed — it was the butt of jokes about design by government committee, but it looked pretty good to me...

FYI, it was never designed (warning big PDF) by committee.

It is interesting how hearing about Ada in the old days it was easy to jump to a mocking “Big government programming language! Ha!” position, but looked at later, most of the decisions look pretty sound.

Re: Doom in Ada…

ADA would be just fine. COBOL wouldn’t be pleasant.

NVIDIA

“What if we just stopped using C?”

The Plan

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.

Maths

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.

OpenGL

Back around the time I was developing the NeHe ports, I was developing a binding generator for OpenGL, this was never completed.

ImgGUI

There exists a binding to this lib which seems to be a fork of an unmaintained binding.

Afmod

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

Box2d / Bullet

  • Charlie5 has bindings and ports of Box2D and bullet ongoing.

OpenAL

  • 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.

Tiled

  • 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.

Networking

  • 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.

Platforms yet to work or be tested

  • iOS
  • Android
  • WinRT (UWP)
    • Alex Gamper has a runtime and an API. The latter is LGPLv3, which should be fine on Windows Store as that is the only place this library would be use.
      • There are no Alire crates for them yet.

Future Plans

SDL3

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.

ShAda

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.

Demos

There should be demonstration programs / games which show how to actually use the various libraries published here.

Sponsors

Your company logo / profile here.

Popular repositories

  1. sdlada sdlada Public

    Ada 2022 bindings to SDL 2

    Ada 108 36

  2. .github .github Public

    Profile

    1

  3. sdlweb sdlweb Public

    Forked from libsdl-org/sdlweb

    The website for Simple Directmedia Layer.

    PHP

  4. sdlada_ttf sdlada_ttf Public

    Ada bindings to the sdl2-ttf library.

    Ada

  5. sdlada_image sdlada_image Public

    Ada bindings to the sdl2-image library.

    Ada

  6. sdlada_mixer sdlada_mixer Public

    Ada bindings to the sdl2-mixer library.

    Ada

Repositories

Showing 9 of 9 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…