Faizon Zaman obtained a BS degree in cognitive science (with minors in computer science and audio production and design) from SUNY Oswego in May of 2018. He previously attended the Wolfram Summer School in 2016. Faizon enjoys developing audio/visual content production as well as programming skills. At a broad level, he’s interested in cognitive systems, representation, art and translating ideas into code. He’s recently found digital humanities to encapsulate these interests.
Project: Wolfram–Twine Bridge
The goal is to build an import/export system between Twine and the Wolfram Language. Twine is browser-based software used to make interactive stories and text-based games. A Twine story or game consists of a network of passages and macros that can change the state of variables or other story elements. Graphs and associations will be used to represent Twine stories in the Wolfram Language. The primary goal is importing the Twine story HTML file into the form of a Wolfram Language graph and association and exporting an association form to the Twine HTML format.
Main Results in Detail
Import support for Twine stories was made using the Harlowe markup language. The importer can generate a graph and association from any HTML file with the Twine format. The Twine link syntax is supported as long as it is not in a macro (commands for changing states of story elements). Using the association form, a Twine summary can be generated to explore the passages via a clickable graph. Association forms can be exported to the Twine HTML format. A folder is generated in the notebook directory where the story will be stored. These can then be imported into Twine.
The Harlowe markup language has support for macros, commands that can change story elements (appearance, flow, state, etc.). Among other types, there are conditional, printing, data and output macros. Some macros include links to other passages, which I can’t support yet as they are effectively hidden from my parser. In addition to the macros, proper passage placement when importing to the Twine editor is needed. Going forward, macros should be gradually implemented and the collection of Twine stories to import and test on should grow. As errors or unsupported features arise while processing these stories, I will attempt implementations and fixes.