Month: August 2016

Like King of Dragon Pass, Six Ages will include magical treasures. They’re Gloranthan (they were in the original White Bear & Red Moon game, and lots more in the subsequent Nomad Gods), and they are a useful reward and fun to collect.

And they’re essentially all unique, which is great as a player but less wonderful as a developer.

As a developer, I want treasures to be easier to work with this time. KoDP had some annoying limits on how many there were (adding a treasure meant breaking the file format of saved games), which was an obvious thing to improve. But KoDP had the implementation of treasures scattered everywhere. Basically, each treasure needed specific C++ code, plus it might have to be listed in an IsBattleTreasure or TreasureThe (it’s “Vinga’s Comb,” not “the Vinga’s Comb”) function.

First, we designed as many as possible with script tags in mind. In other words, Robin Laws would describe a treasure’s effects as “+1 to Bargaining and Diplomacy in scenes tagged @outlanders.” Then, I’d specify treasures as Lua data like

Part of the advantage is that the details of the treasure effect are all in one place, next to metadata (such as name, description, value, use of “the,” and whether a treasure needs to be chosen in battle).

The data-driven approach also handles things like “mood+=13 on any Food win”

onWin = {"Food", "mood", 13},

Combat has some additional complexity, so “+1 Combat when raided by elves” is the Lua table

Quasi-Treasures

A treasure is now a way to encapsulate a conditional modifier. I started to notice another pattern, where player choice could result in a modifier. Rather than come up with a new scheme, I just made new treasures. (I called them quasi-treasures because they act like treasures but don’t look like treasures. Notably, they don’t appear in lists of treasures in the user interface.) In fact, one of the examples above is actually a quasi-treasure.

Treasures are typically gained permanently and quasi-treasures often go away after a certain number of years (for example, the visiting priest’s blessing lasts five years). This can be handled by the normal GainTreasure/LoseTreasure functionality (i.e. just queue a script to run in five years that executes the LoseTreasure function).

Pictures?

We discussed showing treasures, and Jan mocked up a treasure illustration. However, I decided against a visual representation. It’s a lot of work just designing what dozens of treasures look like, let alone getting all the pictures. More importantly, it would increase the difficulty of adding new treasures in an update (which we did twice in KoDP, despite the hassle), since they would need pictures.

One of the ways that Six Ages is following in the footsteps of its predecessor is to use very distinct art styles for different purposes. Here’s a brief look at the directions we’re going.

The Distant Past

Although we debated a variety of styles, in the end we decided to stick with a “woodcut” look to represent things that took place a long time ago (i.e. for the clan questionnaire). I found our artist because she had a show at the gallery a few blocks away. Here’s a look at a Gods War event by Damara Kaminecki.

The Present

Keeping the ink and watercolor style for the bulk of the illustrations, which are set in the here-and-now, was not really questioned. We did consider different nuances, and Jan Pospíšil did a few test pieces. There are a number of artists working in this style — this is one of Jan’s early pieces, which helped establish the tone. (Note that the trolls are awake early, since the sun has not fully set.)

The Otherworld

The world of the gods is key to a game set in Glorantha, and we again wanted a look that was very different from the mundane world. We didn’t have any preconceptions, though once again we were drawn to Magic: The Gathering artists. But we ended up going with a local artist, who has a distinctive style. Here’s Michelle Lockamy’s take on a Gloranthan archetype, the blue dragon.