nek0.eu/site/posts/2019-10-17-Frustration-leve...

41 lines
2.1 KiB
Markdown

---
title: Frustration levels rising
author: nek0
tags: english programming
description: Frustration with Haskell game development
---
The software projects I do in my spare time often revolve around game
development and usually the language of choice is Haskell. Doing things the
Haskell way demands some frustration tolerance and patience but the
outcome is usually a very robust piece of software. The outcome then usually
outweighs the frustration on the way there and makes programming quite an
enjoyable experience.
Unfortunately this does not apply to game development in Haskell. At least for
me. After years of trying the closest I ever got to a game was
[Tracer](https://github.com/nek0/tracer), which I still wish to complete, but I
doubt I will ever be successful. This is due to the fact that in the current
state it performs badly because of poor technical choices on my side, which I
am trying to rectify. To make better informed decisions I set the game aside
and started experimenting with some new and some different concepts. This
includes concepts like Functional Reactive Programming (FRP) as a new paradigm,
but also better tooling, like proper shader programming.
Finding resources on FRP was quite easy. I was given a good
[itroductory book](https://www.manning.com/books/functional-reactive-programming)
and found a capable Haskell library implementing this concept in
[reactive-banana](https://hackage.haskell.org/package/reactive-banana).
Finding resources for shader programming in Haskell was not as successful. There
are some interesting attempts at abstracting the GLSL shader language into
Haskell, so one can profit from static type checking by the compiler, but these
haven't been updated for at least two years and don't work anymore. All in all
the whole GPU programming part of game development in Haskell looks very bleak.
To get things done one has to resort to interfacing C libraries oneself, which
is an error prone and tedious task.
For now I am really frustrated by this lack of an ecosystem and by the fact,
that after three years of trying I only have rotting bits and pieces of
software.