Showing posts with label cyoa framework for glulx. Show all posts
Showing posts with label cyoa framework for glulx. Show all posts

Tuesday, 12 June 2018

Plug 1 of 2 - Captain Piedaterre's Blunders

As I mobilise myself to the idea of self-promotion for's annual summer sale (first traditional mental hurdle – it's not summer where I live, it's winter) I'm casting my eyes back over the last few IF things I've made. My assessment is that two of them have been under-patronised.

1. Captain Piedaterre's Blunders

This comic game is a CYOA spin-off I made from a popular game (Captain Verdaterre's Plunder by Ryan Veeder) by a popular author (... Ryan Veeder) that's been pronounced to be canonical by that author. Plus I drew the cover art on paper with my hands, and I'm pretty chuffed with that cover art. Alright, I coloured the art in the computer after scanning the paper, but I drew the black and white lines using my hands.

Piedaterre's is also a CYOA made with Inform, not most people's first engine of fancy when they think CYOA, and under the hood it's running an unnecessarily powerful (for this game) WIP extension of mine that lets you to play it by clicking links, or by pressing keys, or by using one method or the other method or a mixture of both methods. It's mixing the world model and choices, a la Andrew Plotkin's Unified Glulx Input. It was originally a demo module for my extension.

In spite of all this exciting provenance, the game's been rated three times on IFDB in total and reviewed zero times. The most recent rating was 1 out of 5.

I reckon this game's a good, if un-major, entertainment for folks who've played Plunder, therefore I encourage you to try it, especially if you've played Plunder.

* Here's the online playable version of Captain Piedaterre's Blunders
* Here's its IFDB page

I'll talk about the next thing of mine you've probably under-patronised in the next post.

Saturday, 25 February 2017

Leadlight Gamma news and CYOA extension news

Doing maintenance rounds on my websites, I noticed that the Leadlight Gamma homepage was out of date and displaying incorrect info I'd forgotten was there. I've fixed this, and updated the game's sites in general.

  • There was an old warning on the site about problems you might face getting the game onto your iOS device. That warning was temporary and is now irrelevant and gone. iFrotz downloads the game just fine.
  • There was a lack of warning on the site about trying to play the game on a Mac running macOS Sierra. There is now a warning, because the game doesn't work in Sierra. There are fatal problems with both Glulx interpreter options. Gargoyle broke in Sierra and the unofficial patched version hangs when booting Leadlight Gamma, probably because of the graphics. Lectrote gets stuck on two of the game's graphic features, the image gallery and the full screen map. I could potentially say, "Don't look at the gallery or the full screen map and it won't hang," but if I then also have to say, "Plus there's no audio in this version," it feels obviously to me like I just shouldn't be selling something with so many shortcomings to the Sierra user.

The Sierra issues are vaguely depressing given that the game was brand new just two years ago, but interpreter maintenance is beyond my power.

My personal focus will be moving to my music-making for the next period of time, so my IF projects (the CYOA extension for Inform and the actress game) will mostly be going on the backburner for the same period of time.

In January this year I started to build out standalone versions of the demos from my CYOA extension, including the Ryan Veeder-endorsed spinoff Captain Piedaterre's Blunders, but doing so revealed to me there were still important fixes that needed to be made to the fundamental extension code. So it was a useful exercise for me, but obviously one with a less fun result than it could have had. Mostly I hope that the extension doesn't slide into the pits of technical incompatibility or obsolescence before I can I revisit it.

Sunday, 27 November 2016

IFComp 2016: "Whoops!". And other updates.


My plan to start reviewing IFComp games in a more targeted fashion was obviously a great one. The problem was it immediately fell down when I passed what time I’d hoped to spend on it to action in the categories of music and ‘life stuff’.

In retrospect, it was dumb of me to start out reviewing in a random order when there were so many entries in the comp. A moment’s planning would have made me realise I’d no chance of getting far into the catalogue overall. The trouble is, reviewing at random is really fun. I remember that from the years when circumstances allowed me to review everything (or close to it) to a certain personal standard, and in a mostly random order dictated by the IFComp site.

Maybe I just won’t be able to do that again, especially if the number of entries continues to rise. So I think I need to say to myself, ‘Right, I’ve had that particular fun in the past, I don’t need to try to recreate it,’ and change to a more targeted reviewing tack next time I come at this.

So, congratulations to Robin Johnson for winning with Detectiveland, and then to all the other entrants for everything else. Also, I know a few people were keen for me to review their IF, and I didn't get to it. I will eventually, but just because it looked like I was probably going to get to it during the comp and I didn't, I'm sorry.

American Financial Restoration Sale

I eventually noticed there was this Black Friday sale thing going on in the USA. If I’d been more on the ball, I might have taken advantage and put Leadlight Gamma on sale again. Instead I was too sluggish on the uptake, so I think I’ll just wait ’til Christmas or something. This way I also get to say I’ve avoided participating in yet more cultural behaviour doled out by Americans.

Works in Progress

My CYOA Extension for Inform 7 has been coming along really well. I need some third party tech put in place before I'll be able to finish it.

I continue to gather notes for my mystery IF project. The phrase ‘mystery IF project’ makes it sound like I’ve talked about it in this blog before, but I haven’t. What is it? Not telling! Yet, anyway.

I’ve been getting annoyed at myself over the past year for losing too many good ideas for the project. When I say lose, I mean that I didn’t write them down or type them up at the moment I had them. I think my lack of vigilance came from the feeling that their graceless accumulation in a few text files was amounting to a disorganised idea splat for the future that would probably annoy me in the future. How would I sort, find or string together relevant bits from the splat? And there are different types of bits in there. Dialogue riffs, character ideas, incident ideas, structure ideas, etc.

In response to these note-organising problems, I downloaded and am trying out the writing software Scrivener. (Interjection: Holy crap, it's on sale for Black Friday! I must buy now! Buy Buy Buy!) I find it’s working well. It allows me to store all my notes, research materials and prose for a piece in a single document in ways that make it easy to index, connect and rearrange that material. I expect I will produce the text of the IF project in Scrivener and then port it into my CYOA extension. It turns out that I can actually make a pretty direct correlation between blobs of text in Scrivener and choice nodes in a game.

An incidental bonus is that using Scrivener is looking like a good way to write manuals, too, and I expect to have to write a manual for the CYOA extension. I may even be able to publish it directly as an e-book from Scrivener.

Wednesday, 22 June 2016

Tunnel Runner on Wade-Memoir

I lost June to what doctors think was viral meningitis. It wasn't easy to diagnose, but I had two overnight stays in hospital and have been spending the rest of the time at home. I also developed double vision. The vision is expected to self-correct over time and it does seem to be improving a little each day. Today I tested my computing abilities (with a patch over one eye) by writing this and updating one of my websites, Wade-Memoir, with a parser/shoot-em-up (?!) bit of game, Tunnel Runner, from when I was ten. You can go to the Tunnel Runner post by clicking this sentence.

Why I thought of Tunnel Runner today: While my vision was really messed up, I couldn't read and I couldn't watch anything, so I listened to a lot of podcasts. One of them, No Quarter (about classic coin-ops) mentioned that the hosts were supporting the crowdfunding for some turn-based shoot-em-up. This sent my mind back – way back – to Tunnel Runner. It was meant to be a sideways shooter like Star Blazer or Scramble. How it came out is that you use a parser to enter commands to move your ship. Today I wrote this game up in my blog Wade-Memoir, making it my first post there in half a year.

I was having motivation troubles writing the last example for my WIP Inform CYOA extension before I got sick, probably because I've already written a good number of examples that interest me more. This last one needs to be the most fundamental, in a way, and is intended to be the first one for a user.

Soon I hope to be reconstituted enough that I should be able to recommence using my will to force myself to do certain things. Or a day may come when the sun is especially bright (it's winter here) and a particular shaft will hit me in a particular way and inspire me to do it without me having to kick myself.

Friday, 1 April 2016

Choice of choices

Since I'm programming a choice-creating / CYOA extension for Inform 7, I have not been able to help but notice the large number of other choicey tools that are either out there already, or that people are making or releasing right now. For authors, this means they have a growing choice of choices. For me, I know it motivates me to some kind of competitive freshness in my own extension.

This particular post isn't an exhaustive list of choice engines. I'm not doing any research here or being super-helpful. I'm just typing in what I'm aware of to show which ones are on my mind:

– inklewriter from inkle
Ink from inkle
Raconteur, a spinoff of Undum which creator Bruno Dias describes as 'Undum with batteries included'
Salet, a spinoff of Raconteur which is a spinoff of Undum, of which creator Oreolek says: 'It’s actually Undum refactored and rewritten in CoffeeScript with some bits of Raconteur sprinkled in.'

(Homer Simpson: "I just hope we put in enough steampunk, whatever that is.")

To demonstrate the value of competitive motivation, I'll tell you the story of Oreolek's promotional post about Salet. There was one line which said just you wait until I finish the inventory management (those words were italicised in the post).

My first reaction was, 'Oh geez, I haven't programmed my own deeper inventory management system yet.' And my second was, 'Oh yeah? Well how about YOU wait until I finish MY inventory management system?!'

I don't know if the second reaction was a question, or a challenge yelled at people not even listening to me or in the room at the time or who should even have to tolerate such nonsense, so to cover both contingencies I have put both a ? and ! at the end of it.

I then ran off and created an inventory management demo and game for my extension. To make it interesting for myself, I included a glass basket, a transparent container. Then I had an infinite recursion problem –

'The apple (in the glass basket (containing an apple (in the glass basket (containing an apple)...'

– and then I got rid of the infinite recursion problem.

I'm continuing to develop examples and mini-games for my extension. This is turning out to be quite fun, and makes me wonder why I don't place the idea of deeper implementation on a bonfire and just make more games like these ones. I suppose it's because of the split between the things I enjoy playing versus what I would like to make myself. I have enjoyed a huge range of IF, but if I mobilise to make one, I feel like I want to go to a lot of trouble in certain directions. The extension examples are excused for their simplicity, in my own mind, by being examples.

Here is some source from a simple moment in one of the games:

A node rule (this is the bridge-crossing rule):
if cyoa-node stage is prose:
print "The bridge creaks as you place your foot on it. The whole length of it wavers, all the way out over the abyss.[paragraph break]Do you feel brave enough to continue?[paragraph break]";
if cyoa-node stage is choices:
link 1 to "No";
link 1 to "Maybe";
link 2 to "Yes";
if cyoa-node stage is react:
if cyoa-choice is 1:
say "Then you'd best not until you feel bolder. The faint of heart are likely to fall.";
switch to the parser;
if cyoa-choice is 2:
say "You place your other foot on the bridge. The structure is so long and mist-clouded that you can't see the far end. There'll be no escape if it collapses. All you can do is proceed carefully. ";
create a continue moment;
say ".[line break].[line break].[line break]";
switch to the parser in room Over the bridge;

Like at least two similar examples people have pasted from similar choice tools lately, it's pretty clear what this one does and easy to follow even if you don't consider yourself a programmer. It comes from an example demonstrating how to stud a parser game with CYOA moments and conversation.

Monday, 8 February 2016

I7 CYOA Framework update and overview

I've started writing the documentation for my CYOA extension for Inform 7. Two secret testers enjoyed the first example game and their excitement is getting me more excited.

The extension itself needs more examples and more testing, but having written the intro and overview, I want to share them now so that folks get a comprehensive sense of how this thing works and what it can do.

As for a shipping date – when it's ready!


CYOA Framework for Glulx enables authors to create choice-based games or hypertexts using Inform 7. A world model switch allows projects to be integrated with Inform's world model features (rooms, objects, people, etc.) or to explicitly ignore those features if they're not needed. You can use this extension to do any of the following:

  • Create a project consisting entirely of prose, choices and links (no parser) with or without a world model underneath
  • Create choice-based interludes of any kind (conversations and puzzles are typical candidates) to include in a parser-driven game
  • Create hybrid projects in which the player can switch between the parser and CYOA mode at will (tricky, but doable!)

The extension handles the drudge work of automatically attaching keypresses and/or hyperlinks to choices depending on the player's interface preferences. The resulting CYOA projects are user-friendly and portable across a wide range of devices and input methods (keyboard, virtual keyboard, mouseclick, finger tap). Users can toggle a screen reader mode to further customise the interface.

The 'CYOA' of the extension's title stands for 'Choose Your Own Adventure', referring to the popular series of late twentieth century books and their mechanic of narrative progression via discrete choices. I named the extension 'CYOA Framework...' rather than 'Choice-Based Framework...' for two reasons:

1. The extension code is already crammed with incidences of the word 'choice'. Naming its choice-based mode 'CYOA mode' and being able to use the prefix 'cyoa' made everything easier.

2. It's a more spirited name.

Throughout this documentation, 'CYOA Framework for Glulx' will be referred to as CF, and the terms 'user' and 'player' are interchangeable, as are the terms 'game' and 'project'.


A master switch (cyoa-active) determines whether a project is running in CYOA mode or parser mode at any given time. An entirely choice-based game will never leave CYOA mode. As an author, you can toggle the game mode as required and direct where the player goes during transitions. You can also give the player the power to toggle modes at will.

The base unit of the CF project is the node.

A node generally consists of some prose describing the current situation or location, followed by a list of choices. Choices can also appear in the prose section of the node. (Graphics can be used as choices, too.)

In Inform terms, each node takes the form of a single node rule (e.g. 'This is the bedroom rule'). A node has four optional stages which run in a set order - setup, prose, choices, react. Having all the material for a particular node in one rule makes it easy to read and maintain.

CF offers four modes for automatically labelling choices with keypresses: numerals (1-9), letters (A-Z), particular (arbitrary key sequence defined by you) and smart (CF will use the first letter of the choice text, or a letter within each text flagged by you). You can change modes throughout your project as required.

When hyperlinks are on, all choices are automatically presented as clickable/tappable hyperlinks as well. Only the hyperlinks in the active node will function. Old hyperlinks are rendered inoperable every turn (with one exception discussed in the Advanced Concepts section further down.)

Having read the node prose, a user picks a choice by pressing the listed key or clicking on the hyperlinked choice. If the choice links to another node, the user will activate, or 'move to', the new node. An author can also link individual choices to Inform actions (e.g. 'opening the window'), to special 'continue' prompts, to custom programming, or to any combination of the above.

The extension supplies a world support switch (cyoa-support world) which lets you specify whether or not you want your project to be integrated with Inform's world model concepts: locations arranged in a map, manipulable objects in those locations, other characters who may or may not move around every turn, and the like.

If you set world support OFF, your CF project will behave a lot like a Twine project. There will be no rooms, objects or people to program or worry about. You will just be writing nodes of text connected to each other by choices. You can still avail yourself of any programming you need, but world model entities are rendered invisible in terms of the game's text output.

If you set world support ON, you need to assign every room in your game a base node. When the player moves to a new room in CYOA mode, that room's base node is activated, and while a player is 'in' a base node, they will perceive all relevant output from the world model. That's to say that objects and people in the room will be listed as usual.

If the player activates a non-base node (a node not specifically attached to a room) they are considered to be going 'off-node', during which time they will not see the world model-generated descriptions of objects and people in the current room. If they did, the intermingled texts could read confusingly.

Separate from the choices attached to particular nodes, CF includes a dedicated system of hotkey actions and a complementary options menu.

Hotkey actions are actions the player can invoke during any turn in CYOA mode by pressing the key(s) permanently dedicated to them (or clicking on their links if the player turns key input off). CF comes with a base set of 10 actions you can include:

  1. undoing
  2. mode-switching
  3. menu-visiting
  4. game-saving
  5. game-loading
  6. credits-reading
  7. interface-changing
  8. transcript-toggling
  9. game-restarting
  10. game-quitting

Hotkey actions are highly customisable. You can decide which ones are active, when they're active, what keys call them and which ones appear in the options menu. You can also create new ones.

The options menu (openable by a hotkey) makes hotkey actions selectable via CF's regular choice-listing format. Placing hotkey actions in the menu only can help free up more keys for use during regular play, declutter your status bar and move commands you believe users will need less frequently one step out of the way.

If the player can reach some kind of ending in your game, you can activate the CYOA menu equivalent of Inform's traditional 'final question' section. You can also customise the options that appear in the menu.


1. General actions

A general action calls its own node-independant block of code whenever a choice links to it, therefore it can be considered to be free of the context of any particular node. An obviously good, simple candidate to be a general action in a world model game is the inventory command, since the player's location and the state of the game have no bearing on it.

Choices that link to general actions are also the only choices in the game allowed to be made 'eternal', a concept mostly relevant if you force your players to use hyperlinks. If you switch cyoa-eternal general actions ON, all general action hyperlinks in the scrollback will continue to be useable until the screen is cleared. To make a project in which no hyperlink ever ceases to work, it must be built entirely out of general actions.

2. Dynamic/automatic choice generation

Making the appearance of a choice in a particular node conditional on the state of variables or the game is easy, but CF also allows you to generate choices – or kinds of choices – dynamically across a project. Here are a couple of basic examples: You could write a 'create gets' routine that scans rooms for objects and automatically creates 'Get (object)' choices for them. You could place an 'inventory' choice at the bottom of the choice list presented every turn.

For such purposes, CF includes four new rulebooks which run at specific moments as the extension processes and prints out the contents of a node -

  1. before preparing
  2. after preparing
  3. before choices
  4. after choices

By placing dynamic choice generation rules into the appropriate rulebooks, you can control when in the process any automatically created options will appear.

3. Limitations

The main thing CF can't do that some authors are likely to want to do is print choices or hyperlinks outside the main window, or in the status bar. Unified Glulx Input, the foundation of CF, doesn't support such things yet, so CF doesn't support them.

Graphics support in CF is of the most basic kind. If you use a graphic as a link, the graphic appears in the game window at its original size and flush against the left edge of the window. Nor can successive graphics be placed beside each other. But on the plus side, CF offers better support for graphics alt-text than ships with Inform.

Sunday, 17 January 2016

1-Carolyn Vaneseltine interview 2-Open Apple podcast & drive noises 3-Apple Time Warp podcast 4-Inform 7 doings

This is one of those Cadbury Roses blog posts with an assortment of topics.

1. Carolyn Vaneseltine interview

I listened to and enjoyed the new interview with IF author and Sibyl Moon blogger Carolyn Vaneseltine on Ken Gagne's Polygamer podcast. The conversation 'ranged across Twine, Inform, and Choice of Games, how to develop games without knowing how to program, the difference between “game design” and “game development”, and the upcoming Global Game Jam (Jan 29–31...)'.

The Game Jam talk caused me to think back on my two experiences of Global Game Jam to date, in 2011 and 2012.

If you're someone who's interested in going to Global Game Jam and would like to know (even) more about what it might be like, or you're someone who likes stories about hothouse game development, or you're someone who likes stories about hothouse game development written by ME in particular, you might enjoy these two accounts of my times at Global Game Jam:

2011 Global Game Jam, Sydney, Powerhouse Museum

2012 Global Game Jam, Sydney, Rosehill Gardens Racecourse

2. Open Apple podcast & drive noises

As a dyed in the wool Apple II head, I listen to the Open Apple podcast every month. It's about Apple II stuff, and the majority of it is about Apple II stuff that's happening today, because people are still producing software and hardware for Apple IIs. Those vacant hardware card slots Steve Wozniak built into the computer just keep paying off.

My 1990 Apple IIGS computer was completely re-energised last month when I bought a CFFA 3000 card for it. This card goes in one of the slots and adds a USB / solid-state storage facility to this 8/16-bit computer. And you don't have to limit yourself to any one kind of storage. You can use any modern computer to copy any kind of disk image onto a USB – 5.25-inch floppy images, 3.5-inch floppy images, hard drive images, images using any operating system the computer can handle – and you can boot up any of these images from a menu. This card, apart from being an enormous convenience, lets you pretty much eliminate the biggest point of failure for these older computers from your system: the moving parts disk drives and the decaying magnetic floppy media that go in them.

A price to pay for cutting out the real disk drive is that you no longer get to hear what the drive is doing. The drive sounds on the Apple II are particularly audible and organic. You can tell what the I/O is doing by listening to the kinds of grinds and clicks the drive is making. Particular games make particular sequences of sounds while loading, or at particular points during play, that basically become part of the aesthetic of the game on this platform.

(As an aside, here's a link to Antoine Vignau's Youtube channel 'Cracking Senses', which aims to pass on Apple II software-cracking lore and techniques. In these videos, he boots up various copy-protected Apple II disks in a drive with the top off so that you can see which head movements go with which sounds. A lot of copy protection schemes are identifiable by their drive sound signature.)

The thing I most miss when playing adventure games that I originally played on the Apple II on newer platforms is the contribution of the disk drive sounds. Major accomplishments in the Sierra Online or Infocom games were often accompanied by a pause for some heavy loading from the drive, perhaps with eccentric chugging sounds.

In emulation, this part of the Apple II experience is kept alive by the Virtual II emulator. Virtual II contains samples of all the different head and spin movements made by the 5.25-inch drive, and it strings them together in response to the movement of a virtual head to output the same sounds a real drive would make when interacting with a particular disk.

3. Apple Time Warp podcast

Another Apple II podcast I listen to is Apple Time Warp. I'd say that I listen to it regularly except that there have only been two episodes so far, and there were two years between them. But I have listened to both episodes.

This podcast is co-hosted by John Romero and features him talking to 80's Apple II game programmers about their games, tech tricks and memories of the software industry.

4. Inform 7 doings

In my Inform 7 doings, I produced the first example game for my WIP CYOA extension over Christmas. Predictably, it immediately revealed dozens of bugs and shortcomings in the system. So I've been attending to all those, and perhaps soon I will be able to move on to the easier examples.

After those are done I intend to make a full project using the extension. In matters of minor irony, this project will require almost none of the bells and whistles the extension makes available. But that's sort of forgetting that the meat and potatoes features of the extension are significant ones. The project will be friendly to all of desktop, website, iOS and screen reader play out of the box.

Sunday, 27 December 2015

Dreaming of a white fish Inform XMAS

It was Jean Baudrillard who postulated that we'd all end up speaking in ironic quotes in the hyperreality he also postulated. I think he also coined the phrase 'hyperirony', but Google isn't confirming that point right now, and the ace essay I wrote about this during my degree is both twenty years old and not located in the house in which I'm typing this post on an iPad+bluetooth keyboard combo.

I'm weary in life of being spoken to in ironic quotes I don't understand, but of course when I do it to others (minus the 'not understanding' part) I expect I'm doing it well. I choose source material judiciously, not from obscure hipster cartoons screening on pay TV in another country, for instance.

Often I choose to quote The Simpsons, as they have covered almost everything, and usually done it better and funnier than others. So, my general XMAS message is:

"Have a – nice Christmas!
Have a – nice Christmas!
Have a – nice Christmas!
Non-Christian friend"

PS I am irreligious.


In Inform-dom, we have been gifted a new version of Inform. It's 6M62:

I like these letters, 6M62. They look bold and ground-touching. Not like my least favourite letters of late, '6L02', who looked veritably frail and consumptive.


In my own Inform-dom, I am well advanced in progress on my CYOA extension. There's still lots to do, though. More coding, making examples, some testing. But the work goes on. This is no vaporware.

Occasionally I speculate on the 'you need an interpreter' paradigm of most parser-based games that grew out of the modern community. Sometimes it feels like it just shifted the obligation to update software so that it keeps working from one group of people to another. That's a simplistic summation, but in the current situation, I don't think I ever worked out if anyone has a particular idea about where the emphases of compatibility should be. The core idea that the games are just words and that users should be able to control the appearance of the words is a good one, except for the million exceptions including graphics, sounds, and various UIs that authors want to use. And being an author and not being able to control stuff can be maddening. So even when the onus is left on the interpreter to be kept up to date (and not your game), from an author's perspective, you may end up with multiple versions of your game where one thing is broken in each one depending on where/how the user plays it, or where it never looks the way you'd really like it to.

That sounds a bit dispiriting, an effect enhanced by me writing it in a dispiriting fashion. But it's not like this is a new situation. Plus, this is XMAS! So get confident, stupid! The reason I vexed on these points a little here is as a prelude to pointing out how I'm going in almost the opposite direction of my traditional design impulses (which are author-biased and pro specificsim) in my choice-based extension. It harkens back to the 'the game is just the words' idea. The author links the word(s) to a choice or, uh, link, but the player can receive these any way they want. If you (THE PLAYER) want hyperlinks for your touch device or for clicking on with a mouse, you can have them. If you want letters of keys you could press, you can have them. You can also have both. So the approach is intended as a bit fire-and-forget for the author. Stop programming interfaces and just put your content in, and expect it to work on desktops, mobiles and in screen readers.

Now, one of the eternal vetters of ideas at, Peter Piers, said 'What if the author wants to override something? eg block hyperlinks, or keypresses, or whatever.' Certainly it remains that there are ways to do this, but as work on this extension has continued, I've realised which basket it's throwing its eggs into more forcefully, and that is the 'let the player control the interface' basket. The controls are simple and plugged into the game by the extension, so it's an extremely far cry from having to hack Gargoyle's template to force it to print in your particular favoured shade of ectoplasm green :(

So! This extension has a design emphasis about how it's going to do things. I think it's a good one for this project.

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, 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.