Facing the Music

Six Ages: Lights Going Out has been Feature Complete for a while. We’re still testing it, and pushing towards Content Complete. One aspect of that is composing the music. The game takes place generations later, and things are very different, so while a few pieces will be the same, most need to be new. (To save time, the various UI-related sound effects will be the same.)

There seems to be no shortage of freelance composers out there, but I sort of accidentally found Neha Patel via Twitter (before Elon Musk began ruining it). We had a discussion about game soundtracks, I checked out her portfolio, and asked her to fill Stan LePard’s shoes. The fact that she knew who he was was a plus (it also speaks well for how Stan tried to help out other composers).

My basic design approach is to look at the events and come up with a couple dozen themes or categories. Many of these ended up the same as Ride Like the Wind — “Strife,” “Request,” “Opportunity” — but some situations are different, and I also decided to add some new categories. So music may be called “InternalPolitics,” “ExternalPolitics,” or “Decay.”

A farmer inspects ice-covered furrows. A scarecrow is in the background.

I prepared a list of these, and then for each one, made a short text file describing how the music will be used. I also include 2-4 illustrations to help Neha see the mood we’re after. Here’s Decay:

The world is getting worse

This music is used when the situation involves the overall deterioration of the world. This could be the failure of large political institutions or trade networks, acid rain, crumbling walls, climate change (in this game, it’s cold), greed, imminent starvation, toxic clouds, abandoned temples.

These are all bad situations, but they aren’t overtly supernatural or related to the forces that are explicitly trying to destroy the world.

The purpose of the music is to evoke a feeling, so when Neha sends a draft, I run it by Elise Bowditch, who also reviewed the music for Six Ages: Ride Like the Wind and King of Dragon Pass. I play it without explanation, and get her thoughts. Does it suggest monsters? impending doom? annoying neighbors? Does it feel optimistic or despairing? Elise is good at describing (one piece sounded like a “circus of horrors”). If it doesn’t seem to fit, we may need a completely new approach.

Assuming there’s a plausible match, we can then worry about specifics, like whether crashing cymbals are appropriate or the instruments should be swapped out. Occasionally a piece that really isn’t working can be radically transformed by changing an instrument.

Or sometimes a piece that didn’t give the right feeling for one situation ends up working fine for another.

We’re still in the process of creating music, but it’s coming along nicely. I kept hearing “ChaosHorror” in my head even when I was working on other stuff, which I consider a good sign.

Kinship

Six Ages is a game about clans and kingdoms and world-shattering events. But it’s also a game about people. In the first game, “Ride Like the Wind,” you watch (and help guide) some characters pass through their youth to adulthood, and possibly even to old age.

The second game, “Lights Going Out,” is no different. It goes a step further by presenting characters who are related to each other more directly than belonging to the same family.

I have friends who raised their children otherwise, but I think in most families, children don’t refer to their parents by their given names. So the bug report complaining that this can happen made sense. Here’s what the line of script looked like (<a> is a placeholder, filled in with a character’s name):

[Diplomacy ≥ 4] The Wheels have more to worry about than what <a> thinks of them. [1]

If this advice was given about the advisor’s mother, it would feel out of place or even rude.

Another example has the advisor directly talking to someone who might be their elder:

[Default] I’m sorry, <i>. [3]

How to deal with this? In many events, we have advice specific to various characters, such as the king and the prince. But this situation could happen with a number of people, and that felt cumbersome (as well as potentially blocking useful skill-related advice in favor of character-specific advice).

We could simply live with this, since it’s pretty rare (we only noticed an example this week) and doesn’t impact game play. But it does weaken the idea that your advisors are real people who behave in complex ways. So I decided to add a few special properties to our scripting language. Those lines of advice are now

[Diplomacy ≥ 4] The Wheels have more to worry about than what <a.relative> thinks of them. [1]

[Default] I’m sorry, <i.relativeDirect>. [3]
Advisor says, “The Wheels have more to worry about than what my mother thinks of them.”

If most characters give the advice, the placeholder <a.relative> is still the name. But if the speaker is related to the person in question, it will be filled in with something like “my mother” or “my son.” The second form, when one character talks to another, essentially drops the “my,” so the complete sentence could be “I’m sorry, Father.”

This is a pretty specialized substitution, but it’s something that’s really only practical because the game uses its own scripting language.

Hyalor’s Law

There was recently some discussion about legal cases on our Discord, so I thought I’d share the legal system I wrote up. The idea was to have a coherent system that was different from Heort’s Law, as shown in King of Dragon Pass.

Originally, we were governed by Yelm’s Law. But we had to leave the Law Tablets in Nivorah. Hyalor gave us a new set of laws that we could apply outside the city, and while on the move.
 
The law makes sure you and your kin will be compensated for aggression or theft. Crimes like murder, defamation, and injury have a customary payment in horses or cows, depending on the level of harm. Grazing on someone else’s pasture is a form of theft, and also has a customary compensation. Theft is usually made right by paying an equal value. If the compensation is significant, like for a killing, it may be paid over time.
 
If someone is unable to pay the compensation, then his family will pay. They are entitled to remind the wrongdoer how foolish he was, and will keep an eye on him so they don’t have to pay again. If his family gets tired of paying for a repeat offender, they can disown him. Unless another family wishes to adopt him, he is an outlaw, no longer a member of the clan.
 
We expect our leaders to be examples. If a priest or a member of the clan circle violates the law, he pays double compensation.
 
When the law is broken, one of the sides sends a delegation to the other, to try to keep the dispute from spreading. They will arrange for a court to settle the case. This consists of one judge from each side, usually elders who remember past cases. The aggrieved family will investigate the incident before presenting to the court.
 
The court is held away from the community, to avoid bias. Both sides can have advocates, who are chosen for their speaking and negotiating skills, and their good reputation. Once the judges come to a decision, the parties have the opportunity to seek a new hearing with different judges plus a neutral judge appointed by the chief. If they cannot agree to that decision, they may appeal to the clan chief.
 
Hyalor’s Law also applies when a dispute is between members of two clans. But we have no king to appeal to, and sometimes we have no choice but to balance uncompensated deaths by taking a life from another clan. We would make a formal declaration of feud, and would never do anything but restore balance.

This is inspired by xeer, from Somalia, which works in the absence of a central authority — perfect for the migration period, which was Hyalor’s main concern. The fact that compensation is central is also convenient, since it connects to the herds and goods that you’re worried about at the clan level. The clan chief’s involvement in appeals is presumably a relic of the more hierarchical Yelmic law of Nivorah.

The game doesn’t portray the full workings of Hyalor’s Law, since the idea is to handle disputes below the clan level. For example, the illustration is clearly of an appeal, since there are three judges (and the parties have involved the clan chief in their dispute). Presumably there are legal cases all the time (probably more often when clan mood is low!) but since your focus is the clan as a whole, you don’t need to worry about most of them. We only present the ones with interesting clan-level consequences.

Finally, the above are the notes that informed “Ride Like the Wind.” Generations later in “Lights Going Out” your clan may be using a different legal code.

Advice

One of the features that makes Six Ages (and King of Dragon Pass before it) unique is how it handles advice. Certainly games have had advisors before (such as Hidden Agenda or Civilization II), but in Six Ages your advisors are actual playing pieces, as well as part of the user interface. They are player agents and contribute to immersion, but their primary role is to provide information.

Advice about building a ditch

Advice is given by notable leaders you pick to sit on the clan council. As characters who live in Glorantha, they know how the world works, the customs of your culture, and what has gone on before (both the pre-game history and game events). We don’t expect you to know all the lore, because an advisor can give you a summary. They’re keenly aware of the agricultural calendar and stored food. And they can suggest actions that would be obvious to someone living in your clan.

Explanation of Wealth concerns

We leverage this to supplement the user interface. The dashboard (next to the menu buttons) gives a very brief summary of various concerns, and advisors can give a more detailed explanation. Advice on the Magic screen summarizes your temple maintenance costs. Advice for the Raid dialog will remind you about clans you’ve promised to raid. Wealth screen advice estimates your market profit and craft production.

Advice with two recommendations

In story events, advice is often associated with recommendations. An advisor may summarize the situation or try to predict the consequences of different actions, and also suggest one or more responses. Other times, they may just let you know what the tradeoffs might be, but not suggest how to resolve them.

Erkent family has little sympathy for the Dasano family

Although their job is to advise you (and carry out your decisions), your council is composed of people with personalities, which may flavor their advice. This doesn’t mean their advice is incorrect, but an advisor may tend to see only one side of certain issues. It can also provide a hint as to how well they can execute an action — a kindly character may not be ideal to try intimidating another clan, though they’ll give it their best shot if necessary.

Calling out Alakorde for a slur

Sometimes those personalities clash, and you’ll see advisors talking to each other. Here’s the code for one such exchange:

[Relandar Priority] The Buzzard People should try harder to fit in. [4]
[Erissa Priority AND RelandarOnRing] <r>, the correct term is not “Buzzard People,” but “adoptees.” [5]

Characters sometimes have other human relationships to each other, particularly since the Six Ages games are multi-generational.

Getting all this to work well can be a tricky balance. In a scene, we try to make sure that you get the information you need to weigh the responses. This usually relates to the skills of your advisors. Balancing the Seven Families usually comes down to Leadership, so we try to make sure you get the best possible Leadership advice. Gauging relative military strength is the Combat skill, but if nobody on the circle has a high enough Combat ability, you won’t be shown that insight. Sometimes an event relates to a specific leader, or the god they worship, in which case we mark that advice as being higher priority. Most advice is context-sensitive (e.g. you’ll be reminded if your herds are getting low), and sometimes these sorts of conditions are also considered as priority advice. A character might give different advice depending on whether or not they’re the clan chief, or what family they belong to. On the other hand, there’s no need for two people to remind you that clan magic is depleted.

It’s also tricky in that what advice you get not only depends on the situation, but who you have on the circle. If none of them worship Elmal, you won’t get any Elmal-specific advice. If two of them happen to hate the Wheels, you might get that twice. Sometimes someone else has already given the useful skill advice, and an advisor’s traits don’t match any personality advice. There are actually two levels of fallback advice to help make sure everyone has something interesting to say. Since situations when advisors will comment to each other are rare (the circle needs two or even three characters with a particular personality or religion), we try to give these priority.

“I have good ideas for fighting broos”

It’s worth noting that each chapter has somewhat different aspects to determine advice. Several generations after the events of “Ride Like the Wind,” it might not make as much sense to be concerned about your ancestral home, and more sense to worry about new threats. And the political situation within the clan is different.

Right now a major QA focus as we develop “Lights Going Out” is to scrutinize the advice and make sure it makes sense. If a recommendation doesn’t match what a character suggests, it might seem like a minor bug, but it actually undermines the entire idea of useful advice. Your advisors don’t know everything and they may be biased, but they aren’t stupid. There are also opportunities for advice specific to characters that might not have existed when a scene was originally written.

To summarize, I advise that you read the advice.

Not Branching

Although people sometimes describe Six Ages (and its predecessor King of Dragon Pass) as “choose your own adventure” games, they are definitely not branching narratives. Choices do lead to other choices, but not along a predefined path.

Branching content can give the player a lot of choice, but even if you have only two choices for each decision, you can end up with a huge number of paths. And you’ll be creating content for pathways that will only rarely be visited. There are a variety of techniques creators use to deal with this. Six Ages and King of Dragon Pass address the problem by not turning their decisions into branches.

I’ve written (and spoken) before about how KoDP and Six Ages avoid the combinatorial explosion of branching by providing a political-economic framework to give your choices context and meaning. The narrative is broken into what we call “scenes” (they can also be called “floating modules” or “storylets”). Scenes are often picked at random, though with conditions to make sure they’re relevant or interesting. Typically they’re written to work in any situation. For example, a neighboring clan wants something from you. Whether they’re unfriendly or your allies makes a big difference, as does whether you can afford to pay what they ask (either in wealth or relations with other neighbors). Your response affects relationships (turning down a request has the potential to end an alliance), wealth, or internal politics (your own people have opinions too). This gives an implicit connection to the next scene (we lost a friend, we’re broke, people are grumpy, etc.). Essentially, most scenes connect to other ones—less directly than by branching, but more flexibly. And it’s easy to have more than two choices, to give players a wider range of action.

One way scenes connect seems rare in narrative games: a choice may trigger another scene at a later date. Plenty of story games have a time element (either by each choice advancing a clock, or treating time loosely and advancing the clock when conditions are met). The multi-generational scope of Six Ages means we can run a followup scene a year (or more) later, after ten player actions and another batch of scenes. For example, if you claim poverty, your neighbor may tell you they’ll be back next year. This is arguably a branch, since you made a choice and it leads to a repeat of the event. But intervening events may have changed the context, or invalidate the followup (for example, if a feud breaks out they won’t be back with a friendly request). It’s much more an emergent narrative than a branching story.

Diagram showing connections between scenes and responses

Six Ages does have scene sequences that are pretty close to a standard branching narrative. These tend to be a lot more complex for the QA team to test, since all the possible paths through the set need to be traversed. This is the chart that Jess made to track how a 6-scene sequence worked. The lines of flow are mostly implicit connections—choices in the second scene can impact your choices in the third or fourth scene, etc. They aren’t branches—in most cases, previous choices don’t preclude possible responses. But they’re distinct paths that provide context.

Our writer, Robin Laws, just finished writing another set of related scenes for Six Ages: Lights Going Out. I just finished coding them (into our OSL scripting language) today, so QA hasn’t had a shot at them. But I did my own chart to help with coding, and hopefully with testing. (This one just shows scene flow, not individual responses.)

Sketch showing how scenes might flow

Without the direct branching of “If you attack, turn to page 24,” sequences like this make use of state variables to keep track of what happened previously. This is hardly unique to Six Ages. All the scripting languages I’m familiar with let you do that. This sequence seemed particularly variable-heavy, however. I counted 25 variables that coordinate between 8 scenes. Some of this is for narrative continuity (what we learned and who we learned it from), tracking how often something has occurred (it may not be possible to do it again, or it may impact how easy a course of action is), which leaders were prominent in a previous scene, or magical effects. Not surprisingly, there’s an additional variable that can relate your decisions here to scenes that aren’t part of this set.

The goal of all this is to tell an interesting story that emerges from multiple player choices (not just story choices), unfolding after multiple game years. Almost as important, if you replay the game, you can make different choices for a different story—but even the same choices can give a different story, because the events can take place in a very different context.

Word Gets Around

In Six Ages, your relationships with other clans are vital. The game tracks a number of factors for each clan, including how much they like and respect you, any slights they hold against you, and whether they have a formal alliance or feud.

These factors are all dynamic. They’re adjusted not only when you interact with a specific clan, but also when you do something that is likely to be newsworthy and spread to other clan. For example, in one event a combat hero can gain the respect of a clan and its neighbors. This OSL code handles that:

otherClan.fearsUs += 40
otherClan.likesUs -= 40
# all clans adjacent to otherClan .fearsUs +=20
a = AdjacentClans(AllClans, otherClan)
foreach c in a {
    c.fearsUs += 20
}

Other events have even wider impact (this one on all Rider clans):

# LikesUs+=3 * q (all Hyaloring otherClans)
h = HyaloringClans
foreach c in h {
    c.likesUs += 3 * q
}

But these are just numeric values. As Sin Vega discovered in her attempt to play as a petty jerk, your deeds can earn you a more specific reputation:

“We are known for our rudeness”, says the lawspeaker later that year. It’s nice to feel appreciated.

“We are known as backstabbing weasels”, says the lawspeaker at Sacred Time. I might have gone too far this year.

These reputations reflect a suggestion (case 8801) from our QA lead Liana Kerr, who wanted a way to give players a stronger connection to their clan.

Behind the scenes, there are a number of trends or events that you can become known for. A single act of mockery towards guests won’t give you a valley-wide reputation for rudeness. But they accumulate, and if you keep at it, sooner or later this will be the most significant thing you’ve done. By the same token, attacking your allies is a shocking breach of tradition and protocol (not to mention good sense), and that gets everyone’s notice. Over time though, any of these can be less notable in people’s memory if you no longer do them.

Our explorers visit the Great Glacier

So each “known for” item has a numeric value, which indicates its significance. Visiting the Glacier is a big deal, but not as unusual as managing to defeat the Alkothi. But if you raid several times each year, the raid score will accumulate until it outweighs defeating the Hell Men. Or perhaps by then that feat was too far back to matter any longer, since the score for each item is reduced every year.

BecomeKnownFor("glacier")
An advisor says, “The clans of the valley know us for our many shrines.”

An advisor says, “The clans of the valley know us for having heroic clanfolk.”

Most of these actions are also tracked numerically through the standard relationship system (if you can defeat the Alkothi, you will gain much respect throughout the Valley), but others are a great way to reflect other player accomplishments like temple building or nurturing heroes. And the next chapter, “Lights Going Out,” will have items specific to its story. It’s a flexible system (we added several more late during development), and is a colorful and concise way to comment on the player’s story.

Questionnaire Metrics

I don’t think data-driven game design is the best approach to a narrative game, but it’s a valuable tool. It’s certainly worth gathering data to see if players are actually experiencing the story the way the designers intended.

Unfortunately, it appears that in my eagerness to measure outcomes, I went past the design limits of Flurry Analytics, and am not actually tracking everything I thought I was. But I am capturing a lot of anonymous data, and I thought it might be interesting to share some of it.

The clan questionnaire establishes the backstory of your clan. As usual, there is no best response, though a few affect difficulty. The questionnaire gives you an interactive introduction to the game, and lets you decide on how you want to play (these are the choices your ancestors made, and determine how they will react to your choices made in other contexts).

Which of the gods did your ancestors favor?

Players had no strong preference. 53% picked the Earth Goddess.

Which famous event of the gods did your ancestors support?

The most popular gods to help were the trade goddess, the warlike sun, and the cow goddess.

Who was your ancestral enemy?

The forces of water were a slight favorite. Perhaps players remembered that this was a weaker foe in King of Dragon Pass. (That’s not necessarily the case in this game.) Presumably the elves and dwarves are poorly represented here because both are not early enemies, and are available as choices only if you pick “Our worst danger came later.”

Which god did your ancestors bring from the Golden City?

Apparently our players were keen to be master redsmiths, over half of them making sure to bring the god of bronze working as they fled their home. 25% retained literacy. Only 5% brought the secrets of glass making, which I guess is represented in the artwork (other than the user interface, I don’t think we explicitly show any glass).

Which group of the First Division were your ancestors?

Given the importance of herding to the Riders, it’s not surprising that 44% of players decided that their ancestors were the best herders in the First Clan. I always figured that the most dissatisfied members were the ones who most wanted to split, but this isn’t a popular choice.

Who did your ancestors meet in the Second Migration?

The most popular choice was herders, followed by farmers.

Almost everyone adopted them, and most players made them full citizens of the clan.

How hard will life be?

The final question is primarily to establish your starting conditions. This is a difficult game, so it’s totally fine to start at the Easier setting. Most games were started at Normal. Probably players only play at Harsh once they have mastered things.

Analysis

Getting metrics is relatively easy. Effectively analyzing them can take a lot of time (I worked on one game where there was no analysis until after the game shipped.)

Actually taking action can be tricky. I’m surprised that so few players chose dwarves or elves, but I think it would break the story flow to give them more equal billing (as well as presenting more choices than necessary at one point).

Although I don’t think any of this particular data will result in design changes, we have been doing some tuning based on what we see. It may be subtle, but some of that will be in the next update.

Tags are Magic

I was going through some playtester comments, one of which noted that diplomacy-related magic wasn’t as useful as it might be. So I did a quick review of the four blessings that seemed like they would relate to diplomacy. And while I’m not sure I was looking for exactly what was reported, it did seem like they could be more important.

Understanding: Helps our dealing with foreignersI’ve mentioned before that scene tags have been very useful. One of the diplomacy-related blessings is called “Understanding.” It’s implemented as

+1 in scenes tagged @foreigners

Diplomatic missions can be sent to a variety of people, so scripts like news_GiveGifts (which reports on simple gift-giving) can’t simply have the tag. But tags can be dynamically added, so making the magic more broadly useful was a matter of

RemoveSceneTag(ThisScene, "@*")    # Any previous dynamic tags
[otherClan.culture = 'other] AddSceneTag(ThisScene, "@foreigners")

Even though it takes two lines of OSL, I like this better than something like

[HasBlessing(ourClan, "Silvertongue")] b += 1

(which another blessing needed) because it affects the entire script, rather than just a specific branch.

The game makes extensive use of tags. The scene compiler uses a few to make sure scripts with very particular conditions are triggered from a single spot. Unit testing uses ten tags so it can set up the right context for running scripts. The UI code checks for tags that determine that a scene needs special elements like a text field. And there are over 100 tags that help categorize scripts, including whether magic applies to them.

Tutorial

One of my goals was to make sure the game had a better tutorial than King of Dragon Pass. Its tutorial was fairly brittle — it was too easy to get off track.

Tip about emissariesWe came up with a different approach, which worked fairly well for explaining all the parts of the game. When you first visit the Relations screen, you get a note explaining it (and to avoid a giant info dump, get more information the next time). There are no exact steps to follow, so the tutorial can’t get confused. And you can learn about a dialog when you get to it, instead of trying to learn everything in a short period. Our playtesters all seemed to like how it worked.

But our playtesters tended to be self-selected as having played King of Dragon Pass. When I added another QA tester who had not played before, and had a friend try out the game, it became apparent that the reactive approach didn’t work well for new players.

Some smaller fixes helped. For example, while the contextual tips served the purpose of a tutorial, they weren’t in the traditional form of a small subset of the game. New players didn’t consider this to be a tutorial. So we renamed our tutorial to “Guides.”

But nothing really helped brand new players get oriented to the game. So I came up with a new design. Rather than try to show you everything (like the King of Dragon Pass tutorial or the Guides), it tries to explain a few topics (particularly things that might be a bit different from other games). It’s even more directed, so you can’t accidentally do the wrong thing. And it hides information, so it’s less distracting.Tutorial Summary

The Tutorial doesn’t go through an entire year, and you can’t continue the game. Its purpose is to give you enough understanding so that when you do begin a real game, things make more sense. And do so interactively, so you can learn by doing.

The context-sensitive Guides are still there, since they cover things the Tutorial doesn’t. And there’s still a quick introduction and a detailed manual.

Right now we’re testing the new Tutorial, but it seems promising so far.

Difficulty Level

When I started seriously thinking about Six Ages, I decided I didn’t want to have difficulty levels.

This is partly because King of Dragon Pass didn’t do a particularly good job with them. The hardest setting was certainly harder than the easiest one, but I think calling the easiest one “Easy” was a mistake. The game itself wasn’t particularly easy, and if a player thought they were experienced at similar games, they might try a harder setting and become frustrated. (I changed the labels to begin at “Normal” as part of the version 2.0 reworking, to clarify this.) And the effects of the settings weren’t explained. In general, King of Dragon Pass stays immersive and doesn’t mention game terms, but this is before play begins.

Even if they had been explained, it’s one more thing to decide before you get to the meat of the game.

So my plan was to focus on tuning the game, and make sure that was right.

Then I asked Ken Rolston to give some feedback on the latest Six Ages build. One of his key items was that he missed KoDP’s difficulty options at the beginning of a new game.

We had a short discussion about this, since Ken said, “when working with Raphael van Lierop on The Long Dark, the single most important thing I worked on was persuading Raphael to add difficulty levels.” I’m pretty sure Ken made many other contributions, but at the very least I needed to reconsider my design.

Certainly difficulty levels are a simple way to accommodate players of different skill. They also hint at replayability (your future self after winning is likely to be at a different skill level, so you might want to try a more challenging level). And while Ken didn’t say this, if he missed difficulty levels, other players might as well. Starting players off with even a minor disappointment isn’t the best experience!

So I will be adding three levels of difficulty: Normal (since this is how I expect people will play), Hard, and Harsh.

I haven’t figured out exactly what these mean, but the basic idea is that Hard will make careful resource management more important, and Harsh may feel like all Glorantha is against you. The game system has a lot of difficulty levers, including

  • starting resources
  • likelihood of raiding
  • level of external threats (e.g. Undead and Chaos in KoDP)
  • harvest quality
  • various parameters for adaptive difficulty

I want to show an explanation of the chosen difficulty, so I mocked up a couple UI designs. Now that it’s in the game, I may further tweak the intro (because it is indeed one more choice, and takes up space on a screen that may make other items less prominent).

And I’ll start adjusting things to see how big a difference it makes.