Thursday, July 2, 2020

Followup on Apple Arcade

Back in September I wrote up my impressions on Apple Arcade's goals and where it might settle down.
Not long after that, I fired up my free trial month on the Arcade and started poking around. Which was fun! As always, I was most interested in short narrative games and clever puzzle toys. In that line, I was happy to discover Assemble With Care, What the Golf?, Card of Darkness, Over the Alps, Where Cards Fall, Tint, Discolored, and others.
(I'll also mention Manifold Garden, Neo Cab, and Mutazione. I played those three on PC, but they also fly the Arcade banner. Platforms should be tripping over each other to fund titles like those.)
At the end of my trial month, I let Arcade lapse. No regrets, no surprise. I'm not implacably opposed to subscription entertainment packages, but I'd rather pay for my fun (and spend my free time) a la carte. So far I've stuck to that plan. Yes, I watched Game of Thrones and Star Trek Discovery a year behind everyone else. Turns out I'm okay with that.
Now Apple Arcade hates me, right? I tried but didn't buy. I'm apparently not alone, either. This article just popped up:
Apple Inc. has shifted the strategy of its Apple Arcade gaming service, canceling contracts for some games in development while seeking other titles that it believes will better retain subscribers. [...] Apple is increasingly interested in titles that will keep users hooked, so subscribers stay beyond the free trial of the service [...].
For what it's worth, this fits with what I hear on the indie grapevine. So what does it mean for Arcade?
It's clear what it means for me: Apple Arcade doesn't want me back. It's jettisoning exactly the subgenres I care about. Myst/Room-style puzzlers (Discolored) are not meant to be replayed. Short narrative games or visual novels (Over the Alps, Neo Cab) may be worth two or three sessions to try different endings, but you're not going to sink hours into them every week. Puzzle collections like Tint can offer hundreds of levels, but honestly, I'm going to put them aside after twenty or fifty. (If it has only twenty or fifty more-focused levels, then I'll get completist about it.)
I'll occasionally get hooked on a roguelike or Brough-like (Card of Darkness), but that's rare.
No complaints! I declared that I wasn't in Arcade's target market; they turned elsewhere. Fair.
But it's a blow to the premium/unique/boutique brand that they launched with. Turns out, Arcade is chasing the same addiction-loop games as everybody else in the freemium market. Their fixed monthly fee precludes the worst "buy gems for your next move" abuses, but it's still the same genre. Games must be designed to hook you and maximize playtime.
In other words, no more Neo Cab, Mutazione, or Manifold Garden. Nothing like Monument Valley, either. Too bad for Apple.
This doesn't exactly match any of the imaginary futures in my post. Oh, my #2 was close: "Apple stops pumping money, continues curating a [narrow] list of games for Arcade." But I was thinking of curated premium games. Arcade has moved out of that space entirely. The games I care about are back where they were last year: poking hopefully at the smart indie publishers (mostly Annapurna), or trying to wangle deals with the other platform holders. (Sony, Microsoft, and Epic are still funding some interesting stuff. Nintendo is... still Nintendo. The Switch isn't completely played out yet for developers, which I admit surprises me.)
Those games are also appearing in the App Store, to be clear. Back in the fall, when Arcade was still launching five titles a week, the regular App Store got seriously quiet. But it's rebounded; my sort of stuff now pops up at the usual rate. (Song of Bloom, Samsara Room, The Almost Gone, If Found...)
Is Arcade a failure? It's certainly past its season of buzz. Nobody talks about Arcade any more. It will never again be the epicenter of exciting mobile games -- not unless Apple changes course yet again.
But look. Sometimes Apple puts up an unexciting product, lets it run long after everybody has written it off, adjusts it a few times, and then announces that it's making a zillion dollars a year. "Services" is now 22% of Apple's revenue. Maybe in a couple of years, Arcade will be an unstoppable powerhouse of... games I don't play much. Or maybe it will be quietly folded up and put away. I guess I'll post again when I know.

Wednesday, May 27, 2020

NarraScope starts tomorrow

I'm sure I don't have to remind you, but the streaming of NarraScope talks begins tomorrow at noon (Eastern time) on the NarraScope Twitch channel.
At 12:00 (Eastern) on Thursday we'll have Graham Nelson speaking on the future of Inform 7. Then at 5:00 pm, Chris Klimas and Stuart Moulthrop will talk about Twine's Chapbook format.
Sorry, we know it's confusing to have two talks -- with a gap between them! -- on the day before the formal conference kickoff. Thursday was supposed to be all workshops, and then stuff changed.
So, to be clear, tune in Thursday for the presentations on Inform 7 and Twine. Then come back Friday (noon Eastern) for our official opening micro-ceremony and Xalavier Nelson Jr.'s keynote address. Then it's wall-to-wall talks from noon to 6:30 pm (Eastern), every day from Friday the 29th through Thursday the 4th. That's eight straight days of NarraScope talks.
Q&A and session discussion will happen on our Discord. Conveniently, that's also the place to ask any questions which I forgot to answer in this post.

Sunday, May 24, 2020

Subcutanean and variations thereof

I have now finished reading two of Aaron Reed's Subcutanean. This is not a game; it is a novel generated from an algorithmic framework that allows every printed copy to be a different text. Thus it partakes of some aspects of game design (procedural generation, unique reader experience) but not others (no interactivity or player agency). This is interesting!
(I've read recensions 10881 and 10966, in case you're keeping track.)
Before I go winding off down corridors of theory, I should say that Subcutanean is an excellent short horror novel. Orion (or Ryan, or Ry) lives in an amorphous post-college group house, trying to figure out his crush-or-friendship with-or-on his housemate Niko. Then the two of them discover a hidden stairway leading down into the house's basement. The house shouldn't have a basement and "amorphous" shouldn't be this literal. Doors lead out into corridors, corridors lead to more doors, a sense of unreality begins to grow. And then the two start to catch glimpses of other explorers -- people who look like alternate versions of themselves.
The world of Downstairs starts creepy and gets creepier, and it reflects the uncertainty of Orion's headspace. The social world of queer-and-out is as hard to navigate as any psychogeographic underworld; Niko is the partner Orion doesn't know how to explore with. Then it all goes wrong -- wronger -- and I'll let you find out how it wraps up. Which may not, of course, be exactly how it wrapped up for me.
When I (or Aaron) says "a novel where no two copies are the same", you might imagine two structures. Either:
  • A branching story with two or four or sixteen different outcomes. Like a classic CYOA book except that the choices have been pre-selected for you at random. Or:
  • A traditional novel with a set storyline, but a lot of incidental details chosen at random. They turned left or right, they were startled by a screech or a burst of sparks, the carpet was beige or brown.
Subcutanean is neither of those. Or rather, it has bits of both: some details are randomized, and the story has a couple of significant variations of the climactic scene. (I saw two, anyhow.) But the overall shape of the story is under fairly firm control, and the details that vary aren't always the incidental ones.
The work is more interested in how the narrator can vary. Orion may be more laconic or more voluble; he may be an optimist or a pessimist; he may prefer slang or avoid it. He may be the sort of person who gets awkwardly drunk at parties or the sort who stays awkwardly sober. These choices are maintained throughout the text. Particular events may be inserted or omitted, or key details changed; but the system tracks these so that later scenes can reflect them back. Perhaps with an added sentence, perhaps with just a well-placed "again".
Aaron has documented this design and its hiccups in a development blog -- well worth a look either before or after you read the book. No spoilers.
The goal, obviously, is to create a text that reads as a coherent narrative, with all the large-and-small-scale push-and-flow that a traditional novel would provide. It doesn't always work perfectly; I ran into an obviously repeated anecdote in version 10966. But on the whole it's successful. (Aaron has done at least one round of bug fixes since then, so the problem I found may have been eradicated from future versions.)
I have to admit my bias here: I have a lifelong obsession with the Unbounded House of Many Doors. If you've played any amount of my work you realize this! Subcutanean is exactly what I want, except with an accelerating curve of wrongness and decay, which is not where I usually take it. Also, of course, the ramifying underground space calls back to a long history of much-loved games, from Wumpus and Adventure through to KR0 and the future.
As I said, the book shares some aspects of game design in a non-interactive context. Really, most narrative games have pieces that work like Subcutanean. A single NPC response is a non-interactive text -- a sentence or paragraph -- whose content varies depending on the prior history of your session. It's easy to focus on your immediate interactive choices: choose a dialogue option, get a response. But really, that response could be influenced by lots of factors, overt or invisible, random or contingent.
Subcutanean is that experience with the "invisible" and "random" knobs turned up and scaled to novel-length. You never make a choice; the text is printed and fixed. But then, in Heaven's Vault, not much of the narrative variation depends on choices you know you're making. And of course the book involves all the game-design problems of keeping a variable narrative experience within the intended bounds.
Subcutanean also produces that quintessentially game-ish response which I mentioned in my Heaven's Vault post. When you finish, you immediately want to start again and see how different it could have been. "I've seen the covers, now I can open the book." Happily (though also through necessity), the book is short enough to do this without feeling bogged down. Maybe I'll read a third copy pretty soon.
We are left with the question of whether Subcutanean is the only procgen novel that could be written. Sometimes an experimental narrative so perfectly marries form and content that it's hard to imagine what else could be done with the idea. The Monster at the End of This Book, for example. Or take Jason Shiga's Meanwhile. If you're going to iterate through variations of a narrative, learning more each time, you almost need time machines, memory loops, and the threat of total narrative collapse. (Outer Wilds is an interesting comparison here -- a very different story which is nonetheless drawn into many of the same tropes.)
So if you're going to write about variations of a narrator, do you need to set it in an infinite branching space with the growing threat of utter alienation? Surely not, but some of the choices do feel kind of inevitable.
Others were unexpected. Subcutanean plays with the idea of playing by its own rules. You want to believe that every version of the book is narrated by an Orion, one of the infinite number exploring the interconnected Downstairs. If I were writing such a story, that's absolutely what I'd do! But Aaron's book doesn't. Or maybe some subset of the texts do, but not the two I read: the rules of Downstairs aren't quite consistent between them. It's upsetting.
But then, it's horror. Your certainties are supposed to come unmoored.
It doesn't have to be horror. I hope more authors take on this sort of structure. Subcutanean doesn't have to be the only one. Narrative design is no longer an abstruse mysterious field; lots of writers have dabbled in both static and dynamic prose. I'd like to see the variation-novel become an established form. Get on it, folks.

Friday, May 22, 2020

Compiling for the Z-machine version 3

The Inform 6 compiler has been pretty stable for the past several years. It's still in active use as part of the Inform 7 toolset, but the I6 compiler hasn't changed much.
However, I've put in a few I6 updates over the past week. Exciting news? Maybe not for most of us, but these changes are important to people who are trying to write really old-fashioned Inform games.
Let me go back to the old days. (Jangly harp transition...) In 1979, when Infocom ported Zork to personal computers, they designed the famous Z-machine platform. It went through a couple of iterations, but by 1982 the "version 3" Z-machine was firmly established as Infocom's workhorse.
The V3 machine was tightly constrained in some ways. For example, it could only support 255 objects (counting rooms, items, scenery, NPCs, and the player!) But this was deliberate; it was intended to run on some really tiny computers like the TRS-80 and Commodore 64.
Infocom games got larger and more sophisticated, but they kept on stuffing them into V3. The Zork trilogy, Enchanter trilogy, Hitchhiker's, Planetfall... it wasn't until AMFV in 1985 that they had to design a V4 Z-machine. And even then they kept using V3 for any game that fit.
Mind you, the Infocom people didn't say "V3" and "V4" back in the day. They referred to V3 as "ZIP". V4 was "EZIP", for "Extended ZIP". Then "XZIP" (V5) came along in 1987, and "YZIP" (V6) in 1989. These updates allowed more objects and more content. They also added a parade of new features: bold/italic text, expanded status window, sound, timed input, and finally graphics.
But this only underlines that V3 was Infocom's standard technology. You used V3 unless you had some specific need for one of the larger, fancier platforms.

Jump forward (jangle jingle) to the "modern" era of 1993. The Z-machine has been reverse-engineered; we have open-source interpreters that support all versions. Graham Nelson releases Inform, a compiler which can generate Z-machine game files.
Inform let you write games for any version, but in practice, your choice was between V3 and V5. (V1/2 were too antiquated to bother with. V6 was a headache for reasons I won't get into here. And V4 was like V5 minus a few features; if your game outgrew V3, you might as well go straight to V5.)
But among Inform users, unlike Infocom, it was V5 that emerged as the "standard platform". If you look at the games/zcode directory on the IF Archive, there are over 300 .z5 games and just five .z3 games!
The reasons are obvious. Everybody had modern Mac/PC machines which could run the largest Z-code games with ease. Authors felt free to put more scenery, more detail, more responses into their games. In that atmosphere, the V3 limit of 255 objects really pinched. And the other V5 features were nice to have around. Most games didn't need sound or timed input, but bold and italic text always look good. Why not build your game on V5 and have all the amenities available, just in case?
(Then, in 1995, Graham Nelson's Jigsaw overflowed V5 and he had to invent V7 and V8 in a hurry. But never mind that.)
So Inform's V3 compiler code was barely ever tested after the mid-90s. And we know what happens to untested code: it breaks. A couple of bugs crept in and nobody noticed.
That is, not until 2020 (jingle bloop). A couple of projects are now working on Z-machine tools for retro machines. MetroCenter '84 and PunyInform are Inform libraries optimized for size; Ozmoo and Pitch Dark are Z-machine interpreters which run on the C-64 and Apple 2.
Running on that classic metal means embracing all the memory limitations which we forgot about in the 90s. Every object and every byte counts. V3 is once again the order of the day. And presto -- the bug reports started rolling in.
Okay, only two bug reports. The fixes were a couple of lines each. Now Inform 6 can compile V3 games again!
While I was in there, I added a feature which could be of additional help. I6 games can now contain "static arrays", whose data goes into ROM rather than RAM. (Yeah, the Z-machine has ROM and RAM. I'm simplifying a bit but that's the idea.)
Static arrays may not be a lot of help. I first considered this idea when I was working on Hadean Lands -- a game which was originally planned for the "limited hardware" of the iPhone. (This was back when mobile phones didn't have gigabytes of memory.) I knew HL's alchemy system would require a lot of data and I thought that putting it into ROM might be worthwhile. But, long story short, it turned out not to be. So I didn't do it. Until now.
(Before you ask: yes, Hadean Lands is written in Inform 7, and it uses the Glulx VM rather than the Z-machine. The I6 compiler is still part of the toolchain and the concept of static arrays applies equally well to Glulx ROM and RAM.)
So there's your history lesson of the week. I could have tweeted "Inform 6 bugs fixed", but this is more fun to read, I hope.

Tuesday, April 28, 2020

Historical rediscovery: Zarf's Old Time Religion search

Aaron Reed posted a request this morning, asking for examples of web-native text-based IF from the earlier days of the Internet. ("Before Twine", basically.)
He got a bunch of good answers. I'll pick out Kingdom of Loathing, Planetarium, the Eastgate catalog, and a half-serious mention of the Internet Oracle -- just to have something to link to. Read the Twitter thread for more. Feel free to throw in more.
One of the games suggested -- not by me! -- was my Praser 5 puzzle game. And this leads me down a bit of a rabbit-hole.
It's true that Praser 5 isn't exactly web-native. It was originally a bunch of files and directories living in a shared Unix filesystem at CMU. You'd look around by typing ls; the room description was just a blank file with a long name! The room showed you puzzles, and you could enter answers by running a program which lived in that directory. If you answered correctly, the program would notify me and I'd add you to the access list for the next directory. Yes, manually. It was just my friends at CMU.
This was a great solution for an "online" puzzle game in 1989. But a few years later, of course, we had the Web. So in early 1994, I reimplemented the whole thing as a web app. It was 2000 lines of C code (K&R, not ANSI!) and I ran it off my office machine at CMU. (I'd graduated and gotten a staff job at a CMU software project by then.) In 2005 I ported Praser 5 to Inform and made it available on my web site as a Java applet; in 2010 I updated that to use Parchment. So that's a potted history of P5 and its many lives on and off the Web.
But what does this have to do with religion? I hear you ask. Well, in that 1994-1995 period, I had other ideas for web apps. For example, some friends and I put together the first Internet Easter Egg Hunt. I only had one office machine, so the easiest way for me to add a new app was to recompile the P5 web server with some added functionality.
So, when P5 came up in discussion today, I peeked into my old source archive and saw a bunch of files. Hey, it's egg.c! That was where I implemented the Easter Egg Hunt! Wait, what's this file lyrics.Z?
I popped it up, just like you just did when you saw the hyperlink. And what is it? Six hundred verses of a filk song called "Gimme That Old Time Religion". Wikipedia says that it was popularized outside the SF/Usenet/Pagan world by Pete Seeger and Arlo Guthrie. I had forgotten that, but I must have heard their version on the radio growing up. (Mary Cliff's folk music program on WETA, every Saturday.)
Usenet and the early-Internet FTP sites carried lots of versions of the song. I downloaded all the ones I could find. My original site includes this credit:
Particular thanks to Ioseph of Locksley [...] for his immense collection of verses.
(Ioseph of Locksley was the SCA name of Joe Bethancourt. Bethancourt's web site claimed to have over 1000 OTR verses when last it was active. Obviously he kept on collecting 'em long after my project.)
But my web app wasn't just a page containing the lyrics. (75 kilobytes of text on a single web page? Probably would have crashed Netscape.) It was a search app. Honest-to-, er, honest real live case-insensitive keyword search. Not efficiently implemented by any means -- I'm cringing as I re-read this code. But it let you type the name of a deity or religion and get back a list of every verse which mentioned it. As you see, I even supported synonyms (search terms in {braces}) and "see also" links.
I implemented limits to prevent people from searching "a" and getting back the entire database. It would have crushed my server.
Today, of course, 75 kilobytes isn't even a sneeze. So browse all you like. The text-search facility in your browser is far better than anything I made available.
The original site also included this line:
Disclaimer: If you are offended by this page, don't read it.
"Political correctness" hadn't been trademarked by neo-Nazis back then, but it is true that the collection mentions a very great number of religions and deities with very little respect. Not to mention a lot of shallow offhand stereotypes and slurs. Back then, my attitude was "It's the Internet -- grow up." Well, I was young.
Now, of course, my attitude is "This is a historical artifact which was last updated in 1995, including chunks that go back to the 1970s. So, um, it is what it is."
I must say that the cross-section of cultural references is fascinating. Obviously a lot of the verses came straight from practictioners of off-beat religions. You can practically hear them singing "We're here, we're Pagan, get used to it." Quite a bit of deep-cut Pagan-community politics, too. And a lot of mockery of the televangelists of the era. Then you get into the sci-fi and fantasy in-jokes, and, well, it goes on for a while. In alphabetical order. (I can't remember if that part was my doing.)
Like I said, quite a historical rabbit-hole. Again, see Joe Bethancourt's Real OTR page for more on the history of this thing.
There is no verse about Zarf. Sorry.

Wednesday, April 15, 2020

Myst TV tidbit: A writer signs on

Here's the first sign of real progress since last June, when Cyan announced their new TV partnership with Village Roadshow.
The television adaptation of classic video game Myst has moved forward a level after X-Men: First Class writer Ashley Edward Miller signed on to the Village Roadshow Entertainment Group project. [...] Miller, who has also written and produced series including Terminator: The Sarah Connor Chronicles, Black Sails and Lore, will write the pilot and showrun the adaptation.
That's the entire story. To be clear, there is still no show in production. Writing a script is easy. Cyan has already written several.
Getting a TV-famous person on board to write your script, with the intent of being a showrunner, is more exciting, but there's nothing yet to showrun. It's still all just good intentions.
(I feel like I have to say this because Myst fans can be really enthusiastic about scraps of news. I try to be the voice of reality. Sorry folks.)
For what it's worth, I thought the Terminator TV show was terrific. I wish it had lasted more than two seasons. If the writer does half as well with the Myst franchise, this take on the saga will be worthwhile.

Sunday, March 22, 2020

Plague and the stories we tell

These days are strange territory. I keep looking for ways to understand it all. (Yes, to distract myself. I can't look straight at the news, but I can't look away either.)
I realized why it feels so strange. In this plague, if you catch it, other people die.
I'm middle-aged but healthy. COVID-19 probably won't kill me. It likely won't kill any of my friends. (My father lives in a different state. Let's not talk about your mother.) If we were all unaware, I'd be one of the people shopping as usual, gaming with my group, coughing a bit, and spreading the bug everywhere.
And we'd mostly be fine. Down with a nasty bug for a couple of weeks, but then fine. Except, also, millions of people would die. If everyone like me gets it, then everybody gets it, and 1% of everybody is a lot of people.
We don't have this story. We don't have a way to understand it. Or, we do, but it's called "mathematics" and people suck at it.
I grew up in the 80s. The science fiction of my time spoke of plague; the plague was AIDS. The moral of AIDS was simple. Do the wrong thing, and you die. Sin equals contamination equals death.
(Let me be clear: I'm not talking about AIDS or HIV in the real world. I'm talking about the stories we told each other about it. Even the queer authors, even the sympathetic stories. You might not have sinned, but you were still a person who Did It Wrong and there was no coming back.)
Of course the stories pulled in many directions. Greyscale; the Descolada; MutAIDS. In the computer age, the plague became an information virus: Vinge's Blight, Barnes's One True. Put a seductive smile on the infection and you get vampires and werewolves. But it is still a story about the unforgiveable act.
There were plague stories before AIDS. We remember the Plague, the Black Death, although we like to remember it safely in the past. (Its moral was even simpler: God is angry and everybody dies.) We have stories of measles, whooping cough, polio. You got them or you didn't, and then you got better or you died -- or you grew up sickly or paralyzed. Meningitis, rather than scarlet fever, probably struck Mary Ingalls blind, but it wasn't a punishment. Life was just like that.
Salk and Fleming changed life. Then AIDS changed it again, practically overnight. We grew up with the new plague and its inescapable moral. The treatments slowly caught up, but I think the language -- your choice, your consequence -- has remained pervasive.
But now the coronavirus. You get better (probably) and other people die.
(Even as I write this, the news shifts. The CDC says the young are at higher risk of hospitalization than we initially thought. Widespread testing in Iceland shows that half the infected never show symptoms at all. Even if you do the math, you're working off of fragmentary evidence.)
The sin is collective. The punishment is statistical. Your restaurant table (bar, game night, ...) is probably clean -- but the germ is on someone's table (doorknob, gas pump handle, ...). If everyone stays in, the risk is contained. If everybody goes out, the risk is 100%. The Prisoner's Dilemma and Kant's Categorical Imperative have ridden out of game theory papers and bestride the land on their pale horses.
We're trying to grapple with a world where the moral consequences are entirely collective. The language of AIDS -- that most personal of viruses -- is inadequate. "My ass, my decision, my risk" doesn't work any more. It's everyone's ass together. We're gonna need a bigger story.

If there is a bright spot -- a less-dark spot -- it is that we'll be able to compare stories. The virus is spreading across the world, but the distribution is so wildly uneven. The US has hot spots... some of which we know about. Others will become visible once serious testing gets underway. But it will be very clear which cities have their hospitals swamped and which don't (yet). We may even be able to tell stories about where an outbreak started. (Here in Boston, we say "Biogen conference" like Calvinists say "original sin". But it could have been PAX East, a day later and 100 times as many people...)
I have no pat ending to that thought. Watch the news, as best you can. Deny the liars and the self-deluders. Talk to people about what we're doing. Take walks -- being outdoors isn't inherently dangerous. Hug the people you live with.
Best wishes.