Wasteland Production Stuff
An official update on the project is long overdue, so I'll try to make the most of this one. We have been so focused on production that we have not communicated as much as some people would like. We will look to improve the frequency of our updates and have the dev team post on the forums about the specifics of our development. The good news is that things continue to move along rapidly and I am very pleased with the writing and level designs we have so far. The players were vocal in their desire for mature, violent and strange and that is what we will be serving.
Beyond tone it is the individual moments I remember most when playing a great RPG. The curiosity of wondering how things might have changed based on my actions kept me engaged and wanting to re-play. And our job as designers is to make sure that the different scenarios that play out based on your choices cause real consequence. There is a small moment in the new Rail Nomads camp in which you hear a boy calling out for help as he is drowning. This time it would be a lack of action that could cause his death. Do you swim out to middle of the lake and save him or ignore his plea? And what happens when you are spotted ignoring his plea by a local resident? Do you shoot him before he can let others know of your behavior? These are situations that play out in the Wasteland. Each area has so many combinations and permutations of playing that it is almost statistically impossible for two players to have the exact same experience playing through the game for the first time. This design philosophy is what made the first Wasteland so great and why people continued to play it decades later.
Although not part of our original design for Wasteland 2, we felt that having portrait pictures of the enemies would add much color to the game. We have several artists helping to shape the look of things and we are quite happy with the vibe of bleak, violent, and unusual.
And some fans have had a little fun morphing the two together for extra creepiness.
The composer, Mark Morgan has now turned his attention to the music that the player hears while exploring in the Southwest. We asked for the music to have that bleak, edgy, lonely vibe mixed in with a dark western ambient. It's unusual to be working on music this early in the process but once again it allows for iteration time and for us to be as creative and nuanced as possible. Another excellent benefit of having fans fund the game.
The sample of the music is at the bottom of this update.
We have been very focused on getting the writing wrapped up by end of October so that we can do a table read of the entire game. Things are on track for about 95% of it which will allow all of us to get in a room for days on end to step through the game play. We look for flaws in logic, world consistency, keyword consistency, adding personality, adding ways to solve problems, creating visual cues, extra word descriptions, etc. It is quite a bit of work but it is a process that creates cohesion so that it feels like one world. There is so much content that the only way to grasp it all is to sit in a room for days for everyone to absorb. And quite often the best moments will come from the random ideas that spring forth from it all.
One of the qualities that makes for a strong technical director is their ability to build systems around the philosophies and aims of the game itself. John Alvarado has done an excellent job for us in the past and continues to do so for Wasteland 2. At the end of this update is a write-up by John that dives a bit deeper into the programming side of creating a deep RPG.
And now, I give you John Alvarado….
Wasteland 2 Engineering Update: Decisions, Decisions
Brian has emphasized that Wasteland 2 will put the player in the position of making tough choices that have deep affect on the unfolding story. Every decision comes with some tradeoff—some known, some only to be revealed later. There are so many paths through the adventure that it is likely no two players will have the same experience. This is an apt metaphor for the process of game development. In this update you’ll learn about some of the game systems the engineering team has been developing, and I’ll delve into detail on important decisions we’ve made around our story-scripting and localization systems.
Every game system we build involves making decisions about how to solve a challenge. Thankfully, Unity gives us a big head-start by providing many built-in solutions, saving us the work and reducing the decisions we have to make (in a good way). Using Unity was one big decision we made early on that has paid dividends. But there are still challenges particular to Wasteland 2 that we must overcome, and that means making tough choices that will have consequences for the rest of development and the final product.
As we weigh different approaches to a challenge, we attempt to gaze into the future and discern how the consequences of different decisions will play out with respect to design requirements (known and potential), content pipeline, run-time performance, and development time/cost. Fortunately, our engineering team has decades of experience over dozens of successful projects that help us make most of these decisions with confidence. So far we have made engineering strides on the following systems:
· World Map System
· Movement and Turn-Based Combat System
· Saved Game System
· Character Animation System
· Inventory system
· World State Tracking system
· Story Scripting System
· Localization System
We now have a player-controlled Ranger character moving with animation in a game-level and interacting with NPCs, triggering conversations and changing world states that affect future interactions. This is where we wanted to be at this time and we are right on schedule. Brian stressed to the engineering team the importance of having this ready by the time the writers are finishing up their level designs and story so we can begin implementing, testing and iterating. That priority and the desired iteration process informed some important engineering decisions.
There are many ways that the systems supporting conversation functionality could be structured. I built such a system for The Bard’s Tale, <shameless-promotion> inXile’s first game which was released to critical acclaim back in 2004/2005 for consoles and PC, and which is now storming the top-10 charts on mobile devices with 5-star reviews as the funniest and biggest RPG’s on mobile. </shameless-promotion> The Bard’s Tale was a very large game and handled a lot of dialogue with many branches and world states to track. Here is a breakdown:
4,594 Lines of Dialogue
6,412 Localized Text Strings (including dialogue and UI)
1,720 World State variables
Wasteland 2 promises to be even bigger in the amount of dialogue and world states. A world state is any information that must be remembered for the story to advance properly, such as what quests have been completed, what NPCs have been talked to and what information they have given.
At first glance it made sense to reuse the Bard’s Tale system, but one major difference is that The Bard’s Tale dialog was all voiced by actors. That meant all the dialogue and story was going to be fixed very early on in order to record the audio in voice acting sessions. There would not be much iterating on story/dialogue in The Bard’s Tale. The exact opposite is true for Wasteland 2 as there will be a light amount of voice acting in order to give us the freedom during development to modify, extend, and polish the dialogue and story right up to the very end!
However, all that dialogue still has to be localized (translated to multiple languages) and that presents an engineering challenge. In The Bard’s Tale we used a rather cumbersome system that required entering text into a spreadsheet and assigning unique labels to each piece of text before you could use the text in a game script. The designers referenced the text with the unique label. In this way the localization system could present the proper language text based on the unique label and the game’s current language selection.
While cumbersome, the text-entry only had to happen once and the story was very fixed so the designers didn’t need much flexibility with respect to modifying the text while scripting. For Wasteland 2 it’s important for designers to be able to modify text quickly and easily throughout development, so that old cumbersome system just won’t do.
For Wasteland 2 I’m relying on today’s faster CPU’s and larger RAM capacities to lighten the localization burden on the designers. I’m allowing designers to place the English text of their dialogues directly into the scripts. They just have to include a unique label at the start of the text. At runtime the game localization system parses out the unique label from the string and then, depending on the language setting, will display either the English text it has in hand, or lookup the translation with the unique label and display the translated text. Currently that means if a non-English language is active then more memory is used for a level because both the English text and the local language text is loaded.
The missing piece in what is described above is how all that embedded English text gets organized to send out for translation. I’ve written an offline tool that parses all the scripts to extract the English text strings and create the spreadsheet that we can then send out for translation. That tool is written in Ruby, a language that features powerful regular expression functionality that makes it easy to parse the C# script files to pull out the English text strings. Helping that process is the fact that each string starts with a distinctive syntax to specifies its unique label. It looks like this: “<@label>text”. For example:
"<@AboutRobotStrength>Robot strength is 10 times human strength, but we only use it for peaceful applications, such as mixing drinks."
The Ruby tool finds and extracts that string and generates an entry in a spreadsheet like this:
English: Robot strength is 10 times human strength, but we only use it for peaceful applications, such as mixing drinks.
Because some English strings are also entered as game object properties inside game levels (Unity scenes), the tool also must parse the Unity scene files to extract strings. Fortunately Unity provides the option to store its scene files in text format, which we are using to allow the extraction tool to do its work. The tool also uses the script file references in the scene files to figure out what strings from the scripts need to be loaded up for each game level.
I’m leaving out some details, and the extraction tool will likely evolve a bit as development progresses, but this is basically how it works. It was a tough decision to abandon a system I already had working (from The Bard’s Tale), but it was the right choice to spend some development time to give the designers the tools they need for the special demands of Wasteland 2.
Hopefully this peek behind the scenes gives you an idea of where we are in development of Wasteland 2 and helps you understand the factors we consider in our careful approach to engineering decisions. Choices we make early on have a major affect on the team and how our story of developing Wasteland 2 will unfold. Experience gives us some wisdom to guide us, and sometimes reusable tools and a bag full of tricks, but every project is different, and we must always step back and re-evaluate the current demands in light of current technology and the time and budget we have available in order to make decisions that will bring you the best product possible.