Making Games in Lisp with Hypergiant and Chicken Scheme
alex-charlton.com
alex-charlton.com
Chicken Scheme recently received a version 5 release, so please be aware that this article focuses on Chicken 4, as I do not believe Hypergiant has been ported to Chicken 5 yet.
As an aside, it's a shame the footnotes render over the text for me in Firefox.
While I'd love to play more with / learn more scheme - it's too niche of a language these days even for me (someone that writes a lot of Nim).
The scheme community seems to be very small to begin with, and then you factor in all the implementations - it's worse than the Common Lisp scene.
I do love the simplicity of the language and how elegant scheme code can look - and chicken / guile seem to be very well suited for game development.
I feel like I'd be trading a larger community for a smaller one at this point - and that's saying something, coming from a Nim user.
I've mostly given up on the idea of driving applications from a higher level language, I much prefer having C as a foundation and then embedding a more dynamic language that I have full control over. I like to call it reverse FFI :)
I used to do that in Common Lisp, which has the only FFI I've come across that's even nicer than Python's. But it's backwards; once you're in a high level language, it's inconvenient and expensive to reach down.
It makes a lot more sense to me to drive the whole process from C; not only do you have direct access to C; you also get to control the embedded world from the outside, which is about as meta as it gets.
http://rosettacode.org/wiki/Call_a_function_in_a_shared_libr...
(setq Display (native "/usr/lib/libX11.so.6" "XOpenDisplay" 'N ":0.0"))
http://www.iro.umontreal.ca/~gambit/doc/gambit.html#Scheme-i...
As for posix subsystems on windows, they're indeed painful. But the new Linux emulation layer is quite good - in some cases it might be a viable option.