25 August 2013

Anatomy of a Scene

Thinking of entering the Scene Contest, but not quite sure where to start? Let’s look at the basics of scenes.

A “scene” is what we call the basic interactive situation in King of Dragon Pass. It always has an illustration and a choice of responses. In most cases, it also has advice, provided to the player by the most appropriate ring member.

Since the story arc of the long game can take multiple generations, many scenes are designed to repeat within a game. (For the farmers to be unhappy is not unusual.) Others happen only once (babies in shield don’t show up every day), or happen in response to specific situations (tribes only form once, so you only get news about this once, though hopefully in every game).

Here’s a typical scene that happens to occur in the tutorial, as coded in our scripting language. (It’s edited to show only the more interesting parts.)

scene: scene_48SoraWantsWhiteHorse
scene002, right, [sora >= 0 AND .horses > 5], mayRepeat

The second line indicates which piece of art to use (here we reuse the illustration of Sora Goodseller) and which side the text appears (in other words, usually the less interesting part of the art). Next is a condition. It doesn’t make sense for Sora to live forever, so the scene shouldn’t happen after her death. And it’s no fun being asked for a horse when you have none. Assuming the condition is met, this scene occurs randomly. Finally, this scene can repeat during a game (horses don’t live forever either). Scenes don’t repeat for a number of years, however.

Scenes start by setting the, well, scene. Here, there’s a little logic so the text flows better if she has been by before. Note that the situation is also written to the saga.

if [sora > 0] then {
text: Sora Goodseller, a trader-priestess of the talking god, Issaries, returns to trade.
} else {
text: Sora Goodseller, a trader-priestess of the talking god, Issaries, comes to trade.
}
text: In addition to the usual exchange of goods, she asks if we have any white horses.
saga: The Issaries priestess Sora Goodseller came to our clan and asked if we had any white horses to trade.
if [d3 = 1 AND .horses > 5 AND walkthrough = false] then {
w = true
h = "<d2:mare/stallion>"
text: We do have a single white <h> in our herd. Sora made an opening offer of 3 cows worth of goods.
} else {
text: Although we have some light grey horses, none can truly be called white.
saga: We had no white horses.
}

To make things more repeatable, there is a random chance of having a white horse (tracked in the variable w). (For simplicity, the tutorial never has one.)

music: "CouldBeGood"

Each scene has accompanying music relating to the situation.

And now to the responses. These may be shown depending on various conditions. In this case, whether we have a white horse or not. (Remember that the scene won’t run unless we have at least 5 horses, so the response doesn’t need an additional condition.)

[NOT w] response 2: Apologize for not having one, and throw her a feast.
{
text: Sora said that the lack of a white horse reflected poorly on neither our generosity nor our hospitality, and the feast was proof of both.
saga: Embarrassed that we had no white horse, we gave her a feast instead.
.mood += 2
.cattle -= 5
}
[w] response 3: Give her the white horse.
{
otherClan = RandomClan(KnownClans)
text: Sora inspected the horse closely, then insisted on paying for it. She seemed very pleased with the <h>, which she named Snowflower. After taking it for a ride, she told us about her visit to the <otherClan> clan, which had spoken ill of us. However, we realized it was due to a misunderstanding, and she agreed to let them know of this.
saga: We gifted Sora with a white <h>, but she insisted on paying. She helped clear up a misunderstanding with the <otherClan.plural>.
otherClan.attitude += 3
.goods += 4
.horses -= 1
}

These two responses are fairly self-contained. In response 2, we slaughter some cows for a feast, and the people’s spirits raise. Response 3 has some other consequences.

[w] response 9: Sell the white horse for a treasure.
{
text: “I have no magical treasures I can offer, I’m afraid.”
SceneContinues
}

This response doesn’t end the scene. Responses like this can make the scene a bit more complex, or allow the player to make multiple choices (such as sacrificing for magical aid before embarking on a mission).

Most scenes don’t have 9 responses! This one basically has twice as many because it needs to be interesting if you have a horse or not. Our original plan was that every scene have 5 responses. But 3 is enough. The main thing is that there shouldn’t be a response that is so obviously good that players would always pick it, or so obviously bad that they would never choose it. In the first cases, there wouldn’t really be a choice at all. In the second, we would be writing (and testing) a useless response.

Of course, it’s OK to mention other choices, as in some of the advice.

Advice:
[Animals >= 2] A horse is usually worth four cows. [46]
[Animals >= 3] A horse is usually worth four cows, but white horses are fairly rare. [4789]
[Elmal] White horses are sacred to Elmal and to his wife Redalda, the horse goddess. [0]
[Uralda] You can’t get cheese or cream from a horse. [36]
[Trickster AND NOT w] We could paint a horse white, I’ve done it before. [5]
[Daring AND NOT w] Let’s go steal her a white horse! [0]

Advice can be conditional as well. Note that the quality of the advice depends on the speaker’s Animals skill. In general, the game gives skill-based advice first, and then advice that depends on religion or personality. Also note that most of the advice includes recommended responses.

That’s the basics: situation, a few responses, advice. Scenes can be a bit more complex by asking for additional responses. Here’s one from a scene about a suitor.

response 2: “He must first prove himself worthy.”
{
saga: We required him to prove his worthiness.
NewChoices:
text: <l> asks you to name a test for <suitor>:
response Skill at arms
{
}
response Poetry
{
}
response Pig calling
{
}
response Plowing
{
}

Although the examples here are in our OSL scene language, we didn’t expect our authors to write code. Nor do we for the scene contest — just come up with the basic situation (and optionally a way to illustrate it), reasonable responses, plausible consequences, and some advice.

20 August 2013

Scene Contest

With version 2.2.1 out of the way, it’s time to worry about the next update. We want to add more art and scenes, and we want your help!

Pocket Tactics has agreed to help run a contest. Basically, you come up with the basics of a new scene, and we commission the art and put your idea into the game.

We wanted to do something similar years ago, but since we couldn’t add new art to the CD ROM version, there were too many constraints. This time, you can go wild (as long as it fits the already established game).

We really look forward to your creativity!

18 August 2013

Art Constraints


We always like hearing player suggestions. Several of them will be in the upcoming 2.2.1 release, and we encourage you to send them in via our bugz email. (Not only does this go into our tracking system, but we can ask for clarification if necessary.)

One suggestion came in an App Store review: “Illustrations depicting the existing special combat events where certain nobles receive the favor/ire of the gods.” This would be cool, but it really isn’t practical.

When we created King of Dragon Pass, we wanted to make a game with a lot of replay, and also a game that a small team could create. One approach to the former was to randomize player personalities. Each game, the woman with the hat will be a different person. One time she may be extremely pious but stingy. The next, a xenophobic poet. We figured part of the game’s charm would be learning about your playing pieces through their advice and actions.

So when your book-loving ring member makes an extravagant purchase, it won’t always be the same person doing it. It could be any of the 70+ faces. And of course, people age during the game. To keep that manageable, there are three ages for each face. We didn’t want to draw 210 versions of the scene (or have 210 overlays, especially since this wasn’t the best fit for the ink and watercolor art style). So the art direction was to avoid showing any of the clan ring. (There are a small number of exceptions, and if you’ve won the long game, you’ll know how we typically resolved this.)

Back to the suggestion: combat interactions are focused as much on the potential hero as the situation. It’s true that many of these would not require 210 versions (most of the women would not suddenly be blessed by Orlanth), it would still be impractical to do dozens of versions of an illustration.

Could we come up with art direction that would allow for the various situations to be illustrated, but not show the principal character? Possibly. But the situations weren’t designed to work under this constraint, and many would be hard to portray. Here is the prose from just one battle situation:
[x = 1] text: The <otherClan> warriors see their chance and prepare to rush <ourHero.null><him/her> in a group.
[x = 2] text: Several formidable enemy warriors converge on <him/her>.
[x = 3] text: The enemy warriors nearest to <ourHero> step out of sword-range for a moment and laugh at their chance to take <him/her> down with superior numbers.
That’s really three different images.

In some cases, there’s an obvious illustration (e.g. an enemy flying over the battlefield), but because we wanted to enhance replay, this is often not possible.

It’s certainly possible that with enough effort, we could come up with the right illustrations (or simply do more of them). But I think the word pictures that Rob Heinsoo and I came up with do a reasonable job. We varied the text to give a different feel than the typical interactive scene (which allows for reflection and discussion by the ring members rather than a snap decision).

So the good idea of illustrating battle situations is at odds with the goals of maximum flexibility and reasonable cost. Perhaps some day we’ll have a way to implement it, but for now, we’re going to apply our resources to adding new story content instead of enhancing existing content. More on that in a future post.

12 August 2013

CSR Nominee

Somehow I missed the fact that King of Dragon Pass had been nominated for a Charles S Roberts Award this year, as Best Science-Fiction or Fantasy Computer Wargame. We didn’t win, but it’s still quite an honor.

(Shenandoah Studio’s Battle of the Bulge, which I worked on, did win two awards.)


07 August 2013

Future Updates

Just a quick update:

Apple will be releasing iOS 7 “this fall,” and we want to be sure KoDP runs well under it. There’s a cosmetic issue we can work around, so we’ll be making a small update to do this (as well as fix some bugs). This release will also add a convenience feature: the Magic screen will show you any blessings that are in effect due to a sacrifice. (Including sacrifices made automatically as part of tribal agreements.) It will probably be out in a few weeks.

Then we plan to add new content. This is a much more major undertaking, as it involves commissioning new artwork, writing new scenes, and testing. This will take longer, in part depending on how many scenes actually work out. I’m hoping it comes out in Autumn, but can’t promise anything.

By the way, most of the changes in the upcoming 2.2.1 are due to player reports. Please let us know if something isn’t quite right.