Almost four months ago, I started writing a series on how to write a roguelike in Racket. I believed then as I believe now that Racket is an excellent all around language and that I would like to see more done with it–particularly in games.
That being said, it’s about time to move on. It’s been harder and harder to come up with new things to do and the weight of the code base is beginning to weigh against me (see below). In moving on though, it’s time for one last last post detailing the good and the bad.
What went well:
- I learned a lot more about Racket–in particular its
- I created a few libraries that may be useful in other projects (which I indend to convert to PLaneT 2 packages when it is released):
- ascii-canvas -- a direct translation of Trystan’s AsciiPanel for Java for creating simple ASCII displays
- noise -- generate Simplexor Perlin noise
- thing -- an alternative prototype-based object system
- It’s still not really a game; there’s no end game / no way to win
- I never did compile it for distribution other than source code (I’m still interested in getting general cross compiling working)
- The thing system is powerful, but really I probably should just have stuck with Racket objects
- I haven’t quite figured out how to organize Racket projects; the code base is messier than I like and getting harder to modify each week
- Performance isn’t particularly great; this is partially based on generating tiles on the fly and just a general lack of optimization (I could have done this better)
Overall, not too bad. I’d like to start another game in Racket soon; this time perhaps something actually intended for distribution. I’m thinking about going back to particle/sandbox based games. It’s been rather a while, but I still remember a good number of the optimizations. Plus, I’d like to see exactly how many other genres such techniques could be applied to. Puzzle games are obvious and have been done often enough before but what about top down or side view shooters? What about a platformer? Could be neat.
If you’d like to read from the beginning, have at it. Here are all of the posts:
As always, if you’d like to see all of the code for this project, you can do so on GitHub: - Racket Roguelike
git clone git://github.com/jpverkamp/racket-roguelike.git cd racket-roguelike git submodule init git submodule update racket main.rkt
It seems that the submodules wondered off at some point. Instead, you can install the three libraries this uses directly using
, and then run the code:
raco pkg install github://github.com:jpverkamp/ascii-canvas/master raco pkg install github://github.com:jpverkamp/noise/master raco pkg install github://github.com:jpverkamp/thing/master git clone git://github.com/jpverkamp/racket-roguelike.git cd racket-roguelike racket main.rkt
If anyone would like to take this code and develop it further, feel free. I just ask that you drop me a line and let me know what you’re doing. I’d love to see it.