I just finished a music and video project and have turned my gaze back to IF to find Spring Thing.
They say that in Australia, I could call it 'Fall Fooferal'. If 'they' are trying to do me a kindness in saying this, they are off base. No Australian would say 'Fall'. I doubt they'd ever say 'Fooferal', either. Therefore I'm calling it Autumn All Stars, prejudice of positivity be damned.
Ms. Lojka by Jordan Magnuson (you can click this link to play it online)
Ms. Lojka is a weird lady who lives in a weird tower in New York and does weird things: so says the weird narrator, via my paraphrasing, in the tale also called Ms. Lojka. The game says on the box that it is not for children. It took me about twenty minutes to play.
My response to this game was all over the place, though I must frame this statement in a positive arch where I would say that if you like morbid intrigue, I recommend Ms. Lojka. It also has great audiovisual and aesthetic strength of the kind that makes me say it is the most expensive-looking (in a Hollywood sense) Twine I have encountered. I will still elaborate in this review on link offerings whose rhyme and reason I could not discern, features I wish creators would not enforce when using the Twine engine, and, at considerable length after some dots, what I made of the game's final message.
Ms. Lojka's introductory image, a scary pastel of a dour woman looking right at you, establishes a mood of anticipatory fearfulness that prevails for the duration. The next image fades in, an impressionist-style pastel of a New York street. An improbable ziggurat stands in the background. The prose of the narrator's thoughts begins to appear, typed onto the screen in real time to the accompaniment of chattering typewriter audio.
Here's something really creepy about the typing, at least on a Mac – if you hide the browser window which is running the game, or move it to another space, the narrator stops typing right where he is. The sounds stop. The letters stop appearing. As soon as you unhide or bring the window back, he continues typing from the very next letter. Awesome!
The narrator turns out to be a glib and somewhat sardonic observer of New York. He speculates on the existence of one Ms. Lojka who dwells in the tower, what she does up there (violence) and what she might represent. Clickable phrases in the narration lead to prose elaborations of the kind you might expect. You can guide the narrator's thoughts around a little bit, but over the course of the game, no prevailing design scheme of much force emerges. Sometimes you get one thought or one slice of history instead of another. Sometimes the choices just aren't very different or comparable. They don't start to construct a frame of reference in relation to each other that would cause you to invest in them with intentionality, or even with much useful speculation.
In short, for ninety percent of the story, I didn't really know why I was clicking one link or another except to make the prose advance in general. I did have a fearful sense of, 'What might happen next?' but that came from (1) the strength of the game's outward aesthetic (2) the game's initial cues that I should be fearful (3) the morbid-leaning speculations of the narrator. It didn't come from anything I clicked, or any anticipation of outcomes or changes based on words I clicked.
Some of the links are emotion or concept words which, when clicked, send you to a black screen which types the narrator's less-filtered inner thoughts, making for a sort of pathological critic channel. The thoughts are brief and often self-correcting (the latter a neat effect) but they are so abstract in relation to the regular narration that they didn't make me feel things. I couldn't hang them on details at the time, though I was tempted to do so in retrospect of the game's ending.
The inner thoughts become more mottled and unsettled as the game progresses, but their practical effect on me was to swell my annoyance that I couldn't really tell when the thought links were ready to click. You have to wait for the thoughts to settle, then you wait a bit more, then you realise, 'OK, the words have stopped moving. I can click now.'
This bumpy business took me in and out of the headspace. My belief is still that the performative/interface/temporal effects that Twine authors can brandish are mostly being used to querulous effect. They are definitely of querulous effect when the issue of replayability is a factor. This game does eventually ask you if you want to play it again in a different way, thus implying there would be a significant variance of content if you were to do so. Knowing that I could not hasten through any of the real-time typewriter text or the thought-shifting black screens was the most immediate reason that I didn't.
I frankly discuss the game outcome that I obtained below the dots-meets-cut.
.
.
.
.
.
.
Friday, 15 April 2016
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:
– Twine
– ChoiceScript
– inklewriter from inkle
– Ink from inkle
– Undum
– 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.'
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.
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:
– Twine
– ChoiceScript
– inklewriter from inkle
– Ink from inkle
– Undum
– 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, 7 March 2016
Friday, 26 February 2016
wadeclarke.com rebuilt and Time Warp extension for Inform 7
I just completed a new look renovation of my website and added an interactive fiction page while I was at it. The IF page is a simple hub of my games, tools, sites and blogs.
If you've not had a look over my creative projects before, I'd welcome your visit to my new site:
wadeclarke.com
Time Warp
In IF-dom, I am making available an Inform 7 extension called Time Warp. What it does: It puts a whole CYOA game I wrote on the Apple II+ when I was 12 or 13 into your game. Time Warp has lots of great endings like – 'YOU'VE GOT A LIFE-TIME AHEAD OF YOU...IN GAOL!' – all in the CYOA / Fighting Fantasy / Be An Interplanetary Spy vein.
It's all caps because the text was retrieved verbatim from the Apple II+ game, where all the text was all caps. Not a word, typo, punctuation or 40-character line justification has been revised.
Why would you want Time Warp in your game? Well, if it fits the aesthetic, why not? This would be a move in the tradition of Call of Duty: Black Ops, which had the whole of Zork in it as an easter egg, introduced by you interacting with an old computer in the game world. So in that case, your character was playing Zork.
I ported Time Warp to Inform 7 so I could make it an easter egg in Leadlight Gamma. I put an unlockable Apple II+ in the game's school.
Time Warp won't interfere with your game code. Just include the extension, then, at the point you want Time Warp to start, use the phrase 'run time warp'. I've put a demo online showing how you could embed it in an in-game computer prop:
wadeclarke.com/ifdemos/time_warp/
That site also has the link to the extension. You can right-click it and save as Time Warp.i7x
I'd enjoy seeing Time Warp show up as a diversion in an I7 game, or as a diversion in a bunch of games. In any case, this extension may just give you the idea for writing your own self-contained, reusable extension game. Or, if you want to write a really simple keypress CYOA by somewhat hacky means, look at the Time Warp code.
(You might be aware that I will be releasing a full-featured and non-hacky CYOA extension for Inform 7 in the not-too-distant future. The Time Warp way of doing things isn't suitable for anything robust or complex.)
If you've not had a look over my creative projects before, I'd welcome your visit to my new site:
wadeclarke.com
Time Warp
In IF-dom, I am making available an Inform 7 extension called Time Warp. What it does: It puts a whole CYOA game I wrote on the Apple II+ when I was 12 or 13 into your game. Time Warp has lots of great endings like – 'YOU'VE GOT A LIFE-TIME AHEAD OF YOU...IN GAOL!' – all in the CYOA / Fighting Fantasy / Be An Interplanetary Spy vein.
It's all caps because the text was retrieved verbatim from the Apple II+ game, where all the text was all caps. Not a word, typo, punctuation or 40-character line justification has been revised.
Why would you want Time Warp in your game? Well, if it fits the aesthetic, why not? This would be a move in the tradition of Call of Duty: Black Ops, which had the whole of Zork in it as an easter egg, introduced by you interacting with an old computer in the game world. So in that case, your character was playing Zork.
I ported Time Warp to Inform 7 so I could make it an easter egg in Leadlight Gamma. I put an unlockable Apple II+ in the game's school.
Time Warp won't interfere with your game code. Just include the extension, then, at the point you want Time Warp to start, use the phrase 'run time warp'. I've put a demo online showing how you could embed it in an in-game computer prop:
wadeclarke.com/ifdemos/time_warp/
That site also has the link to the extension. You can right-click it and save as Time Warp.i7x
I'd enjoy seeing Time Warp show up as a diversion in an I7 game, or as a diversion in a bunch of games. In any case, this extension may just give you the idea for writing your own self-contained, reusable extension game. Or, if you want to write a really simple keypress CYOA by somewhat hacky means, look at the Time Warp code.
(You might be aware that I will be releasing a full-featured and non-hacky CYOA extension for Inform 7 in the not-too-distant future. The Time Warp way of doing things isn't suitable for anything robust or complex.)
Monday, 22 February 2016
Sylvia - Depression in the movies! and elsewhere
The other day I watched Christine Jeffs's 2003 film Sylvia, a biopic about poet Sylvia Plath starring Gwyneth Paltrow, for the third time in life. It's a film I like a lot and find affecting, and which I feel motivated to write about in the context of various artistic efforts seeking to convey the experience of depression, including the IF Depression Quest.
Plath took her own life in 1963. I will be talking about that, and about related and unrelated non-G-rated ideas in what follows.
Plath took her own life in 1963. I will be talking about that, and about related and unrelated non-G-rated ideas in what follows.
![]() |
| Gwyneth Paltrow as Sylvia Plath |
Monday, 15 February 2016
New beginning, new beshminning!
The game title A New Beginning indicates that there have been a series of beginnings. Or at the very least, one other beginning before this one.
What should the words 'The Final Cut' mean in a game title? I reckon something along these lines:
'This is the last and most definitive version of this game! The producers who got in the way of our vision and the cack-handed editors who failed to assemble the product correctly the first time we solid it to you have all been swept aside. At last we can present to you what we would have presented to you in the first place if it hadn't been for all these jerks and idiots. Also note that this is the last time we will be presenting this product to you, and we're doing it really definitively.'
But what do the words 'The Final Cut' mean in the pretty dumb-sounding title of the game -
A New Beginning: Final Cut ?
They mean: 'Hey. The game's on Steam now, and we got it working on Macs. Plus we added achievements and more localisation. PS The game is exactly the same as before.'
It's hardly Ridley Scott being denied final cut on Blade Runner then getting a chance to edit it how he wanted about ten years later.
In conclusion, all roads are imperfect, but some are dumb, and brainless use of terms like 'The Final Cut' and 'Director's Cut' in the process of glomming a few extra words onto the end of a game's title in order to flog it anew is part of the dumb road.
If you read this post in its day, A New Beginning: Final Cut is on sale on GOG right now
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!
INTRODUCTION
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:
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'.
OVERVIEW
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:
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.
ADVANCED CONCEPTS
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 -
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.
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!
INTRODUCTION
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'.
OVERVIEW
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:
- undoing
- mode-switching
- menu-visiting
- game-saving
- game-loading
- credits-reading
- interface-changing
- transcript-toggling
- game-restarting
- 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.
ADVANCED CONCEPTS
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 -
- before preparing
- after preparing
- before choices
- 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.
Subscribe to:
Posts (Atom)

