Reviving Stones

I just looked at the date of my last post and holy cow its been a long time since I’ve done any work on Stones. I’m starting to revive my work on it though! Basically what happened is life. I’ve been busy with paper submissions at school. I’ve decided that I really dislike running user studies as they take far more time than I ever would have predicted. Since I last posted, I’ve had an EMNLP paper submitted and rejected, and I’ve been working on submitting elsewhere. I’m also working on another ACL paper. In addition, with our oldest kid out of school for the summer, we got a national parks pass and have been taking advantage of it, leaving even less time for roguelike dev.

Anyways, things are starting to settle down now that school has started up again and I think that I’ll be able to find time to work on Stones. I’ve even managed to stream a few times in the last week! Its been long enough that I felt like the best place to start was with a refactor to refamiliarize myself with the code. I’ve added and fixed some godocs, tackled a few old todos about reorganization, and I think I have my head back in the code base.

I have a few goals. First, I want to revisit the basic structure that I put together during the 7DRL Challenge. I have two main issues. I still feel like I have too much reliance on concrete structs instead of the more elegant entity-component system I’ve worked to set up. I need to rely more on event messages instead of type assertions so I can make specific function calls. This will be more extensible and maintainable going forward.

The other issue I’ve had with the code from the 7DRL is the use of globals. For the 7DRL challenge it was fine. For things like the log, screen, hero and map, making these things globally accessible was the quick and dirty solution. The problem is that this solution is dirty and so for long term Stones dev I want a more maintainable design. I’ll post more about the overall design once I nail it down.

More Reading