40 lines
2.1 KiB
Markdown
40 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.
|