If I wanted to create an indie 2d game, is there a reasonably high level game engine / library for that purpose?
Reasonably high level.. my list at Haskell games - Joyful Systems mentions a few, but I feel there must be some more. None that we would call heavily used, unfortunately.
Rather low level, but still surprisingly usable if you ask me: Brillo
It also includes an entire collection of games in the examples directory:
What counts for high level? And also, 2d game – what’s in there?
What’s your deployment target?
Give us more details (=
(But Brillo can be a good start.)
Brillo doesn’t have sound though, right? I’d say that’s a missing piece to call it a batteries included 2d game engine.
I messed around with gloss and declarative sound (à la world -> Picture) and rigged up a “diff” based thing. Delta world -> Sound). Since the rising/falling edge is sometimes the sound trigger. I didn’t take it very far but it felt promising.
games/ld/47/src/Engine.hs · 86784db4a45ade0b9cbd8addb1d1b06146be882d · macaroni.dev / mayhem-engine · GitLab Code is here. It’s not very good (very mtl-y) and basically a thin wrapper around ALUT (not super algebraic lol)
I noticed there is sdl2, but not sure how old the thing is. I was searching for something from the old days, like Allegro or SDL (not exactly but similar functionalities).
I have used sdl2 and h-raylib for my haskell gamedev experiments, both were fun and intuitive to use and have a broad interface.
At first I tried rolling my own simple ECS with IntMaps for component lookup but later I also used apecs, which is pretty cool, but I sometimes couldn’t figure out how to do stuff that is beyond the tutorial they have. aztecs looks promising but I haven’t gotten around to trying it.
I haven’t looked at it myself yet, but I just encountered cadence, an apecs (ECS) + SDL2 engine today.
The SDL2 bindings work well, and there’s also SDL3 bindings in-progress: GitHub - klukaszek/sdl3-hs: Haskell bindings for the SDL3 library. · GitHub