Monday 19 October 2015

Work in progress: CYOA Framework for Glulx

I've broken off my IFComp game-reviewing streak to take advantage of time and motivation opportunities to work on a new extension for Inform 7. It's called 'CYOA Framework for Glulx' and its goal is to help folks produce hyperlink/keypress-driven CYOAs in Inform. I want the results to be author and player-friendly, flexible and easy to publish online.

By coming off the back of Inform the extension also supports a lot of cool things that aren't always handled well by other CYOA producing systems: Proper UNDO, transcripting, game-saving (by named files with a save dialogue, or by a single-keypress quicksave slot; the author can decide which) and, if you want it, the full world model. But I'm also putting in a switch so you can turn the world model OFF. This way you can just connect nodes of prose to each other with choices if that's what you need.

With previously available tools, it's been difficult to stop Inform 7 running everything through its 'press RETURN' parser. As an author, that's exactly the thing I don't want it doing when I'm trying to collect and react to discrete keypresses or clicked choices. My way to get around this in the past worked okay, but was super-hacky, and certainly couldn't support the world model, genuine UNDOs, genuine time management or non-manually managed game saves. I should point out I have nothing against super-hackiness per se if it gets the job done for an individual, but if you're making a tool for other people to use, super-hackiness is neither portable nor user-friendly.

The background on why I'm making this extension now:

Before knuckling down to work on my planned big parser game set in the Andromeda universe (click this for my blog post about that) I felt I wanted to get another smaller IF out. I decided it would be a CYOA, because even a small parser IF takes me ages.

As I discussed my super-hack approach to making an Inform 7 CYOA over on intfiction.org, Andrew Plotkin mentioned that he'd made an experimental extension called 'Unified Glulx Input' which might be able to help with this project. I tried it and it really did. Then climbingstars chimed in with some extra UNDO help I needed.

After programming away at my extension for the past week, I've just shared a minor tech demo of the work in progress on intfiction. I have a thread open to get feedback on it (the first post has links to the demo). I'll report back on future progress with the extension in this blog.

* I've only released one thing with my previous super-hacky method, an Apple II CYOA game I ported to Inform 7 and put inside Leadlight Gamma as an easter egg. What's interesting about that one is that it also fakes some BASIC line numbers. Each node is identified by its original BASIC program line number from Applesoft.

3 comments:

  1. Good luck with this project. I'm excited to see it and hopefully use it in the future!

    I'm curious - Will there be game book features too?

    ReplyDelete
  2. This sounds very exciting. I've been brainstorming on a project that would benefit from a parser/CYOA fusion authoring system.

    ReplyDelete
  3. Thanks folks.

    To the first poster - gamebook is not an area that had occurred to me, and that's only because it's the one I've least played in online form. This is vaguely ironic in that I own a huge collection of ye olde Fighting Fantasies. But this just means I need to know what's expected of this format. For instance I know that Quest has a particular gamebook format and I should probably see what that does for starters.

    Just off the top of my head, if I think of something gamebook-like, like a side window with stats and clickable bits, that's unfortunately out of my reach for now because the experimental extension that makes MY extension possible is so far limited to the main window. It's easy enough to put stats at the top of the screen in any Inform game, but again they're not clickable with the tech I've got at the moment.

    In terms of gamebook mechanics (eg support stats, change them), that's an area that Inform already makes quite easy without any specialist extensions. You can just say 'strength is a number variable.' Then later on - 'now strength is strength plus 3'. Etc. So in a way, except when entering areas of particular complexity, like combat, I sneakily (lazily? ;)) almost feel I don't need to do too much about that, as you can just use Inform per se to add such elements to any Inform game. But if there are any particular ideas you have about what a gamebook format could benefit from, please let me know. I may however be limited because of the no-extra window thing.

    ReplyDelete