Inspiration
We wanted to learn OpenGL and thought making a simple game engine would be quite cool.
What it does
Loads the original WAD (short for where's all the data?) files of the game back from 1993. Renders the levels in a 3D environment that resembles the classic game.
How we built it
eyeballing
Challenges we ran into
Floor and ceiling rendering is tricky and is not implemented properly. The techniques used in the original engine cannot be applied because that assumes rendering on the CPU and we really wanted to do OpenGL. The archaic file format is also a bit inconvenient to work with, especially in a strongly typed setting. Raw 1:1 bindings to OpenGl aren't too nice either. nullPtr in Haskell just doesn't feel right.
Accomplishments that we're proud of
Managed to draw pixels on the screen
What we learned
- (some) OpenGL.
- How to sweep unsafe code under the carpet and randomly get segfaults in 'pure' code
What's next for Doom in Haskell
Nothing really, it was planned to be a weekend hack and thus has fulfilled its purpose (it is currently a bit broken, might fix up the simple low hanging fruit) let's just say the no-clip cheat is turned on by default, and turning it off is not implemented yet and a bit (very) inefficient too
Built With
- ghc-extensions-(lots)
- haskell
- type-classes
Log in or sign up for Devpost to join the conversation.