Showing posts with label contest.. Show all posts
Showing posts with label contest.. Show all posts

15 August 2021

KoDP on the web: 50 Years of Text Games / Storylets with Casting

 Emily Short just posted

Aaron Reed’s 50 Years of Text Games has now covered King of Dragon Pass, which I strongly recommend reading: the game used techniques that we’re still very much exploring and discussing now, including elements we might now refer to as storylets with casting (that is, storylets that assign characters to particular roles). Well worth a look if you’re interested in the structure, code, or writing process of that game, or storylet games in general. 

First, Aaron did a very well researched look at King of Dragon Pass. If you’re at all interested in how we made the game (and how our effort at selling it was received), check it out.

Second, Emily’s categorization seems pretty accurate. Our scenes (a term we used because of their similarity to scenes in a play) would now be considered storylets, and they’re chock full of assignable roles. In many cases, that role is a clan (a neighbor, a rival, an ally, etc.). It can also be a character.

Often the role is a requirement for the scene to be run. The scene condition is in square brackets on the second line of this script, the actual assignment is on line 4.

scene: scene_228LetsPretend

scene228, left, [ProDragonewtOnRing AND dragonewt.knowledge <> 'unknown]

music: "CouldBeBad"

p = ProDragonewtCharacter

text: Two children have been pretending to be the god Orlanth and Aroka, the blue dragon. Somehow, their play has gone beyond pretend, and magic is gathering, almost as if they were on a heroquest.

saga: Somehow two children playing at Orlanth and Aroka started a full-blown ritual.

[ProDragonewt Priority] The children may learn draconic wisdom from this experience. [1]

[Trickster AND ProDragonewtOnRing] Good one, <p>! [1]


This is a fairly typical script. The scene is richer if there’s a named leader who can be involved, and in general, we favor choosing leaders who are on the clan ring. Players have typically had an opportunity to learn a bit about their personality (as well as have invested in them as a representative of the clan). The advisor is curious to know about the summoned dragon, and another character offers a rejoinder.

(This scene was created by Lysander Xen as part of our contest, so it’s technically not part of the version Aaron was describing. The illustration is by Jan Pospíšil.)

Note that KoDP’s spiritual successor, Six Ages, also makes use of storylets. A blog post goes into more detail. But pretty much it’s the technique we pioneered in 1997.

24 June 2014

Scene Contest (and 14 other scenes) now available!

Some time ago, we held a contest for players to create new scenes. The winning scene (and another popular one), along with 13 other new scenes, are now in the 2.3 update in the iOS App Store.

One issue we faced was that we wanted to make sure players who have already played the game get to see the new scenes. This is potentially a problem, given there are now 575 scenes in the game, so in any playthrough, you have less than 50% chance of getting any particular one. It didn’t seem fair to tell people there was new content, and then not show it to them.

So we added special code that checks to see if it’s the first time you’ve run version 2.3, and tries to give you several of the new scenes. “Tries to” because one of them does have preconditions. And others only show up in a long game.

The first time check is so that you don’t get a predictable game, where the contest favorites show up every time.

Besides new scenes, playing on iPad mini made us realize that text that works well on the larger iPads might be a bit small. So there’s an option to enlarge text in many places (not all because some of the layouts are pretty carefully tuned).

Playing the game again brought up situations where it would have been nice to get advice, so we added a bit more. (We always encourage checking with your advisors, as they may comment about recent events that are not otherwise obvious.)

And we fixed various minor bugs and typos.

So we hope it has enough to be worth checking out for even experienced players.

P.S. Since updates hide old reviews, we hope you will find time to give the game a rating or review in the App Store. This really helps. Thanks!

12 February 2014

Scene Contest Update

Some time ago, you picked the winner of our scene contest. We added consequences and advice to the entry, and commissioned Jan Pospíšil to paint the illustration. Here is his pencil sketch, and the scene as it will appear in the game.

We are still testing other new scenes — we’d like version 2.3 to be a significant update. This means it’s not ready yet. But all the scenes are written, so we hope to say more fairly soon.

04 October 2013

Scene Contest Winners

While the Scene Contest has been over for a while, I’ve been remiss in noting the results of the voting.

We became aware that the game had some serious issues when running under VoiceOver under iOS 7. Everything used to work fine, so this took some investigation. I think the most likely explanation is that Apple fixed some VoiceOver bugs, and King of Dragon Pass had been dependent on the earlier incorrect behavior.

It appears that we’ve fixed the issues, and recently submitted version 2.2.2 to Apple for approval. So, the belated announcement:

Cooking Contest
Congratulations to Lysander Xen, who created “Let’s Pretend!” This was the clear favorite, with 51% of the votes cast at Pocket Tactics. It features interesting art and kids getting into trouble.

Runners up were Chris Gardiner’s “The Porridge Fiend,” “Tag-Along” by John Doe, and Tasos Lazarides’s “While You Were Away.”

Now that we’re no longer focused on compatibility issues, we will start obtaining art, fully detailing, coding, and testing Lysander’s winning scene.

We are likely to add other scenes as well, because so many were good.

Thanks to Pocket Tactics for hosting the contest, and to everyone who voted. And most importantly, to everyone who created a scene.

16 September 2013

Scene Contest Candidates

We got a bunch of great entries in the Scene Contest, and now it’s time for you to pick your favorite!

As I told Pocket Tactics, it was hard picking just a few for voting.
Let’s play duelist!

“Let’s Pretend” had a great image, which reminded me of the cover of Cults of Prax and our own R59. This meant I was willing to think of ways around one of the possible problems with the scene (if heroquests are so hard to start that you often cannot when you have the backing of the clan, how could some kids start one by accident?).

I am a sucker for politics, perhaps because I enjoyed writing my political scene so much. I like emphasizing that the playing pieces have minds of their own. So “While You Were Away” appealed to me.

For some reason, “Tag-Along” wasn’t in my original list of candidates, but our tester Liana Kerr had it in hers. And taking another look, I had to agree. (This is just an example of how hard it was picking.)

Have some porridge — in your face!
I’m a sucker for the Icelandic sagas, and “The Porridge Fiend” seemed to come right out of one (though the author suggested he had a more indirect inspiration). And we already had a porridge illustration inspired by the sagas.

Liana and I liked some other ideas, but she pointed out that in one, the action took place off-screen. So maybe we’ll still work it up, but it wasn’t quite worthy of being a contest winner. And others were fun but seemed exceptionally difficult to work into the Gloranthan mythology.

Special mention to one funny scene that riffed off a throw-away line of advice I wrote for one of Elise Bowditch’s scenes. I’d prefer that the contest winning scene stand alone, so it’s more likely to occur.

Voting ends soon, so please cast yours!

06 September 2013

Still Judging Scene Contest

Various factors conspire to delay the next phase of the scene contest, but the biggest is that we received 22 entries, over half of which could easily be in the game. Thanks to everyone who entered, we will surely be inspired to add something thanks to your ideas.

So we’re still discussing which ones are funniest, don’t require too much stretching of the setting, etc. Some are good scenes, but are they special enough? Or does the action happen in distant lands rather than on-screen?

It doesn’t look like we’ll have a decision before I have to get on a plane today. So look for it next week.

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!