Friday, December 18, 2020

Twitter makes it harder to read tweets

Yesterday I touched off a teacup-storm when I tweeted:
Twitter cut off the ability to read a tweet by fetching its URL with a normal HTTP GET. You need Javascript or an authenticated API call.
I know most people don't care. It's normal web browsing, with all the data-hoovering we've come to expect.
Just want to say that it matters.
Quite a few people started discussing this, and it wound up on this HackerNews thread.

What's going on here?

The problem here might not be clear. After all, if you click my tweet link in a regular web browser, you'll see the tweet and its replies, right?
"Twitter cut off the ability to read a tweet by fetching its URL with a normal HTTP GET. You need Javascript or an authenticated API call."
That's because a regular web browser supports Javascript, cookies, and everything else that's been thrown into the Web over the years. When you browse like this, Twitter can cookie-track you (notice that I'm using Safari's Private Browsing feature). They can nag you to log in. They can show you ads. All the usual stuff.
If you try turning off Javascript, you see this:
"JavaScript is not available."

(This is iCab, a third-party browser with some nice features. Twitter supports iCab just fine if JS is turned on.)
But let's reduce the situation to bare essentials: a raw HTTP GET request using curl.
curl -v https://twitter.com/zarfeblong/status/1339742840142872577
HTTP/2 400
This browser is no longer supported.
Please switch to a supported browser to continue using twitter.com. You can see a list of supported browsers in our Help Center.
I've elided most of the headers, but that's an HTTP "400: Bad Request" error response.
In the past, all of these requests would work; you could read a tweet this way. Twitter added warnings a while back ("Do you want the mobile site?") but you could get through if you wanted.
However, a few weeks ago, Twitter added a warning saying that on Dec 15th, they would remove support for legacy browsers. That's what changed this week. I didn't catch the exact time, but on Dec 15th, they started returning this error page which includes no information about the tweet.

What problems does this cause?

I admit up front that my browsing setup is weird. My default browser has JS turned off; it has a strict cookie expiration limit. This is hardcore privacy mode and most people don't do it. Lots of web pages work badly for me. But most of the web works at least a little bit -- when I go to a web page, I can usually see what's there.
(Of course, if I want to buy something or edit a Google doc, I need to switch modes. I use four different browsers and about six or seven different profiles with different levels of privacy protection. I told you it was weird.)
The point is, I am willing to trade off convenience for privacy. But as of Dec 15th, when I go to a Twitter URL, I see nothing. The tradeoff just got a little worse.
This isn't about me, though. From followup discussion:
  • My friend Jmac is working on a tool which displays chat from several sources, including Twitter, in a single window. Twitter broke it.
  • Keybase is an open platform which supports personal end-to-end encryption. It uses Twitter as one (of several) means of identity verification. Twitter broke that.
  • Someone in the HN thread mentioned a script they use to check for broken links on their web site. Twitter broke that (for links to tweets).
  • I've heard that previews of tweets on other chat/discussion platforms has also broken. (Not sure which ones, though.)
To be more ideological about it (yes I will), Twitter is asserting that people reading tweets is not their priority. Twitter is not about people communicating. They'll block communication if it pushes up their corporate numbers.
This was my summary from last night (slightly edited for clarity):
The point of the web is that a public URL refers to information. You can GET it. There may be all sorts of elaboration and metadata and extra services, but that HTTP GET always works.
Tools rely on this. Blogs pull previews via HTTP. RSS readers collect and collate posts. People peek pages using fast or low-bandwidth tools. It's not part of any company's value proposition or stock price; it just works. Until somebody breaks it.
The error message that appears now when I do this on Twitter (and the warning that popped up a few weeks ago) says that Twitter is dropping support for legacy browsers. But you support legacy browsers with an HTTP reply that contains the tweet text. That's all.
The only reason not to do this is that someone at Twitter said, "Why are we letting people just read tweets? That doesn't benefit us. They need The Full Twitter Experience." Which boils down to selling ads.
Yes, I could be using the API in various ways without directly hooking into the ad firehose. But then at least [Twitter] controls the experience -- [they] give out the API keys, [they] can decide to cut people off or otherwise control what's going on.
If I can just read a public tweet the same way every other web document works, then I can make the experience work how I want; I can have the conversation on my own terms and in my own framework.
To Twitter, this is anathema. So Twitter cut it off.
That's all. That's where we are. I don't expect different because Twitter is an ad company. I expect other changes in the future which will make Twitter even less hospitable to me. Maybe next week [or] maybe in ten years -- I'll find out when it happens.

Alternatives and workarounds

Of course there are many.

Twitter's public API

Twitter supports a web API. You can use it from any language you like (Perl, Python, whatever). In fact you can use it with curl or wget if you enjoy web plumbing.
As is usual for big web APIs, you have to register as an app developer and request an access key. This is free, but it puts the process under Twitter's control. In theory they can revoke your access if they think you're a baddie.
Also, the API has rate limits. This isn't a shock; every web service has some kind of rate limit, even if it's just Cloudflare or your ISP cutting you off. But Twitter has made it clear that they limit use of the API to make sure that third-party clients never get too popular. They don't exactly want to squash third-party clients, but they see them as a threat to be contained.
(See this 2012 blog post -- particularly the bit about "if you need a large amount of user tokens". I wrote more about this in 2018, when Twitter deprecated some functionality from their API.)

Nitter.net

Several people referred me to Nitter.net, an alternative Twitter front-end which doesn't require Javascript. Pretty much aimed at people like me! You can substitute Nitter in any public tweet URL and get a URL that works in all the ways we've been talking about. For example, https://nitter.net/zarfeblong/status/1339742840142872577:
curl -v https://nitter.net/zarfeblong/status/1339742840142872577
This downloads an HTML document which contains my original text, and all the replies. You can also visit https://nitter.net/zarfeblong to see my Twitter profile, except there's no ads, no promoted crap, and it loads fine (and fast!) without Javascript.
I'm sure that Nitter uses Twitter's API, mind you. It is, de facto, a third-party Twitter client. Which means that -- again, in theory -- Twitter could just cut it off. I don't know whether they're likely to. At any rate, at present, Nitter is a useful interface.

Faking your User-Agent

Turns out that if you're Google, you can GET tweets all you like! And pretending to be Google is pretty easy.
curl -v -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://google.com/bot.html)" https://twitter.com/zarfeblong/status/1339742840142872577
This sends Google's User-Agent string (instead of the standard curl string). Twitter happily sends back the same web page I was getting before Dec 15th.
Now, this web page asks me to turn on Javascript. But the text of my tweet is in there (along with people's replies in the thread). You can extract the text by looking for og:description, which is the standard web preview metadata.
Is this a viable workaround? It certainly works. But it's a hack. Twitter's policy is that I should not be allowed to get this page. Only Google can, because Google is king. I'm a peon. Their enforcement of this policy is crude and easy to cheat -- but that's a bug. Maybe they'll fix the bug. Maybe it's not important enough to fix. Again, I don't know.
It's also worth noting that the page you get this way is 586 kb. The Nitter.net equivalent is 28 kb. Twitter has piled a lot of junk into their UI.

So now what?

Honestly I haven't decided. I think I'm going to set up my default browser to redirect twitter.com URLs to nitter.net. That will take care of most of my day-to-day needs.
(I do use Twitter clients, by the way. Tweetbot on Mac, Echofon on iOS. But I try to use them in a mindful way. I don't want them to pop up just because I clicked somewhere.)
Mostly, this is an opportunity to look clearly at Twitter and remember that it does not love us. It's a commercial social network; we are its fuel and in its fire we shall burn. I use Twitter, but -- as with the web in general -- I want to remain aware of the tradeoffs.
For what it's worth, Mastodon never got traction for me. Sorry. My private social circles are now on Slack and Discord. Slack just got bought. Maybe it'll be okay. Discord's heel-turn is still in the unclear future. I don't know. We have to stay flexible.
So, you know... the usual story. Enjoy your holidays. Stay home and videochat. Play some games.

Tuesday, December 8, 2020

Reading Myst for detail

The VR remake of Myst is due out for Oculus Quest on the 10th. I will not be playing it this week because I'm not into VR or Facebook. The updated Myst will be released for other VR platforms and flatscreen PCs in 2021 -- I believe they said "early 2021" -- and I am happily anticipating that. The screenshots look amazing.
(Cyan has walked a painful line insisting that this is not a "Quest exclusive" release. It's just a game that releases on Quest this week, and other platforms at an unannounced future date. My personal theory is that Facebook walked into Cyan's office with a bucket of money and said "Make Myst VR a Quest exclusive!", and Cyan said "Oh, no, we really can't do that," and then there was a lot of pacing and gesticulating, and they wound up with this handwavy compromise where the PC version ships a couple of months later and nobody calls it a Quest exclusive. This is only a theory.)
Anyway, I thought it would be fun to go back and look at how little we know about the Myst story!
The original game does an incredible job of painting a complex story of betrayal with just a few brushstrokes of narration. But it's surprisingly hard to pin down exactly what happened. We know that Atrus trapped his sons in the red and blue books, and the boys trapped Atrus in D'ni... hang on, how did that work? Who was trapped first?
Here, try this puzzle. You've played Myst. Using only your knowledge of the original game, put these events in chronological order:
  • (A) Atrus creates the red and blue trap books.
  • (B) Atrus goes to D'ni and is trapped.
  • (C) Atrus moves four linking books from the library to the protected places on Myst.
  • (D) Atrus records a message to Catherine in the Forechamber imager.
  • (E) Atrus tears pages from the red and blue books and scatters them.
  • (F) Sirrus and Achenar burn the library on Myst.
  • (G) Sirrus and Achenar do something ("used Catherine") to trick Atrus into going to D'ni.
  • (H) Sirrus and Achenar enter the red and blue books and are trapped.
  • (I) Sirrus and Achenar tear one page from Atrus's Myst linking book.
(I've put these in alphabetical order to avoid giving hints!)

Spoilers farther down the post. While you think about it, I'll mention some other recent Cyan news...

A month ago Cyan released a photo-sharing iPhone app called Crowbox. No, it's not a game; it really is a photo-sharing app. It uses peer-to-peer networking. You browse through your photos on your phone, select one, and everybody else standing near you can see it pop up on their phone. That's the whole gimmick. It's free, no ads, with a paid DLC option for extra features (more shareable albums).
Cyan teased this idea last year at Mysterium. Now they're pushing it as ideal for pandemic times -- you can show people your photo album while standing six feet away from them. (Outdoors, preferably, but you know this.)
They also posted an in-character Atrus journal touting the idea, in case you like your marketing ARG-style.

If you're into merch, Cyan has put new mugs, shirt, posters, and other stuff on their company store page. Some of this has art from the upcoming Myst; some spotlights fan artist Lauren Herda. I snagged a couple of mousepads, which are now sold out, ha ha.

Tuesday, December 1, 2020

The loss of Arecibo Observatory

We learned this morning that the Arecibo radio telescope has collapsed entirely. (Announcement; news story.) The hanging instrument platform broke loose and smashed into the dish below. No one was injured.
There are some preliminary photos of the wreckage on Twitter. I'm sure there will be more later. I won't link them. Here is a photo I took in March of 2019, when the observatory was fully operational:

Arecibo Observatory, March 2019

This is an ignominious end, but we knew it was coming. The first cable failed in August; more failed in November. On November 19th, engineers declared that the damage could not safely be repaired and the telescope would have to be decommissioned. We hoped for a controlled disassembly, but cables continued to unravel progressively, and this morning it all went.
So this hurts, but I did my grieving two weeks ago. Here is the twitter thread I wrote on the 19th:
Of all the terrible news this year, I am unexpectely wrecked by the decommissioning of the Arecibo radio telescope.
I saw the report of the first cable failure in August, but not the second, worse cable failure in November. It's bad and engineering assessments say it can't be safely repaired.
(Don't "what if" this. We believe that engineers know their shit.)
When I was in elementary school, I read Danny Dunn and the Voice from Space (Williams and Abrashkin). The book was written in 1967, a few years after Arecibo was completed. It was about a kid decoding messages from aliens. I loved everything about that.
The book's radio telescope was fictional ("Grendel Observatory" in England, thank you easily accessible ebooks) but it must have been inspired by the excitement around the brand-new world's-largest radio telescope in Puerto Rico.
I was so excited about SPAAACE that I started drawing a tiny radio telescope on things as my personal logo.
I did not wind up becoming an astronaut. But, for a while, I was "radiotelescope" on livejournal. I still have radiotelescope.dreamwidth.org, although I don't post there.

Hadean Lands source code book (a limited kickstarter reward) with radiotelescope logo

I still sometimes stick that radio telescope logo onto something, just for old time's sake. And SPAAAAACE.

Me visiting Arecibo

Here's me visiting that, early 2019. Like I said, one of the wonders of modern human civilization. We suck in a lot of ways but we build literal, monumental cathedrals to Science. Working Science.
The news stories say the observatory will still exist in some form, and maybe a new instrument can be built. I hope so. Every other headline this week [of Nov 19th] is about the absolute rage and contempt that's arisen against knowledge, science, and cooperative effort.
Sorry. This was supposed to be a positive thread. I want to be hopeful, but the future is hard these days and I'm scared for a lot more than astronomy.
Stop the fascists.
Apologies (again) for getting dark at the end. It's two weeks later now. The US fascist movement has lost its immediate hope of seizing power. (Don't ask me about 2022.) COVID vaccines are in production. We might still build a new telescope at Arecibo. It seems like a distant hope; we're still reaching towards the possibility of funding the Post Office. But we don't have to give up yet.
Civilization is a group effort. Stand in support of all of us.

Tuesday, November 24, 2020

Puzzle games of the year: my favorites

Yesterday I tossed up fifteen short takes on puzzle games I've played this year. Today, longer comments on the two puzzle games that most impressed me in 2020:
  • Filament
  • A Monster's Expedition

Filament

A top-down puzzle game where you wrap cables around posts. I really liked this one. The basic mechanic spins off into dozens of variations: forbidden posts, ordered posts, colored posts, gate-opening posts, pairs of posts... it goes on.
By itself that would be a perfectly fine game. But it's also embedded in an explorable environment full of secrets. I love secrets! It's a big abandoned spaceship where the computer terminals are controlled by, guess what, wire-wrapping puzzles. Terminal-activation codes are hidden all over the place. It sounds silly, but the technology makes sense in a weirdly retro-future way.
(Bonus points for the abandoned spaceship which is full of daylight and bright colors and yet, somehow, still creepily haunted.)
I could quibble about the environmental storytelling. It's mostly conveyed through punchcards containing the crew's email and log entries. That's fine, but (a) you wind up reading each email at least twice -- once on the sender's card and once on the receipient's. More for group messages. And (b) you get a card every time a new set of puzzles opens up. By the time you reach the hard sets, you've seen all of the rooms and most of the emails; there's relatively little left to unlock. (And (c) the emails feel a bit tacked on to begin with.)
In other words, the back half of the game does a crap job of rewarding you with narrative. Your reward for solving puzzles is just harder puzzles. Yes, it's a puzzle game, but it has story elements and they could have paced them better.
As I said, quibbling. The actual endgame is an (enormous, mind-expanding...) new room filled with puzzles that combine variations from earlier in the game. (Much like Sensorium!) Plus a few new ideas. You want puzzles? This game has enough puzzles for you.
I will admit that I looked at walkthroughs for some of the tough ones. It was... possibly too many puzzles in some of the sets. And the epilogue scene doesn't exactly make sense that I can tell. Nonetheless, I highly recommend it.

A Monster's Expedition

Okay, look. Last year I went apeshit about Baba Is You. Puzzle game of the year, of the decade, I told everybody who would listen that Baba would be known as a landmark of puzzle design for generations.
(Of course you don't need me to tell you that. Baba has a slew of awards and accolades to its name.)
So listen: A Monster's Expedition (Through Puzzling Exhibitions) is going to be a landmark of puzzle design for generations. In a completely different way! AME isn't a continual explosion of semiotic fireworks. It isn't an unending landslide of new puzzle-pieces that rewrite the rules of the universe.
AME, let's be clear, is about chopping down trees and pushing logs. There are also rocks. It's a block-pushing game. Except that the blocks are cylinders, so they roll if you push them sideways. You can push a log into the water to reach the next island. That's the whole game.
What AME does is take these simple elements and unfold them into a rising symphony of new possibilities. And it does this so smoothly, with such unerring craft, that every time you say "Wait. You can do that?"
To be clear, each new possibility always existed. It just never came up before because the level design didn't lead to any position where it happened. So you didn't notice. But then it's time for you to notice, and it's right there in front of you. Over and over, you gain mastery over the elements -- the logs and rocks -- and are then presented with a new way to combine them that you didn't even realize you could have tried. And then you reach the next set of levels, and it happens some more.
In Baba, in practically every puzzle game, these new possibilities are new game elements which are introduced at specific points. Here's a teleporter. Here's a bomb. Here's the word "LEVEL". Now solve some teleporter levels or bomb levels or LEVEL levels.
AME doesn't do that. It introduces... I think two new elements. Here, I'll spoil it (without spoiling the game at all): AME starts with trees and rocks. Later it introduces taller trees (two-space logs) and shorter rocks. That's it. But these are woven into probably a dozen unique mechanics, introduced sequentially in different groups of islands. Maybe more. I didn't count.
And I'm not even getting into the way islands are connected, such that you travel from one to the next on paths that are entirely emergent and yet take you exactly where the designer wants you to go. Or the way you don't get stuck, even though the island-reset button is not inherently safe. (You can imagine situations where resetting one of a pair of islands leaves you stranded on a beach. It just never happens because the designer was careful.)
(Okay, I got stranded once. I think three islands were involved. It took effort. The game keeps multiple autosaves so I was able to recover easily.)
Also, to be clear, the puzzles are sneaky and clever and challenging and never quite impossible. Difficult, yes. I'm sure plenty of people will try the game, solve a lot of islands, bog down, and never reach the formal "you won" point. That's fine. It's still worth playing.
(This is why Baba had a "midpoint" goal -- a satisfying ending for people who are not completist puzzle fiends. AME doesn't have anything like that, and maybe it should.)
(I have not said anything about the narrative, because there basically isn't one. There's a series of funny one-line takes on modern life. It's pleasant but not a big feature of the game. I always appreciate a narrative frame -- I did in Filament -- but hey, not all games. What AME does have is a consistent tone: inviting, peaceable, unhurried, generous.)
So: AME is not splashy. It's a deft, quiet, intensely thoughtful exploration of a simple idea. Its craft is so understated that it's easy to overlook it entirely. (Compare my comments on the narrative flexibility of Heaven's Vault.)
Do not overlook it. Think about systems so dense that you don't have to introduce bombs and teleporters to change them up. Think about ways to put players in the line of discovering a new thing, and ways to have that line not open up until the time is right. Think about arrangements where the player's only option is to try something wacky; think about delightful, revelatory reactions to that wacky act.
Also, play A Monster's Expedition.

Monday, November 23, 2020

A shut-in-year's worth of puzzle games

I've been playing more games than usual -- guess why! -- but writing less about them. Furthermore, my habitual January review-blast is going to be delayed this year. The January reviews stem from IGF judging, and IGF runs at GDC, and GDC is officially "delayed until July".
(Conferences in July sound optimistic as hell, even with the recent good vaccine news. But leave that aside.)
The point is: I have been leaving you, gentle reader, in a haze of undirected game-floundering. How will you know what puzzle games are interesting without my anodyne guidance? Unless you look at the entire rest of the flippin' Internet. Okay, fine. But here's my round-up post on puzzly games, regardless.
...But not all of them. Tune in tomorrow for my top-recommended puzzle games of 2020! (So far.) Today is a lot of short takes. In this post:
  • The Pedestrian
  • Lumote
  • Etherborn
  • Arise: A Simple Story
  • Lightmatter
  • Lumina
  • Weakless
  • Phantom Path
  • Creaks
  • Relicta
  • Sensorium
  • Zof
  • Carto
  • Timelie
  • Ethereal

Wednesday, September 30, 2020

Tour Bibliotekh

Today is the (revised) launch day for "If on a summer’s night a game designer...", the Calvino game jam. My entry is called Tour Bibliotekh.
("But what is the entry's name?" Shush.)
It's a rather self-indulgent piece which is set (I am dead serious) in my apartment! Specifically in my library room. I finally set up all my bookshelves the way I wanted, and then I wanted to show them off. So I took some (360ยบ) photos. Then I remembered about the Calvino jam, and realized this would be an apropos setting.
I should say that this isn't a game in the way you might expect. It's not a puzzle and there is no "winning". It's a walking simulator; or, I suppose, a browsing simulator. Poke around and see what you find.
I'll tease one bit: connect things up right and you'll find my secret history of why the Charleston Shoe Thieves are called the "Shoe Thieves". No, I'm not a serious blaseball fan, but I see enough chatter about it to keep current. And the wiki explanation of the team name really didn't satisfy me at all. Maybe you'll like this one better.

Wednesday, September 23, 2020

Boosting some current Kickstarters

I promised to have my Calvino game jam entry up yesterday. But if you look at the jam page, you'll see that the deadline -- and therefore the release date -- has been extended to Sept 30. I like the idea of kicking another week's worth of stuff into it, so you get to wait a bit longer for that.
In the meantime, let me mention some Kickstarters that I think deserve some love.

Club Drosselmeyer is an interactive theater / puzzle / music / circus-arts event which has played for the last few years in the Boston area. I went last year for the first time and had a blast.
The theme is The Nutcracker, only it's gonzo-WW2 swingtime era, so the Nutcracker is a dancing robot and there are Nazi spies creeping around stealing blueprints. Also, live music and acrobatics! The live show was a smart construction. You could go for the puzzles, the LARP-style interactions with characters, or just to cut it up on the dance floor.
This is not the year for live theater, so the Drosselmeyer crew has planned out an interactive radio show. Again, you can go for the puzzles or just listen in on the audio broadcast. If you want to get involved, there will be some kind of call-in system -- audience interactions will shape the direction of the night's show. But you can also play on your own schedule; the event will remain playable as an interactive web site.
Note that if you have a group that wants to play as a team, you can share one Kickstarter registration. The registration only lets one phone call in, but you can set up a Zoom chat or whatever you want for audio sharing.
Drosselmeyer has been a treasure of the Boston theater-game scene since it opened in 2016. This is your chance to check it out from anywhere in the world -- well, anywhere that can make phone calls to the US. The Kickstarter has been stuck at 40% for a few weeks now and it deserves better.
Bonus: here's me looking somewhat suffused in my 1940s getup for the show. Yes, in the bathroom, that's where the big mirror is.

IndieCade is going virtual like everything else this year. They're planning a week-and-a-half slate of talks, demos, a showcase of indie games, and online community. I like this plan! (Although, hint from the trenches: nine days is a really long show. Stay hydrated.)
Furthermore, they want to keep an active community and game showcase running year-round. The Kickstarter is to fund tools, streaming, and staff to support this.
I've only been to one IndieCade, in 2015. I was invited to demo Seltani, which I did (with Carl Muckenhoupt's help -- thank you!) I also kicked around the festival and met a bunch of cool people, including Sam Barlow and Cat Manning, and generally -- not to repeat a cliche -- I had a blast.
So I would like to see what IndieCade does as a virtual entity. Consider it.

Romancelvania: Honestly I have no idea about this one. The KS page isn't up yet. But this writeup sounds hilarious: Castlevania plus The Bachelor. Honestly, I could use a game where the devs say "We were all making each other laugh hysterically."
So I have no idea if it'll be any good, but it's worth a mention.

That's all I've got on my active (or not-yet-active) KS list. Of course there's a long, long list of backed games in progress. I'm not going to count. You know how Kickstarter works. (My KS game was four years late; complaining would be extra-silly.)
But I'll have my Calvino game up next Wednesday -- promise! And you'll have all day to enjoy it before the IFComp games go live on Thursday...

Wednesday, September 16, 2020

Myst VR teaser drops

I'm sure you already saw it, but I strive for completeness here, so here you go: a trailer for Myst in VR. The Steam page and GOG page are also up.
There's really not much to say about this. As Cyan's announcement says, they've been teasing this for a while now:
In fact, we suspect that some of you were onto us as far back as last summer when Rand gave his keynote at Mysterium 2019... We’ve been holding our breath ever since that video hit the internet hoping his keynote speech wouldn’t go viral, so for those of you who picked up on what we were laying down last year... Thanks for helping us keep things under wraps!
(From today's Firmament news update, one of the places where Cyan announced this.)
I take that last bit as a direct poke, since I blogged about Rand's keynote in 2019! VR possibilities and all! No, Rand didn't say "VR" -- he just called it a "definitive edition of Myst". But we all knew what he meant.
The real surprise here is that they're announcing it now. Firmament is currently on track for probably 2022, so this is looking like parallel development rather than sequential. Of course, it's impossible to know how the schedule will fall out.
The trailer and screenshots indicate that they've gotten a good ways into development. And it is very pretty.
Other tidbits:
  • The title is just Myst, no modifiers.
  • It will be VR-only and Quest-exclusive at launch, but flatscreen Windows and other VR platforms will follow.
  • The Steam page says "Built from the ground up to play in VR and flatscreen PC with new art, sound, interactions, and even optional puzzle randomization..."
  • The teaser has a slightly different opening narration in Rand's inimitable voice.
  • The D'ni text seen in the Myst book is a rather delightful easter egg for fans. See the top comment on the youtube page for a transcription.
I am of course pleased by this news, although I'll have to wait for the flatscreen release. Mind you, Firmament is still top of my wanted list.
The note about "puzzle randomization" is interesting. Many of the puzzles in Myst are entirely suitable for this. (Think about the clock tower, for example -- the required time code could be anything.) This isn't a huge expansion of the game's design, but it will be a nice change for people who want to replay it without feeling like they're following an invisible teleprompter. And it will be "optional", so detail mavens don't need to freak out.
The video and screenshots imply that they've scaled the island up a bit, and added lots of detail. But they haven't redesigned anything from scratch. It's still the classic, "noncanonical" Myst. Trap books will still be trap books. The puzzles will still be mostly nonmimetic insertions. Myst Island will not have bathrooms or living spaces.
...Or will it? Cyan could add practically anything as new bonus content; we'd cheer for it. It's really just a question of how much scope they allow themselves.
Okay, back to waiting mode, everybody.

Saturday, September 12, 2020

Recent additions to my Infocom collection

Last year, after the Infocom source code dump, I posted my Obsessively Complete Infocom Catalog.
This was the same data -- source code and some playable game files -- but with every version separated out and tagged. Release date, release type (alpha/beta/etc), game file version, all the information I could find.
Since 2019, people have sent me a fair number of pointers to "new" source code. Some of these were previously collected in various places; some have been dug out of MIT tape archives. I've been adding them to the page as they came in.
Want a quick tour?

Saturday, August 22, 2020

Hadean Lands: minor update

I have posted an update to Hadean Lands on Steam, Itch, and the Humble Store. This includes improvements to the UI framework only. (No changes to the game content.)
The game now supports OS dark theme. If you have your system OS theme set to "dark", all of the game windows (including the journal, map, preferences, and so on) will use a light-on-dark theme.
The story window will still be set to the color theme you last selected (Dark, Light, Sepia, Slate). You can adjust this to match in the preferences.
The preferences menu now has two system-responsive options: "Light/Dark" and "Sepia/Slate". These allow the story window to adjust if you switch your OS theme back and forth. I don't know why you would, but the game allows for it. (New players will see "Light/Dark" as the default preference.)
Other changes:
  • The Electron framework has been updated to 8.4.1. This should fix the "harfbuzz" library error that some Linux users were seeing.
  • There is a "Display Cover Art" menu option in the View menu, should you wish to bask in that.
  • The Mac version is now notarized.
Let me know if you run into any problems. Thanks!

Friday, August 21, 2020

Fan-built Ages in Myst Online

I've been writing about the idea of user-contributed content in Myst Online for almost long as Myst Online has been around. Then the game got cancelled in 2008. Then it was brought back as a static legacy server (source code available).
So people started experimenting with the tools for creating new Ages. A bunch of fan-run "shards" went up, both to test client fixes and to collect fan-built worlds.
Did I write about this new activity? Nope. I did not.
Playing around in the shards was a hassle. I'd have to figure out which sites to watch; I'd have to run variant client software; I'd have to keep track of bugs and age format details and who knows what else.
I don't mind going shoulder-deep in a steaming pile of half-working software! It's literally what they pay me for. But I have so many IF tools and systems on my plate that I just didn't need another one. So I said, look -- I'm going to blog this stuff for the typical Uru user. And the typical user doesn't know or care about shards. They log onto MOUL, Cyan's official shard. So I'll write up new content when it's imported into MOUL.
That was, oh, I think it was 2010 when I decided that.
Guess what happened today!

Sunday, August 16, 2020

The parser and the Myst plot hole

Occasionally someone asks, "Could Myst be done as a parser text game?" Sure! But you wouldn't want the translation to be too literal. Some of the puzzles would be less fun, more difficult, or more tedious when rendered in text form. So it's worth going back to rethink the design.
(Ironically, the sub maze -- Myst's most-reviled puzzle -- would translate pretty well. The relevant clues could be worked into environmental text. Plus, text IF has no movement delays, so if you missed the cues, brute-force mapping would be rather less tedious...)
But the most interesting design question is: do you allow TAKE? Myst is full of objects, but you can't carry any of them except book pages. (And one lit match.) But parser IF is all about the joys of acquisition! Do we stick to the limitations of the original game? Or shall we update the puzzle design to include keys and crowbars and lamps and all those other adventuring tools?
And while I was thinking about that, I realized... huh. The original game missed something.
To recap briefly (and spoilerifically): when you find enough red or blue pages, the evil brothers tell you how to open the secret fireplace compartment. That contains the last red and blue page and the green D'ni linking book. The green book shows you Atrus, who tells you to find and bring him the white page. His copy of the Myst book (his exit from D'ni) was sabotaged, and he needs the white page to fix it.
But in fact Atrus doesn't need the white page! And Atrus should know it! There's a simpler way to free Atrus which has nothing to do with the white page. This alternate solution isn't implemented in the game, but it is absolutely possible according to the logic of the story.
If you feel like solving the puzzle, I'll leave a bit of spoiler space.

Thursday, August 6, 2020

Mysterium starts Friday, online

Every year I write a Myst news wrapup post after Mysterium. This is because I enjoy hanging around the fandom, and then I pick up news, so I post it. Last year I even visited Cyan HQ; that was a trip and a half.
This year, of course, there are no trips. Trips are virtual. This means that you can hang around Mysterium as easily as me! It's the usual online setup: talks on Twitch and/or Youtube, chatter on Discord. Schedule is here.
Let me also bump your recollection of the Myst documentary Kickstarter, which has a week left. It's been running slow. I know a documentary isn't as exciting as a new game (also running slow), but a bunch of historical material will come out of this. We've already gotten this snippet of raw Achenar footage from the original Myst production files. Come on, you want more.
Opening stream is 7:45 pm Eastern on Friday. See you there.

Tuesday, July 28, 2020

Trademarking Infocom, again, part two

I posted yesterday about a company called SmartMonsters, who are running a port of (MIT) Zork in a MUD framework. They are trying to register the "Infocom" trademark.
But it turns out that someone else is trying to do the same thing. If you look at the URL infocom.xyz, you'll see a bare-bones site which claims "Infocom and the Infocom logo are trademarks of Infocom LLC." According to business records, Infocom LLC is a company formed in Colorado Springs in 2015.
Now, a US trademark search turns up no mention of this crew. And it looks like they've been claiming the "Infocom" trademark for years with no registration. But I am told that they are objecting to SmartMonsters' use of it. I don't really know how the trademark-tussling process works, so let's just say it's "in contention".
(I need hardly say that registering the Infocom trademark gives you no rights at all to the Infocom games. Those are covered by copyright, an entirely separate matter.)
So what are they doing with the trademark? The answer is a job posting that appeared last week:
In this position you will be provided with the source code for a proprietary assembler that consists of slightly under 4,000 lines of code. The source code you will study was written in assembly language to run on the TOPS-20 operating system on the PDP-10 mainframe computer. [...]
In this position you will play an important role by writing a functional specification document that describes the functions, program flow, error handling, and other information of the assembler that the person operating inside the clean room will need to know to develop a compatible replacement program. The replacement program is expected to be able to process the same input files and to generate bit-identical output files. [...]
The final specification will be made available under GPL-3.0-or-later. The software developed inside the clean room will be released under AGPL-3.0-or-later.
"Freelance Specification Writer" posted by Infocom LLC
This is an exact description of Infocom's ZAP assembler, which was part of their ZIL toolchain. (ZILCH turned ZIL code into Z-code assembly; ZAP turned the assembly into a Z-code game file.)
The source code in question turned up in the Infocom source-dump which appeared last year. Nobody noticed it right off. But a few months ago, a sharp-eyed user spotted ZAP buried in the MiniZork source directory.
The file "zap.mid" is MIDAS assembly code, an MIT variant of PDP-10 machine language. And it is indeed about 3800 lines long.
The job post describes a classical clean-room setup. You do this if you want to make a work-alike copy of someone else's program that isn't derived from their source code. The result does the same job -- "identical output", like the post says -- but you own it. This is legal because algorithms aren't copyrightable. (It may be ethically sketchy -- that's another whole question. But it's legal.) (Unless the algorithm is patented, but that's not the case here.)
So that's what this company is trying to do. The next question is, why? This is where my brain falls flat on the floor. And not just mine. I asked Jason Scott. He passed the word along to the old Infocom folks. Nobody, I mean nobody, can figure out what the point is.
The infocom.xyz site has two games up, which look like Lode Runner clones -- Linux only. This doesn't give much clue what line of business they're in, other than "not in it for the money".
(Yes, I sent them email, in case they were willing to tell me. They said "no further comment beyond what has already been made public.")
Let's be clear about what already exists. There are several open-source compilers that handle Z-code assembly. zasm does it; Inform 6 and ZILF both include the capability. We also have throrough descriptions of the Z-machine architecture, both Infocom's original document and the modern reconstruction. And of course there are dozens of open-source interpreters which play Z-code games.
All of these tools derive from the reverse-engineering work that went on in the late 1980s. The InfoTaskForce's seminal Z-code interpreter is archived here.
That was no kind of a "clean-room" project! The InfoTaskForce group dug into Infocom's proprietary games and interpreters, figured out how it all worked, and reimplemented it. (The Infocom spec document I linked didn't turn up until years later.) If Infocom, the original company, had wanted to make a legal issue of it in 1989, they probably could have. But they didn't.
After that, everything discovered by the ITF was public knowledge. The modern Z-machine spec (originally written by Graham Nelson) was a collation of that knowledge; Graham did not have to decompile Infocom interpreters. That spec has a Creative Common license (BY-SA-4, noted here). It's freely usable in every practical sense.
You can say that all modern Z-code/ZIL tools are "tainted evidence", due to the original ITF reverse-engineering. But it's a tenuous argument. And it still leaves the question of what you'd use a "less-tainted" ZAP assembler for.
Academic purposes? Studying Infocom's tools and processes is a worthwhile (and fascinating) goal. But it makes no sense to use a clean-room tool for that. You want to study every scrap of information available!
Compiling Infocom's ZIL source code for fun? There are plenty of people doing that already, using existing open-source tools. Some folks are even tackling bug fixes and modernization. (Yes, Activision's copyrights are a question here. The concensus is that volunteer updates to the source code are fan activity and basically okay. Don't go selling them, is all.)
Compiling Infocom's code for profit? A clean-room compiler or assembler doesn't give you any leverage there. You're still building a game file derived from proprietary source code. Again, selling it without Activision's permission would be right out.
Writing new, original ZIL games for fun? As I said, this is already a popular hobby. The forum is buzzing with ZIL programming chatter.
Writing new, original games for profit? I gotta tell you, ZIL is not the right tool for that job. Even if you think you're going to get rich off parser IF (tricky at best), you'll want a modern tool which can handle dense, highly-detailed games. Of all the Infocom alumni who revisited parser IF (Marc Blank, Mike Berlyn, Bob Bates), none of them chose ZIL.
For the sheer challenge of the hack? Maybe? But people usually don't put down money for that sort of fun. This setup involves hiring a documentation writer and a copyright lawyer, for a start.
So I'm left with nothing. My best guess is that they want to write unauthorized sequels to the Infocom canon, but they don't understand either the legal realities (a clean-room assembler gains you nothing) or the IF community. My second guess is that they want to contribute a legally unencumbered open-source tool, but they don't understand that this has no practical value. I dunno. They're certainly doing nothing to dispel the impression that they might have sketchy intentions.
On top of which, they consistently present themselves as "Infocom". Not "Infocom enthusiasts" or even "a new generation of Infocom". This tweet (from last year) is an eye-rolling example. I also see a discussion thread in which someone said they were (briefly) selling the old Infocom games without permission? I can't verify that, but jeez.
I guess we'll find out, or else they'll sink without a trace and we never will.

Monday, July 27, 2020

Trademarking Infocom, again, part one

It must be a Monday -- someone has trademarked "Infocom"!
No, this doesn't happen every Monday. But over the past twenty years, a surprising number of people have tried to register "Infocom" as a game-related trademark.
The original Infocom company trademarked their name in 1979. Activision purchased the company and the trademark in 1986. But, of course, the Infocom brand didn't last long after that. Activision allowed the trademark to lapse in 2002. (They let "Zork" lapse in 2003. Curiously, they renewed the trademark on "Return to Zork", which remains live today.)
This set off a weird slow-motion frenzy in which some Infocom fan or other would notice the dead trademark and try to do something with it.
  • Oliver Klaeffling filed a registration in 2007. He posted a web page for a game called Triumvirate, apparently a fan-sequel to Trinity. (I wrote about this in 2010.) The game never appeared.
  • Omni Consumer Products also filed a registration in 2007. This is a silly but real company run by Pete Hottelet. It sells real version of fictional products like Fight Club Soap and Stay Puft Marshmallows. Omni held onto the trademark until 2016.
  • Bob Bates, one of the original Infocom folks, filed a registration in 2017. This was shortly after his Thaumistry kickstarter. The game shipped that year, but the trademark registration was not completed.
And now, just a few months ago, a company called SmartMonsters has filed for it.
Interestingly, this registration only covers "online, non-downloadable" videogames. If you look at the SmartMonsters site, you'll see that it runs a set of old-school MUDs. By old-school, I mean they are strongly oriented around RPG-style stats, skills, and XP. This is what all MUDs were like before the "social" TinyMUD/MUSH/MOO tree branched off.
One of their available games is a port of Dungeon. It claims to be "mashed-up from several of the 1980s C ports". It's running in a MUD framework, but it's not multiplayer. It's also pretty alpha; I couldn't manage to take inventory or attack the troll.
The SmartMonsters people are clearly long-time MUD-and-IF folks. Their IF resources page links to IFDB, the forum, and a bunch of classic games (including mine). Their bio page describes co-founder Gary Smith as "...the guy who ported Zork from MDL to C on the PDP."
(I'll note that this is an unrecovered port! All the extant C versions of Zork/Dungeon are translated from Bob Supnik's Fortran version. I dropped SmartMonsters a note asking about it. They say Gary's C port is lost, but he might have a VisualBasic port lying around from the old days...)
I'm pleased to have stumbled across SmartMonsters. But that's not the weird part of this story! There's another company trying to pick up the Infocom trademark right now. I'll post about them tomorrow.
("How do you keep a dornbeast in suspense?")

Tuesday, July 14, 2020

Myst documentary kickstarter

Today's news: a documentary about Myst has popped up on Kickstarter.
This has been under way for a while. I mentioned last year that Philip Shane, the filmmaker, was wandering around Mysterium, talking to people and filming random "life among the Myst fans" footage. (So it's not impossible that I'll show up in the background of the documentary...)
The project goal is $200k, which will cover further filming at Cyan and other locations. According to the project page, Shane wants to visit the places where the Millers grew up, talk to people involved with the Mac and Hypercard (where Myst was originally built), tour the modern game industry looking for Myst followups and influences, and generally construct a very broad-spectrum view of the game and its context. The documentary is aimed to release at the end of 2022.
For more info on the documentary, and comments from Robyn and Rand Miller, see this VentureBeat article (published yesterday).
This offsets the bad news from earlier in the week: Firmament, Cyan's upcoming game, is delayed until probably 2022. Its original Kickstarter estimate date was mid-2020 -- this month -- but, well, game dev is game dev. Cyan's original notion of a medium-sized game and an 18-month dev cycle has grown into a "bigger story arc". On the up side, the documentary should be able to wrap with a view of the Firmament launch! Hopefully this will all dovetail into a Cyan media moment, as it were.

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.