I filed some PRs today to add Quest to the Treaty of Babel.
- Treaty PR: Add Quest by dfabulich · Pull Request #29 · iftechfoundation/ifarchive-if-specs · GitHub
- Babel Tool PR: Add Quest module by dfabulich · Pull Request #45 · iftechfoundation/babel-tool · GitHub
- Tracking issue in the Quest github repo: Sign on to the Treaty of Babel · Issue #2227 · textadventures/quest · GitHub
It turns out that Quest has been embedding a UUID <gameid> element in its ASLX XML game format since Quest 5.1 in 2011. Under the hood, the code even calls it an “IFID,” despite Quest never technically signing on to the Treaty, or exposing the IFID in a format that the Babel tool can read.
Since Quest 5.8 in 2018, all Quest games come with a VERSION command, which will print out a string like this, referring to the <gameid> as an “IFID”:
TITLE: The Shack
AUTHOR: System Masters
VERSION: 1.8
IFID: 8d5f552d-e9da-4219-b64e-82040a38af60
h/t to @JTN for teaching me about this!
Unfortunately, until today, the Babel tool had no way of knowing the IFID file for Quest games.
That’s going to change, first with changes to the next upcoming version of Quest Viva:
- In Quest Viva 6.0 beta 60, published
.questfiles will include their IFID in a way that even very old versions of thebabeltool can read it..questfiles are just ZIP files;babelwill look for a string shaped likeUUID://1652E7EC-2D7D-4B59-95ED-E65D79EDF257//in any file, even if Babel doesn’t recognize the file’s format. Newly published Quest files will include aUUID://...//string in.questzips in plain text, in a zip comment. - Quest Viva beta 60 will also start including a
metadata.iFictionXML file in every.questfile it publishes, including title, author, subtitle (“headline”), genre, first published year, description, language, “style” (“Text Adventure” for parser-based, “Gamebook” for choice-based), version, release date, and cover art. - Quest Viva beta 60 will also embed an HTML IFID when it exports to HTML.
(@Alex merged those PRs lickety split! Thanks!!)
Then, when the PR for the Babel tool merges, Babel will not only be able to read the new iFiction metadata from games published in Quest Viva 6.0, but it will also be able to retroactively construct iFiction from published Quest games going back years.
Quest games prior to Quest 5.1 will have “legacy” IFIDs based on the MD5 of their output, e.g. QUEST-F11547C61CE0D3A754F8EA69BF853FDF, but Babel will still be able read the title, author, and description for every Quest file I have access to, including old .cas and .asl files.