This is one of my first Haskell projects; I first wrote all of the renderer in Haskell, then translated the hot spots to C.
Holfenstein uses SDL for basic window and keyboard interaction, but no graphics primitives. All graphics are rendered directly to a framebuffer from both Haskell and C. So even in Haskell I got some of those classic renderer errors like:
- segmentation fault
- rendering is striped and way too tall
- etc.
I use the following high-quality dataset for the world model:
ssssssssssssssssssssssssssssssssssssssssssssssssss
sssssssggggggggggggggggggggggggggggggsssss sssssss
sssssssg ggggggggsssss sssssss
sssssssg ggggggggggggggggggggggggggggsssss sssssss
sssssssg gssssssssssssssssssssssssssssssss sssssss <-- map.txt
sssssssg gssssssbbbfbbsssssssssbttbssss gssss
sssssssg gmmmmmm sssssssss ssss m gsss
sssssssg gsss
sssssssgssmmmmmm sssss ssssss ssss gssss
ssssssssssssssssbsssssbbbssssssbttbsssssssssssssss
It's really true: "In short, Haskell is the world’s finest imperative programming language." -- Simon Peyton Jones