Gold Master

Six Ages 2 is now at “Gold Master” status. All three stores (Steam, iOS App Store, and GOG) now have what is almost certainly the final build. We’re not dropping a gold CD-RW off at manufacturing (like the 1999 release of King of Dragon Pass), but there’s still some lead time most of the digital stores need. As do reviewers.

Priests in tattered robes bearing the fire rune offer us a nearly life-size statue of a golden man. Given the weight of gold, they visibly strain to hold it up for our inspection.

Everything is still on track to release on 21 August. You can wishlist the game (on Steam or GOG), or pre-order from the App Store.

The QA team and our beta testers are still finding issues, and we have a bunch of them fixed and lined up for an update. But they’re minor or deal with unusual situations. I want to thank all of them for helping get the game into a good state.

Year In Review: 2022

Lights Going Out

Obviously, we didn’t meet our goal of completing the game this year.

Chart showing scenes coded and scenes fully tested

We are a lot closer. The “exhaustive scene testing” chart isn’t a complete picture, but it’s one way to visualize the progress. For what it’s worth, there are about 36% more scenes than “Ride Like the Wind” (which is one reason it’s taking so long to wrap up).

Chart of mood and food

We’ve also been testing the balance of different victory benefits for games continued from the first chapter, and tracking emergent behavior from different play styles. Is it possible to win without anyone starving? Does clan mood go into an irrevocable dive? Can you quash the local impact of Chaos? Can you still win at Harsh difficulty? The game tracks a number of values, and I graph these so I can spot unusual changes. If there’s a big change, I can check the logs to see what caused it.

A less tangible factor is how the game feels. Testing isn’t really the same as playing, but I think we’ve identified a few places where we needed to create more stories. (That’s the rightmost green circle in the chart.)

Magic screen from the Mac build

The first game was set in the Storm Age. This one takes place in the Chaos Age (or Great Darkness). Our plan was always to adjust the user interface to reflect the difference. Our publisher’s art director, Xin Ran Liu, gave us new assets that reflect your clan’s rise to glory (buttons are now metal) and the decay of the period (buttons are cracked or suffer from tin pest).

The music also needs to reflect the differences, as well as different story themes. We’ve made some good progress.

Our development process is dependent on iOS (for build automation, bug reporting, and unit testing), but late this year we made sure that the game still builds for Windows and macOS, and has the necessary UI changes. I often seemed to be fighting the development tools (breakpoints have been my nemesis with Unity since 2012) and various compatibility issues. But on the plus side, my tools do seem to be working better with Windows. The desktop builds are basically ready to start testing.

OBS capturing the Six Ages main menu

Since we have the game running at 16:9 with a cursor, we can make a game play trailer, which we need to create a Steam page. (I expect Kitfox Games will be setting that up next month.) I’m sure I’m only scratching the surface of what OBS can do, but it does let me capture video of just the content area of the game window.

There’s still artwork, music, and testing to complete, but things look much closer than they did a year ago.

Ride Like the Wind

Clan screen on iPad mini (6th generation)

Our focus was on finishing “Lights Going Out,” but since the code base is the same, we released an update to the App Store to deal with the latest iPad mini. Unlike desktop, which has fewer screen shapes and typically letterboxes, the iPad and iPhone builds use every available pixel. The original design was back when all iPads were at least 768 points high, and things like the side menu needed a little tweaking for the 744 point mini.

World Events

COVID continues to be an issue. Our summer intern caught it and wasn’t able to do as much testing as we’d hoped. Please wear an N-95 mask when you’re out in public!

Russia’s attack on Ukraine hasn’t had a direct impact on our team, and so far HeroCraft (which is based in Russia) has been able to keep publishing King of Dragon Pass for us.

Thanks to Elon Musk’s mismanagement of Twitter, we’re now also posting on Mastodon at mastodon.gamedev.place/@asharp.

What Next?

The Six Ages games have taken a lot longer than I expected to create. In 2023, I may be able to start something shorter.

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.

Year In Review: 2021

RIP Stan LePard

Unfortunately, Stan LePard, who composed the music for Six Ages: Ride Like the Wind and King of Dragon Pass, passed on unexpectedly in February. Stan was great to work with and created some wonderful music for the games.

I just learned that there’s a GDC scholarship in honor of Stan.

Lights Going Out

The team has been pushing to complete the second Six Ages game. Obviously, we didn’t get there in 2021.

But Robin Laws did finish writing the interactive events, including a second batch suggested by QA. There’s still a chance we’ll need a few more, but this means that the design focus is now tuning, not creating.

Since the writing is done, we know pretty much all the art the game needs, and are now working in a variety of styles (depending on what’s being illustrated).

We’ve been testing the game all along (an advantage of creating a sequel that can use the same core code), and that’s been accelerating this year. As before, it’s a mix of making sure each response of each scene works, making sure the game works from start to finish, and making sure that the game is challenging and fun. QA also verifies bug fixes to make sure they actually fix things, and don’t introduce other problems. (The past couple weeks have had some good examples of why that’s important…)

Ride Like the Wind

While our focus has been the second game, we have been fixing some bugs in the original. There were also some issues that only affected iPad or iPhone, so we ended up taking some time and making an App Store update.

The Future

We’re not going to ship a game before it’s really done, but I’m hopeful that we’ll be able to release “Lights Going Out” next year.

And maybe start a new game.

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.

Year In Review: 2020

TL;DR: We’re still making games.

COVID-19

The global pandemic hit all of us. Fortunately none of the team fell ill, though family members did, and there were several exposure or symptom scares. And while the team is distributed and work from home, that’s not the same thing in the middle of a pandemic, and when can’t really go anywhere else.

And of course we weren’t able to have occasional face-to-face meetings at conventions — or see fans.

Lights Going Out

Art by Ellen Barkin

We’ve been working on the next Six Ages game. “Lights Going Out” will let you continue the story of the clan you guided in “Ride Like the Wind” (though you can start a new one from scratch). Perhaps 3/4 of the events have been written and coded (with games like these, it’s hard to know exactly how many there will be, since we often add more towards the end, to fill in missing bits). And about half have been exhaustively tested. This is far enough that it’s now possible to play a significant chunk of the game without running into missing parts. Well, that’s what I tell myself, and then QA files bugs about missing parts.

Thumbnail by Jan Pospíšil

The exact art requirements are similarly hard to know in advance (since those new scenes may require new art). But I think well over half of the scene art is complete.

We just started thinking seriously about the endgame — what constitutes “victory” in a story game. Polishing and coding this is on the schedule for January.

There’s still too much uncertainty to talk about a release schedule, unfortunately. But it’s now far enough that we can start thinking about tuning, and testing the game as a whole instead of just in pieces.

Ride Like the Wind

Although most of the development effort has been on the new game, they share the same game system, and some “Lights Going Out” bugs are common. And we’ve been fixing bugs as players report them.

Luckily, there haven’t been too many of those, so I’ve held off on making a lot of updates. Plus, just making a release takes resources, and QA has been less available thanks to COVID-19. But I do expect a bug fix release next year.

Future

Last year, I mentioned prototyping a new game. A combination of events led to a digital prototype. There might well be a game there, but it’s still a side project to have in reserve.

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.

August Update

I don’t have to tell anyone that this has been a strange year. I don’t know if I can really blame 2020 on the lack of blog posts, however. Some of the progress is hard to show, and we want to have a few surprises when the next game comes out.

The COVID-19 pandemic did impact things. We’re pretty sure one team member caught it but had almost no symptoms (and at a time when there wasn’t any testing to confirm it). Otherwise there hasn’t been any direct impact, since the team is distributed and people work out of their homes. But that is still very different when other family members are now doing that too, or you can’t leave your home. So we’ve all been affected.

An Orlanthi magician is about to hurl a lightning bolt

Despite that, work on the next game, “Lights Going Out,” has proceeded. Currently, 317 scenes have been written and coded. Two thirds of them have been exhaustively tested. (For comparison, “Ride Like the Wind” ended up with 364 scenes.) Most of the non-scene writing hasn’t started, though there are currently two rituals running. (One of those may need to be reworked.)

We have a lot of great art. I don’t know quite what our target is here (since a lot depends on the not-yet-written scenes). But more has been completed so far this year than in 2019.

Although most testing has focused on individual scenes (the “trees”) in isolation, we have done some QA based on just playing (the “forest”). I think you could play for 13 years before running out of yearly content. So while it’s not at all balanced yet, the basic game still works fine.

A shaman sits with her drum, spirits swirling about her

Although the basic game is the same, different things matter. The game takes place generations later, so factions other than the Seven Families are important. And you’ll possibly be interacting with the supernatural in different ways. Plus, the supernatural will impact you in different ways. I’m in the middle of tweaking the map for this.

And speaking about both games, you can indeed load a game you won and continue it. A number of factors are brought forward. At least one was something that we hadn’t originally planned for. (You can certainly play “Lights Going Out” without having won or even played “Ride Like the Wind,” though we hope it will be a richer experience if you have.)

As I mentioned in December, we’ve also been prototyping some ideas for a different game. As I write, its fate is unclear. For what it’s worth, as a separate project it hasn’t affected the “Lights Going Out” schedule.

Unfortunately, that schedule still isn’t solid. It’s taken longer to get here than I’d like, but I think we have made considerably progress during a challenging year.