Brool brool (n.) : a low roar; a deep murmur or humming

Rule-Based Interactive Fiction Revisited / IFCOMP 2017

 |  coding if

Follow up, kind of, to this article.

I’ve decided to compete in IFCOMP 2017. I’ve had an idea for a cool scenario kicking around in the back of my head in forever – nothing more than a vague idea flitting around in the closets of my mind, but still interesting – and I decided to finally just bite the bullet and try and get the entry in this year.

I have until September 28th to complete everything, which is looking dicey already, and will probably only monotonically increase in uncertainty as the date approaches.

Admittedly, it is looking dicier because I decided – rather than using the perfectly respectable and capable and battle-tested Inform 7 or TADS 3, I’ve decided instead to just go ahead and do my own interactive fiction system. Yes, this is kind of completely bonkers, and wouldn’t be acceptable in any business situation, but passion projects follow their own calculus.

In implementing it, it is apparent just how much modern systems manage for the user – parsing, ambiguity resolution, the object tree, handling the different legality scenarios with regards to visibility and reachability and whatnot, and it is somewhat a pain in the ass to implement all this stuff, but it is all functionality that is expected in a modern text adventure. Yes, “modern text adventure” seems oxymoronic to me as well There aren’t many advantages to doing my system, especially at the same time as doing the adventure itself, but at least I get a LISPy REPL out of it, so I call it a win.

The question is, did I decide to be exciting and novel and go with a rule-based system or instead cheap it out? Eventually I decided to go with a conventional object oriented system, for a number of reasons:

Implementation Notes

I’ve been using Clojure for this project (on v1.9 alpha for the spec stuff, actually), and it’s been a joy and a pleasure – the Emacs + CIDER combination is rock solid, all the potential libraries that I need are there, and moving over to ClojureScript for the version that runs in the browser was straightforward, thanks to Figwheel. The internal language is a pattern-based maybe-monadic languge that works okayish, but, as mentioned above, the big advantage is that it’s all interactive, no compile steps needed, so it’s comfortable – tweak and go.

coding-room-screen

Discussion

Comments are moderated whenever I remember that I have a blog.

There are no comments on this article.

Add a comment