The Myst Graph: A New Perspective on Myst


Upon reflection, Myst has long been more analogous to a graph than a traditional linear game, owing to the relative freedom it affords players. This is particularly evident in its first release (Macintosh, 1993), which was composed of interconnected HyperCard cards.
It is now literally one. Here is Myst as a graph:
The Myst graph, a comprehensive representation of the game’s structure that maps the connections between various views and locations, is downloadable as a poster-size PDF.
Introduction
Origins of the Myst Graph
I fondly recall creating, just like many others (including more skilled cartographers), a rudimentary topological map of the infamous Myst Mazerunner puzzle when I was young. The idea recently struck me: could this approach be extended to the entire game? The HyperCard implementation’s deterministic connection of cards seemed tailor-made for an even more abstract map: a graph. After all, graphs are a powerful tool for information analysis. By having the ability to represent the original Myst as a network of interconnected nodes and edges, we could gain a deeper understanding of how the different aspects of the game are related and uncover new insights into its underlying mechanics.
However, I did not see myself creating it manually; it would have been a monumental and error-prone task. Fortunately, I soon discovered, thanks to the efforts of Uli Kusterer (Youtube channel: “Masters of the Void”) and the “Reverse Engineering Myst” presentation at Mysterium Con 2024, that the game’s source code was accessible. That changed everything: how about generating the graph programmatically?
Roadmap
(1) In this article, I introduce the concept of the Myst graph, explaining why it is an important tool for analyzing the game, and walk readers through how to interpret the graph, highlighting key concepts and insights. (2) A second article, already published, explores new findings that have emerged from analyzing the Myst graph. This article builds on the present article, providing additional context and explanations for the insights gained from the graph. (3) A third article, not published yet, will detail the technical approach and open source “DeMystify,” the program I created to generate the graph. This will provide readers with hands-on experience exploring the Myst graph using code. (4) Last, a fourth article will discuss how this graph can be used as a starting point for new projects and speculate on what other insights might be gained by further analysis.
Minor Terminology Clarifications
Before diving into the presentation of the graph, let’s clarify some words. “Dunny” refers to D’ni: this is how the D’ni stack was initially named. Also, I may refer to the Myst Age as the “Myst Island” for variation. When discussing graph theory, I will use the following terms: nodes will refer to the vertices, while edges represent the connections between them. For those unfamiliar with graph theory, just remember that edges are arrows pointing from one box (or view, or card) to another, the nodes, illustrating a relationship between the two.
Disclaimer
This project is a personal initiative to analyze and understand the classic Myst game. It is an unofficial and nonlucrative open-source effort created for educational purposes only. This project is not affiliated with Cyan Worlds, Inc. or the original creators of Myst. Any opinions, insights, or analyses presented on this blog are my personal views and do not reflect any official positions or statements of Cyan Worlds, Inc., its affiliates, or any organizations I might be affiliated with.
Before analyzing this graph, please be aware that this series of articles will contain spoilers for the game. If you are new to Myst or plan to play it soon, I recommend skipping these articles and experiencing it firsthand: Myst remains such a fantastic game!
Basic Properties of the Myst Graph
Nodes and Edges
The game comprises 6 HyperCard stacks, one for each Age, totaling 1,355 cards. The graph abstracts these into 1,364 nodes connected by 3,189 edges.
The number of nodes does not coincide with the number of cards and stacks because 3 nodes are virtual. They represent cards that were not shipped in the release. They only exist because they are referred to by actual cards. These virtual nodes are Mechanical Age 17673 and 20348, and Selenitic Age 31832.
In this version of the graph, edges do not encode gameplay constraints. A card is considered connected to another if it references that card; the specifics of how the player interacts with the card to reach the other card—whether by simply clicking or solving a complex puzzle—are left implicit. (This choice is discussed later.)
Paths
Paths are sequences of edges from node A to node B. Because the gameplay has not been integrated into the graph, they do not necessarily represent feasible direct paths in the game. For instance, a puzzle on the path may require performing actions outside the path. In other words, the paths evoked in these articles abstract away all the constraints of the game, except for the connections between cards.
Theoretically, the shortest path between the starting point and the (good) ending consists of 24 edges. From a pure graph distance point of view, reaching the beginning of the game and its ending only takes 24 movements or a change of direction. The most distant nodes (in other words, the longest shortest path in the graph) are separated by 130 edges. In the context of the game, these paths are detailed in the second article.
Clusters
Interestingly, while the file that encodes the graph does not contain any information about clusters (except for isolated clusters, as explained in the second article, and for the colors of the nodes, for rendering purposes), the rendering engine that transforms it into a PDF, creates an organic (albeit imperfect) formation of clusters: the Myst Island in the middle, and the Ages at the periphery. This is explainable: Myst Island refers to all Ages; each Age only refers to Myst Island.
There is one disconnected cluster outside a few isolated nodes—that, consequently, cannot be reached from within the game. This isolated cluster comprises 3 nodes, including 2 virtual ones, from the Mechanical Age: originally, 17552 had directed edges with 20348 and 17673, both absent from the Mechanical Age stack.
Legend: How to Read the Graph
Nodes
Colors
Each Age has its own color to facilitate the identification of stack-based clusters.
Nodes Labels
When a node abstracts a stack, the name of the stack (corresponding to the Age) is prefixed with “[Stack]”. For instance, “[Stack] Myst” is the stack containing the cards belonging to the Myst Island.
Nodes representing cards are labeled following this pattern: “{Stack}:{ID} [({Original name})] \ {Image name}”.
The cards are identified by an ID (see page 280 of this reference), a HyperCard-generated integer. Example: “Mechanical Age:12345” refers to card ID 12345 belonging to the Mechanical Age stack. These IDs are unique per stack. Since each stack has its own set of unique IDs, there can be collisions across stacks where two or more IDs are identical between different stacks. This is evident in the Myst graph, where some IDs appear twice across Ages (8059, 8794, 9075, 18304, 19870, 21064, 32302, 33578, 34421, 39710, 52457, 55809, and 74269). As HyperCard automatically increments these IDs within each stack, one can reasonably infer that the greater an ID value is, the closer in time it was created relative to the initial release. However, this relationship may not hold for the underlying assets, as they were rendered separately through a different process. In other words, a “recent” (relative to the release) card does not necessarily mean that the asset it represents was also rendered close to the release.
Cards can have been voluntarily named. When that occurs, the original name is specified between parentheses after the ID. For example, “Myst:81655 (AchenarLose)” was named “AchenarLose” by the Myst creators.
Last, cards represent a view or an image, so they need a reference to an asset filename. This information is displayed just below the label. So “Myst:8336 (dock) \ Dock1-E” means that card ID 8336, belonging to the Myst Island and named initially “dock” features an image called “Dock1-E”. This specific node plays an important role in the game, as it is where the player starts.
Special Nodes
Sink nodes serve as destinations, receiving connections but not providing any exit paths. They can be reached within the game, contrary to the following categories of nodes. Source nodes act as starting points, sending out connections and initiating new paths without incoming edges. They are unreachable in the game. Isolated nodes are unreachable from the rest of the graph, having no incoming or outgoing edges that could be followed.
More specific to the game, nodes with blue borders represent views containing blue pages, while those with red borders show views having red pages. The unique, purple-bordered node denotes a view encompassing blue and red pages, and the white-bordered node represents the white page.
Edges
Directions
The Myst graph is a directed graph. The quasi-totality of the edges is either directed (they connect two nodes in one direction) or bidirectional (they connect two nodes in both directions). Rarely (3 occurrences), some edges are self-loops, connecting a node to itself.
In the game, a bidirectional edge typically represents a direct change of orientation (cardinal points, looking up and down). Movements are usually represented by directed edges, as walking backward is impossible, except for some exceptions (backtracking edges; see below).
Here is a concrete demonstration. In the village of the Channelwood Age, changing between one of the staircase ascending views (17225) and its corresponding pathway view (73038) can be done in a single click as the edge is bidirectional. However, once the player takes the stairs to go up (73346), it is impossible to backtrack directly to the original staircase ascending view without first turning around to look down (73587), then reaching the original pathway view (73038) and last turning around again (17225).
To summarize, and with some exceptions, from a navigational perspective, while directed edges can be interpreted as walking, bidirectional edges can be interpreted as changing directions.
Special Edges
Edges connecting two nodes from different Ages (cross-Ages edges) are rendered with a thick line. Edges that connect exclusively two nodes are backtracking edges. They act as a device to zoom in/zoom out (one click to enter the next node, one click to go back to the previous node) and are represented by edges with inversed arrow heads and tails. Last, some of the connections are commented out in the source code of Myst: they characterize disabled edges, represented by dashed lines with a tee arrow shape.
Transitivity
In Myst, there are three forms of transitivity.
First, by default, intermediary nodes are fully transitive (edges directions notwithstanding, obviously). If node B can access A, and C and D can access B, then C and D can access A. This is the common navigational mechanism.
Second, some edges are intransitive: while B can access A and, reciprocally, A can access B, C and D can access B too, but they cannot access A. This relationship characterizes the backtracking edges.
Lastly, some edges are partially transitive: if node B can access A, C, and D can access B, only D can access A. In the realm of Myst, this is only true of the edges making the player return to Myst after completing an Age. Upon returning to Myst Island with the book, they first systematically see the ceiling of the library (Myst:44018). When they click the ceiling, they automatically face the bookshelf (Myst:46439). (The mechanism by which this is done with HyperTalk, the scripting language of HyperCard, will be detailed in the third article.)
Limitations
First, as explained in the previous section, the graph does not capture the gameplay mechanics. Although this approach has its limitations, it provides a significant advantage. By separating the gameplay from the graph structure, we can already gain novel insights into Myst without dealing with the complexities of puzzle design. Of course, nothing prevents future versions of the graph from including this logic.
Second, the rendered clusters are not entirely separate from each other. They overlap in their boundaries. For example, Myst:38896 and Myst:30143 encroach on the D’ni Age. While it would be possible to constrain the graph so there is no overlapping, I made the rendering engine as Age agnostic as possible for this initial version. As “DeMystify”, the graph generator, will be released, readers can try different arrangements; I would be very interested in seeing their results.
Third, the graph only captures straightforward relationships between cards and stacks. Analyzing the scripts more granularly and identifying complex relationships, such as image substitutions, would be interesting. This lack of granularity is evident for the books from the bookshelf: the current graph does not sufficiently capture the pages. A future version may improve this aspect.
Next Steps
Now that we have had a chance to familiarize ourselves with the Myst graph, its structure, and how it relates to the game, let’s dive deeper with a second article, which explores some of the insights and discoveries made possible through this new conceptual tool. The article will take us through the hidden connections and relationships between various game elements, revealing new aspects of Myst that were previously unknown or unseen.
The graph will make one with the game.
Subscribe to my newsletter
Read articles from Guillaume Lethuillier directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Guillaume Lethuillier
Guillaume Lethuillier
Opinions expressed in this blog are solely my own and do not express the views or opinions of my employer