A few random bits about the game design etc.

  • This is my first roguelike and my first 7drl, and the first game I wrote since days of BASIC. (Not counting some MOO engines.) Haskell made this a much different development experience than I remember. It was a blast!

  • Some players find the limitations on movement when the worm has swallowed letters to be confusing. There is not a great rationalle for it that fits into the game world. It was necessary to make the game sufficiently hard. It might have been better to have letters be things you can swallow and move around with, but for whatever reason, you don't want to.

  • The way that the end-game and winning plays out was a not-quite accident. At first I had the View contain a list of status messages, but when I realized it would be neat for the bookworm to be able to interact with them, I had to rework the data structure to let the victory condition work.

  • It's possible for two spells to share overlapping components, or even for a single spell component to cast multiple spells at once. This was an accident, but it simplified the UI and data structires, and I liked the possibilities, so I kept it.

  • NEW farming may be possible in some situations. Call it a feature.

  • The scroll is not physically right when flipped; the ragged bits should move to the other side. It's just too difficult to make semi-procedurally generated content that is interesting to read and that would fit in such a scroll geometry, for me to be able to do that.

    (I might have been able to do it if the back of the scroll were entirely limited to Joyce, but that seemed too cruel and I added the Joyce content generator too late. Also, a true inversion would make thinking about where to dive harder.)

    Also, it's physically impossible for a rolling up scroll to crush you inside itself from both sides. Once side would really be safe if this were real life. ;)

  • I went in with a basic game design, but I thought of diving to the other side during early development. The nice thing about it is that if one side gets the player irrepairably stuck, the other side probably offers a way past. Since the level generation doesn't ensure a path through a level, this is a very good thing!

  • I also didn't think up the crushed by the scroll mechanic to drive the player onward until I had a scroll drawn onscreen with the player moving in it. I was very happy that this gave a pace to the game, similar to how hunger works in other roguelikes, but more visual, and that the final "scroll rolls up" endgame fell out for nearly free.

  • I've always been fascinated by the prohibition in the GPL against changing it. The free software license is not licensed freely. However, I didn't notice that the game often involves changing the text of the GPL until recently. Whether this means the game violates the license of its own license is left as an exercise for the reader's lawyers.

  • The level generation, such as it is, was a series of happy accidents. All I was sure about was the GPL would be in the mix. Given how classic the source material used is, I wanted to keep close to it, rather than scrambling it completely, so that it could still be enjoyed as the game was played. At the same time, there is a fair amount of subtle randomness going on, so there are many possible different games of scroll.

    Different texts admit different methods of randomization.

    Kafka's Metamorphasis would have been utterly perfect material, but it was too linear to work well.

One morning, when Gregor Samsa woke from troubled dreams, he found himself transformed in his bed into a horrible vermin. He lay on his armour-like back, and if he lifted his head a little he could see his brown belly, slightly domed and divided by arches into stiff sections. The bedding was hardly able to cover it and seemed ready to slide off any moment. His many legs, pitifully thin compared with the size of the rest of him, waved about helplessly as he looked.