Update: Modular / Pluggable Roguelike
Posted by postfuturist on 2009-04-07 08:18:09

I had to scrap my codebase after a false start. I took a second look at my goals after discovering the 7DRL. To my surprise, a large number of people are writing their own roguelikes. This is a common pasttime among hackers, apparently. My project looked like just another roguelike, but in Python. I don't have enough free time to write everything from my last post in any reasonable time frame. So, I am making the project one step simpler for myself. I will write the game with a pluggable/modular architecture (an educational task itself) which will allow these various features to be added in over time, and perhaps even by other people. My goal will be to design the core architecture, and functional pieces. Instead of getting caught up in the minutia of FOV, random level generation, gameplay balancing, an so forth, I can focus on an architecture that will allow these parts to be written by others and swapped out.

What I need to do next is define what a module and a plug-in are, exactly. There are certain core modules that need to exist, and there can be only one (at a time, I suppose) like the FOV module and the interface module, but there are some which can exist in parallel with others of the same type, like AI modules, level generators, etc. In some definitions, a pluggable architecture means that there are hooks that plugins can "subscribe" to and just work on top of an existing functional program. That doesn't exactly work in this context, as there are main pieces that need to exist, which I would like to swap out easily. More on this later.


Comment from george:
hi, sorry for the late comment, but I just read your previous post and this one and they sound very interesting! I wouldn't say that your ideas are 'just another roguelike in Python', as the client-server model really sets it apart -- it'd be great to see a release of what you described. Also, I couldn't tell from your posts if you were aware of the libtcod library, so I wanted to mention it. Basically it implements FOV, level generation, and so forth, and I think it could really mesh well with what you're talking about. I encourage you to look at it as some really amazing roguelikes are being made in it. I realize a lot of the fun in writing roguelikes is creating the structure of the program yourself, but it could be an interesting challenge to use libtcod as a module in the kind of structure that you describe, and it would save a ton of time in getting a neat implementation out the door.

    Leave a comment: