Hello, Tyria,
I’m Chloë Mills, Story Design Lead for Guild Wars 2®: Visions of Eternity™. I’d like to give you a look under the hood at what went into making the Unending Ocean story instance in Chapter 1: Unscheduled Departures, including the design process for this instance, some technical details of its implementation, and a few interesting challenges we solved. This is a technically complex and ambitious piece of content, so hopefully you find it as interesting as I do!
This blog contains light story spoilers, in case you wish to avert your eyes now.
Planning the Voyage
At the beginning of Guild Wars 2: Visions of Eternity, the Inquest have a head start in traveling to the mysterious island of Castora, and the commander and their allies hastily assemble a crew to set sail across the Unending Ocean aboard two ships: the Dark Leviathan and the Martingale.
From early on, we had several key goals for the start of the story and the journey to Castora that helped shape the setting and gameplay:
- Set the tone for the expansion overall and address player feedback about pacing and participation from Guild Wars 2: Janthir Wilds™ by beginning the story on an adventurous note and more quickly and frequently inserting the player into the action.
- Ground Castora in the setting by physically traveling there. Castora is an uncharted landmass separated from mainland Tyria by a massive ocean and without pre-existing lore, so we wanted to show the player making that journey rather than taking a portal and—poof!—arriving with little thought, difficulty, or frame of reference for the vast distance.
- Set up and foreshadow important narrative elements that arise later in the story. The magical fog, Isgarren’s cagey behavior, and Kela attacking the Martingale unseen from beneath the waves all plant seeds for later story development centered around the seers. We wanted to demonstrate that reaching—or leaving—Castora would be fraught with danger, contextualizing the castaways’ story and why Castora has remained shrouded in mystery, only roughly charted from afar by passing sailors.
During the early planning process for any expansion, we outline a rough estimate of scope for story design work. We consider the number of chapters, the number of story instances, and how complex each section will need to be. This is all based on factors including (but not limited to) the development timeline, designer and writer bandwidth, and the emerging needs of narrative beats. Story sections containing narrative focal points usually need extra attention and require higher design scope, so I designated the scope for the Unending Ocean story instance as “extra large,” meaning that it would have many moving parts (literally) and a high amount of bespoke, complex implementation.
Ships and Environment as Centerpieces
The entire story instance takes place aboard the Dark Leviathan and the Martingale. This presents an interesting challenge because the physical play space is much more limited. To help compensate, I tried to get the most out of using vertical layers of the ships and design variety in what the player must do. Initially, only Sayida’s ship, the Dark Leviathan, was planned, but in early prototyping, it became apparent that the small main deck of the ship and limited upper-deck space would not provide a large-enough playable area. And thus, Canach’s ship, the Martingale, was born. And just as quickly, the fate of his ship was also sealed when we realized that there was an existing ship model with a spectacular break-apart animation just begging to be used.
The instance is split up into two distinct sections: traversing the vast expanse of the Unending Ocean during a storm and navigating within a dense fog offshore from Castora. These create distinct, contrasting periods of the journey that show the array of dangers faced trying to reach Castora.
Pretty much everything else in the instance centers around these two concepts.
The Storm
The storm section opens on a black screen with dialogue in the background as the commander emerges from their cabin on the Dark Leviathan. Story designers need to consider both the design of individual story sections and how different parts of the story flow between each other. The player enters the instance from Lion’s Arch, and jumping directly to the middle of the ocean would be abrupt, so I wanted to make sure this transition felt natural by setting the stage with dialogue, sound effects, and a visual transition before setting the player loose.
This section demonstrates how dangerous the voyage is even before getting anywhere near Castora and the seers’ defenses, while acknowledging the Unending Ocean’s existing lore. Creatures of the deep—including krait, karka, reef riders, and even kraken tentacles—all attack the ships in a frenzy while lightning-strike fires lend gameplay variety between combat.
Playing Return of the Obra Dinn left a strong impression on me, and I think its influence can be seen in some of the tone and framing of this section: creatures of the depths chaotically boarding ships as crew scramble to react to each unexpected layer of danger, all while a storm rages above.
The Fog
In contrast to the violent storm, the tone in the fog section is eerier and apprehensive, punctuating the end of an already dangerous voyage. The concept was born from harrowing, real-world incidents such as the Imperial Trans-Arctic Expedition of 1914–1917, where the ship Endurance faced difficult navigation through dangerous ice floes in uncharted territory. This, combined with tales of the Bermuda Triangle, began shaping our ideas.
Both sections are distinct from each other from a design standpoint, too. Each has its own set of ships, NPC spawns, and other objects, but all objects for the fog section are initially invisible. Sneaky smoke and mirrors are at play in the transition from storm to fog: as the screen fades to black, all the fog objects are turned on, the player is teleported forward to the duplicate Dark Leviathan, all of the storm objects are turned off, and then the black screen fades back to gameplay.
Having two copies of everything surprisingly simplifies the design, because the greater the number of scripted behaviors an object must perform, the more chances there are for bugs caused by interfering interactions. This strategy lets us build the story in one instance, allowing the two sections to flow together as one immersive experience while keeping scope manageable.
Smoke and mirrors continues to be a theme for the fog itself. Normally, a foggy environment in Guild Wars 2 is something called an “environment zone,” which is an environment object set up by the map artist that can be turned on by the designer at designated times (this is how the stormy weather earlier in the instance is set up). However, fog created in this manner has limited maximum density.
Here, the fog needed to act as a gameplay mechanic by drastically reducing sightlines. The solution for this? The fog is actually a large visual-effects sphere created especially for this instance. It is attached to the Dark Leviathan and moves with it, offset to the left to encompass the Martingale when the two are side by side. When the Martingale swaps to the Dark Leviathan‘s right side for necessary positioning later along the route, a second fog bubble offset to the right replaces the first, which turns off for a seamless swap.
The environment outside the fog bubble is actually a perfectly clear, sunny day. To maintain the illusion, a tripwire sphere slightly smaller than the fog bubble prevents players from leaving its radius. This also helps ensure that design, QA, and art staff don’t have to account for players wandering out of the designated play space.
Traveling Ships
Let’s get more technical and talk about how the ships function. In the fog section, the two ships actually move through the water, all while allowing the player to move around and engage freely. The ships are what we call “prop gadget moving platforms.” A gadget is the term we use for interactive objects: books, gathering nodes, or destructible objects such as barricades. Sometimes gadgets are placed in the world by designers, especially when we need flexibility on where they spawn. Two examples from this story instance are the launch pads that fling the player from ship to ship and the magic orbs the player collects to navigate through the fog.
Larger objects that need collision and must be properly affected by light and shadows will be placed by a map artist as an environment prop. A designer can then designate this prop as a gadget and tell it to function in certain ways, and this is called a “prop gadget.” Very large bosses such as Soo-Won or Drakkar are prop gadgets. Furthermore, prop gadgets can be designated as moving platforms and scripted by a designer to move on rails, maintaining collision and allowing players to travel with it without just sliding off. This is how the commander can move around and engage freely while the ships in this instance travel through the water.
However, for anything else that needs to move with the ships—such as NPCs—a little more legwork is required. The moving platform must be specifically referenced on their spawn objects so the game engine knows to spawn them on the ship rather than floating in midair or snapping to the terrain below. With that in place, everything associated with the ships—the NPCs, the launch pads, the magic orbs, the enemy spawns, the ratlines to climb to the crow’s nest—moves with them as a group and can be placed where the ships initially start out, even if they are meant to spawn later along the route.
All of this becomes invaluable when implementing the main aspect of ship gameplay design: giving the player agency to choose a direction for the ship to travel.
This is where things get fun. To successfully navigate through the fog, the player must choose correctly between navigating the ship left, right, or straight at four different points. If they choose correctly, the ship travels on the main route. If they choose incorrectly, the ship heads off in a secondary direction and enemies attack the ship, taking a looping detour back to where it started for the player to try again.
Both ships travel together on these possible routes. You may see where this is going, dear reader. Between two ships—each with four legs of a correct route and four legs of incorrect looping routes, plus two bonus rails for making the ships bob up and down in the water when not traveling forward—there are a total of eighteen different rails controlling the ships’ movement over the course of the instance. Here is a visual representation of my self-inflicted pain:
When the Dark Leviathan begins moving, the Martingale will also move after a short delay to prevent the two ships from clipping through each other as they turn. Moving platforms can only move on one rail at a time, so just before it’s time to start moving on a forward rail, the ships will pause their up-and-down bobbing loop on the vertical rail to prepare for this.
While moving, the launch pads for jumping between the ships are temporarily disabled, both to reduce bug potential and because the ships need to spread out while traveling. This moves the Martingale out of the fog bubble, so players who happen to be aboard the Martingale when it gets too far from the Dark Leviathan get teleported to the Dark Leviathan to maintain the fog illusion.
As mentioned previously, many interconnected components increase the likelihood for accidental buggy script interactions. Spreading the layers of functionality for complex gameplay, progressing quest steps, triggering dialogue lines, and much more across several different controller scripts keeps them clean and organized.
End of a Voyage
There is so much more to the development of this story instance and Guild Wars 2: Visions of Eternity as a whole that I couldn’t ever possibly cover here. So much work and talent from every discipline goes into making Guild Wars 2; games truly are the ultimate collaborative medium. It’s such a joy to be able to share with others what you’re passionate about, and for me that is story design. I strive to challenge myself as a designer by pushing what is possible in our game engine to create exciting and novel story experiences. I hope you enjoy them.
See you soon in Tyria!






