7DRL 2021 Day 7


7DRL 2021

Day 7+ of my 7+drl

Link to the village of the day

I failed to finish within confines of 7 days for the 7drl challenge. The last day I was busy with schoolwork, and then got stuck wading through the documentation for the 'blessed' screen-writing library. Partly this is my own limitation, but secondly it's also because this library is a do-all, be-all kind of screen-drawing library and frankly just too big. They boast it's 16,000 lines of code, and it sure feels like it. I just want a simple ncurses clone. The API is huge and the documentation leaves something to be desired. But as my college roommate Doug would be sure to remind me, "a poor worker blames their tools." I looked for a simpler alternative but did not see much on npm. In the end, I failed to get blessed to integrate and work with my code within the deadline. Pretty dissapointed but I vowed I'd return.

And I did: 2 weeks later. I started by taking one of the 'minimal' examples that come with blessed, then stripping it even further down. You'll see this in the examples folder, labeled keypress-blessed.js. My minimal example renders the entire screen of text, rather than creates some box (like in the examples) since I couldn't get far enough and was totally confused by how it does its rendering. So I made a test where it checks for keypresses and prints out whether you chose up, down, left, right (and also checks with vim-keys), and quits if you press q, or tells you to try again if you type anything else. This then became the starting point for a new round. Using that, I systematically added back in the original buggy code I'd had before I started trying to integrate blessed. I saw where I had gotten confused (rendering the dungeon map back and forth to code), and made some improvements. Gradually, by the end of the (late) night, I had a working version.

I came back the next day to do more cleanup. Finished some detail/clean-up to move text to print out on the correct location on the screen. I'd say I'm at an alpha. The 'game' (zen-like simulation) now works okay and is playable. It's a touch too random, and maybe should be constrained more, and needs some refinement of the design. I'd also like to add in more actions the player can take beyond just picking items up. Now it's time to look at the roadmap and decide what I feel like adding on to decide what should be in the v1 release.

I added in some water features and increased item/place/grave spawning.


 The rusted gates of an abandoned bemusement park

Note: this looks better in the actual CLI where I can leverage color.