Complete Roguelike Tutorial (Summer 2017)

There was a proposal on the roguelike development reddit for members of the reddit to all go through the classic Complete Roguelike Tutorial, using python+libtcod as a group project.

Of course, people were invited to use their own language of choice and library of choice if they wanted. So we'll be using Haskell, obviously.

We'll also be using a display library that I developed called Hexes. We'll start with version 0.2 and possibly moving to a later version if some sort of major deficiency comes up and I need to update the library before this project is done. It uses OpenGL (via gl) and GLFW (via GLFW-b), so it works with basically any desktop OS that that those libraries support. If you really want a program that can run in a terminal instead you can try with something like vty or brick, but those don't work on Windows, so bleh. Hopefully our game code and display code will be sufficiently disconnected that you could compile the program for either display system easily enough anyway.

In terms of the non-graphical things that libtcod provides, we'll be doing those things ourselves. I'm sure there's haskell libraries available for the different things involved, and we'll talk about some of them perhaps, but we'll going to cover how to implement the parts ourselves as part of this exercise. Even Hexes itself is a "handmade" sort of thing that you could do on your own. I'm no OpenGL expert or anything, I just did the Getting Started guides and then cobbled together a display using lots of little quads that draw from a texture file.


Part of the deal with this project is that it's being presented to the other (non-Haskeller) roguelike devs (who mostly write with Python and Javascript these days it seems). So, while I'll write the best Haskell I can, the explanation pages themselves will focus quite a bit of time on explaining what's going on to non-Haskell folks. They will assume at least a basic understanding of programming in at least one other language, and I'll try to stick to comparisons that a Python programmer might understand, since I've only written about 100 lines of Javascript ever.

If you do know Haskell you won't need those deep explanations, so you can perhaps just jump to the code and see how things are setup and you'll probably be good to go.

Further, it's based on a guide that's for Python programming with an imperative-OOP lean and such, so it will probably take on a little bit of a different shape than a normal Haskell program might. I'll try to not let that affect me too much though.

results matching ""

    No results matching ""