Penumbra itself was awesome (your examples are proof for that), it's just that I didn't really enjoy writing the game logic itself. My approach was basically manipulating huge hashmaps each frame. When I started out that was really manageable but I ended up with one monolithic hashmap for my game state (storing other huge hashmaps for the game objects) that was just not fun to work with anymore.
I'm by no means an experienced Clojure programmer, so maybe I did miss something. Maybe I'm also too deeply rooted in object-oriented programming to fully embrace FP for architecting a game - my high-level architecture was very similar to what I would have created in an object-oriented language (methods, polymorphy, ...).
Anyways (as I said in a comment above) I really enjoy having functional tools at hand, but at least for game dev my favorite paradigm is still OOP.
Maybe you can give me any pointers about writing more advanced games in Clojure?
Well, for some definition of 'advanced' you can look at the Asteroids example. It has multiple lists of entities in the big game state hash, and has functions which pull them out and operate on them. The full hash is only used in a single, small function.
But honestly, I think the Asteroids example may still be the most complex real-time game written in Clojure so far. I think the approach described above should scale pretty well, but that's an unproven theory. Hopefully this site will encourage people to find out.
It would be useful to either have your code up somewhere or to write up a blog post about your experiences and frustrations. Otherwise two missed opportunities here: a) Getting feedback from more experience Clojure developers b) documentation on pain points so the paradigm can be improved / altered to better suit real world use.
You're right, but there's not much to show really. Should I ever pick it up again I'll put my code on github for sure.
Would you say that FP has should be altered to better suit game development? I for my part am pretty happy with the functional features that made it into mainstream languages so far.