Meri-Making, June Edition: Have Game, Will Travel
Howdy, backers, and welcome to the latest installment of...
This month's update includes new music and visual art, a discussion of how trading will work in the game, and an interview with Meriwether's ace lead programmer, Kyle Staves. So grab yourself a dram of whiskey and a nice big hunk of pemmican, and settle in for what we hope is an enjoyable read!
New Music--The "Columbia" Theme
We on the Meriwether team are feeling more and more fortunate every day that Jim Welch is the game's composer. He has thrown himself both into the history of the voyage and the history of the music of that period. Coupled with his wide musical training and his encyclopedic knowledge of video games, it's hard for us to imagine anymore more perfect to create this game's score.
So please, before you read any farther, scroll down to the bottom of this page and enjoy this early version of Jim's "Columbia River" theme as you read the rest of this update. You won't be sorry!
You Suggest, We Implement!
Backers, we want you to know that we are carefully listening to all of the feedback you give us: we have a great deal of respect for how knowledgeable and insightful you are. So we wanted to give you a concrete example of how eager we are to implement good ideas that come from you. Last month, backer John Gallino made the suggestion that the spyglass should feature a "dirty glass" effect. We loved the idea and came up with some art with which to test it. We're sold on it. What do you think?
Have Game, Will Travel: An Interview with Kyle Staves
Kyle's been working hard building the back-end systems that will bring Meriwether to life, and lately most of his time has been devoted to making the "Travel" levels of the game functional and fun. Designer/writer Carlos Hernandez talks to him about the progress he has made on implementing those Travel levels.
Carlos Hernandez: Kyle, why don't you begin by giving our supporters a general reminder of how Travel levels are going to work in the game?
Kyle Staves: As a quick recap, Meriwether is broken up into two different types of levels. "Lewis" levels are our more narrative driven experiences, always played from the perspective of Meriwether Lewis. "Travel" levels allow you to control the entire Corps of Discovery as they travel across North America. Unlike the hand-crafted experience in Lewis levels, Travel levels are procedurally generated, ensuring a different experience with every play-through. We define various parameters that our generation algorithm uses to ensure that these procedurally generated levels still offer a consistent and design-conscious experience.
CH: Oh, and for those who don't know, can you give a quick 'n' dirty definition of "procedurally generated"?
KS: A traditionally designed level is created by a designer hand-crafting the entire experience. This involves drawing the terrain heightmap (the hills, rivers, cliffs, etc.), placing detail objects such as grass and trees, and defining level objectives and placing level events. In a procedurally generated experience, some or all of these [maps] are created by a computer algorithm and can generate a virtually infinite number of levels.
CH: Okay, but for the programmers out there, geek out for ten seconds and tell us how procedural generation REALLY works in Meriwether.
KS: So the first thing we do is generate some cohesive noise (modified Perlin) to create the basic heightmap. This gives us our base mountains and hills. We then partition the space into small chunks and run a Drunken A* (pronounced "A-star") algorithm across the level to generate our river path (which gives us a river heading in the general direction we want, but curving a bit around geographic features in a natural way). We carve this path out of the heightmap and then do a few more detailed passes to increase variation to specific height regions (particularly a rougher appearance on mountains themselves).
Once we have the geometry of the terrain generated we apply textures based on that geometry, so that certain elevation ranges we know are underwater and get a nice sandy, gravelly texture. Areas of the terrain with a steep enough slope we designate as cliffs and apply a rocky texture. Flatter areas get a grassy texture. We apply other details in a similar manner; we obviously want most of our large trees growing out of relatively flat areas (and certain plants only grow at certain elevations).
There is a lot of nuance to how we evaluate the geometry to apply textures and details, but that's the gist of the approach.
Step one: Based on the parameters we provide, our code generates a "basic noise layer" that will serve as the basis for the terrain.
Hills, mountains, buttes, etc. are added automagically!
Step three: A river runs through it--the level that is. This is the main waterway the Corps of Discovery will need to navigate. Tributaries, lakes, and other bodies of water are also generated.
Step four: It's an M-class planet now! Ground cover, bushes, trees, and ground textures are introduced.
CH: Once the map is procedurally generated, it's time to send the Corps of Discovery out to explore it.
KS: Right. In Travel levels you alternate between various characters, taking a main character and a small collection of men out from the boat to explore the uncharted terrain and accomplish various objectives (most importantly, staying alive).
CH: So, for instance, you might take Captain Clark our on a surveying excursion while Captain Lewis stays with the fleet and makes progress upriver. When Clark returns, you might send out Drouillard on a hunting expedition, and so on.
KS: Exactly. Each character has a stat called "Stamina" that takes several days to recharge fully and impacts how effective that character can be during the day. By swapping out to a different character the next day, you can ensure you have enough stamina to accomplish what you need to survive and thrive.
For instance, on your surveying excursion with Clark you may encounter a large group of elk when your stamina is low. Instead of risking scaring them away with a poor shot from Clark, you return to that spot the next day with a well-rested Drouillard (an expert hunter) to restock your dwindling food supply.
CH: So take me through a turn. Let's say I'm playing Captain Clark at the start of a new day and I am about to head out. What dangers and challenges will I face throughout the day, and what will I be doing to support the Corps' mission?
KS: So to give a little context, you'll start the day on shore next to the boat with a certain number of followers (additional men who will help you with various tasks) depending on who you've selected as the player character for this day. Clark starts with, I believe, two followers at the moment (we're still iterating on this number). If I've selected Clark, chances are that I'm looking to discover new land features and mapping the terrain.
CH: For the sake of exploring?
KS: Yes, but more practically, to raise the morale of the Corps. Morale is a number that stays with you throughout the game, and gets raised and lowered during every Lewis and Travel level. You can add to morale through performing tasks such as charting new geographic features or discovering new plants and animals. Going hungry, damaging your boats, or getting wounded all lower morale. If your morale hits zero at any point in any type of level, you’re done. Game over.
CH: So Clark, for instance, is good at raising morale through mapping?
KS: Yep. To return to the earlier example, as Clark I'll begin by looking for the closest mountain that I have not yet explored and begin heading in that direction. I may pull out my spyglass and try to chart some of the mountain from my current perspective before actually moving that way.
On my way to the mountain, I'll likely encounter several obstacles and opportunities. Perhaps there is a rather large patch of prickly pears blocking the path I wanted to take. I may choose to walk through this hazard, depleting my stamina as I endure small cuts. Or maybe I'm more fortunate and come across a small group of Native Americans who I can trade with. Perhaps I'm in need of food and they are willing to trade me some food for some of my gifts (represented by blue beads).
Eventually the day will begin to come to an end and a new action panel will slide into view, allowing me the choice between camping where I am (allowing me to stay in this spot and continue using Clark tomorrow) or returning to the boat (forcing me to start at the boat, but allowing me to use any character I wish).
When camping, I also have the choice to have one of my followers stand guard throughout the night if I have any remaining—without a camp guard I run the risk of having some supplies stolen in my sleep.
CH: And are there other hazards, too, besides possibly losing some gear if you don't post a guard, right? Nocturnal predators, horses running off, that sort of thing? I was just talking with Barb [the team's historian] about how sometimes Corps members would forget to hobble their horses at night and then have to spend a good portion of the next day trying to find where they'd wandered off to during the night.
KS: That and more. We have all sorts of ways of making the Corps of Discovery's lives miserable in the works.
CH: So what are some of the challenges that you've had to handle in working on developing Travel level, both in terms of design and programming?
KS: In terms of design right now I'd say the biggest challenge we are facing is making the differences between each character not only compelling, but also clear.
As an example, Lewis and Clark both have access to the spyglass we mentioned in the last update. The spyglass does not serve the same purpose for the two characters. Clark uses it to chart geographic features from a greater distance, and Lewis uses it to observe and discover various animals. We like the gameplay presented by these differences, but right now they lack clarity.
We are currently in the process of discussing ways to make this more clear; perhaps through a time limited buff that unlocks new abilities (and incurs a small cost) to remind the player when and why they can perform certain tasks.
CH: And that's one of the important elements of testing and iterating in a game—figuring out why some gameplay element, that may seem perfectly clear in your own mind, goes to hell once someone else starts playing your game.
So what about the programming end of things?
KS: On the programming side, improving performance is our large task at the moment. Procedural generation is awesome, but it also comes at a runtime cost.
CH: A "runtime cost" is the amount of resources the game uses from the player's computer, right?
KS: In this context what I mean by runtime cost is literally time. Loading into a pre-generated (by our design team and included as part of the game) level takes only a couple of seconds on most computers. However, we aren't just loading these levels from disk—with procedural generation, your computer is building the level through our algorithms. So before you can begin playing there is a longer loading time than there is for other levels.
We're leveraging all sorts of different techniques to keep this loading time as low as possible (such as multi-threaded generation of terrain and objects further from the starting point after we let you begin playing). The balancing act between giving the players a rich, variable experience and performance is a constant juggling act.
Aside from that, it's really just the challenge of working on such an epic project with a small development team. There's a lot to get done, and we're pushing hard to get it done as quickly as possible, and at the level of quality our backers expect, and we expect of ourselves.
CH: What has you most excited about Travel levels right now, in terms of how it plays (or will play)?
KS: One really awesome aspect of Travel levels is that the game itself is constantly presenting me with these gorgeous new views. We're barely scratching the surface of what our procedural generation can do, and I'm already stopping during my playesting to say, "Wow: this is starting to look awesome." I'm excited to be able to pick Meriwether back up years from now and still get those new vistas.
CH: So what's next for Travel levels? And how close is it to being "done" (whatever "done" means in a video game!)?
KS: Currently we're at a point with the world generation algorithm for Travel levels that we know it will work very well. There are improvements to be made (and more variation is necessary)—but terrain generation is largely solved at this point. Now comes the fun part for the design team. I've implemented a very small handful of the procedural events, obstacles, and encounters that will be generating on top of that terrain for us to experiment with.
There are still unknown questions to be solved on that front and a lot of exciting design territory to be covered in terms of giving the player awesome, engaging activities to do in that world. We've scratched the surface; now it's time to really start breathing life into the world by adding more variation to the experience.
CH: Parting thoughts for our supporters?
KS: I want to thank everyone for their support and enthusiasm. The reaction we've gotten so far has been awesome to see, and I'm really looking forward to being able to deliver a beta build of the game and hearing even more from you all!
We are constantly refining the gameplay in Meriwether, looking for the best ways to make the game fun, historical, and mechanically elegant. We think the trade interface will give you clear insight into our design aesthetic and process.
Meriwether shares many elements with computer RPGs. As such, when we initially imagined how trade would work, we thought we would use a traditional "shop" interface. A list of goods would pop up with their costs, you'd buy or sell as much as you wanted, etc.
That works great in most RPGs, where part of the game is collecting gold to buy increasingly powerful weapons and armor to help with the next level of challenges. But that's not the type of game Meriwether is. There's no such thing as a +4 Bearslaying Rifle of Accuracy in our game! (Though that does sound pretty awesome. Maybe next game....) You aren't constantly upgrading equipment in this game, trading gold pieces for fighting prowess; in fact, quite the opposite: you are losing equipment, struggling to repair the little you have, and rationing your supplies to make them last for a round trip over more than half a continent.
In short, trade matters in Meriwether from a storytelling perspective. Establishing the foundation for peaceful commerce between the United States and Native American nations was one of the Expedition's main missions. The Native Americans greatly desired many goods only European and American traders could provide during that time-period: especially rifles. And many nations lived subsistence existences; the Shoshone, for instance, faced extreme hunger when Lewis and Clark encountered them. It would make zero sense, therefore, to have a Shoshone trader who had a shop full of goods on display, when the rest of the nation stood on the brink of starvation.
So we asked ourselves, "What is important and fun about trade, and what would best portray the history?" What's important is the ability to acquire goods and, perhaps even more importantly, to build friendships through exchange. What best portrays the history is a system where traders aren't "shopkeeps," but Native Americans who have just a few items to offer and just a few items they would be willing to accept for barter. What's fun is deciding whether the exchange is worth it, both in terms of the goods received and the social implications.
So here's what we did: we narrowed trade down just to those features, then designed a light, fast UI to make that kind of trade work well. When you click on a person who is willing to trade, you see what items he or she has to offer (usually no more than three items) and what he or she wants in return. Click on the arrows between the items to make the trade, or click "Leave" if you'd rather not trade at that time. Easy, clean, and meaningful to this game's narrative: everything we want out of trade, with no unnecessary RPG baggage.
Newest 3d Model of Lewis
We thought it'd be fun to take a little trip down Memory Lane and show you the evolution our model of Lewis has undergone since we began this project.
Our earliest Meriwether Lewis model--circa 1982. (Kidding! We haven't been working on the game quite that long.) Notice the faux-hawk, the dead eyes, and the "Come at me, bro" pose. Good stuff.
The Lewis model we used for the Kickstarter. Looking a million times better than our first placeholder, but still a little rough around the edges.
Now, we proudly present our newest Lewis: richer colors, crisper uniform, rosy cheeks, and that hat! To die for.
It's important for us to get the Lewis model just right, for at least two reasons. One, players are going to be looking at Lewis more than any other model in the game, so he's got to be easy on the eyes. Two, Lewis serves as the standard our artists use to create the other models in the game.
He's not finished yet, but we're very excited about this direction. We would love to know what you think, so feel free either to comment or send us a PM with your thoughts (about Lewis, or anything).
Work continues apace! We are advancing on all fronts and are growing more and more exciting as the game begins to take shape. As always, we thank you for your support and ask you to contact us with any questions or comments you have. See you in a month!