Session 3: When the Monsters Don’t Carry Cash… | Defenders of Kathrakopolis

A month has passed since the meteor strike, and life has returned to normal.

Vinnie, Wildflower & Igor

After they restored him to life, Vinnie and Wildflower got on well with the marching-band member, Igor. The three have become fast friends, and are often found relaxing at Igor’s house of an afternoon. Igor may be a little greyer-faced than before, and a little stranger, but his hospitality cannot be faulted.

This afternoon, though, their relaxation was interrupted.

“You have to come at once!” The giant’s “whisper” was far too loud. “It’s Meth’s experiment. It’s attacked him.”

Continue reading

Session 2: “What Game Are We Playing?” | Defenders of Kathrakopolis

Wildflower & Vinnie

Wildflower stood up from the trophy-goblet of ambrosia, still burning. Cordwynn met their eyes from the ring. “Do we keep wrestling?”

The referee raised her hands, unsure.

“No matter. I concede.” Cordwynn bowed to Wildflower. “I have faced you, now. You know my strength now, and I know yours. I shall be glad to test you again — another time.”

The referee lifted the kylix, and held it out to Vinnie. “This is somewhat irregular, but — I declare you tournament champion! Hail Wildflower!”

Still somewhat dazed, Wildflower carried the trophy into the city.

It was about then their shirt caught fire.

***

The silver glow faded, and the room was dark. Vinnie could barely make out the shape of the now-dry pool — and was that a metal ring around it? Silver? Gold? He leaned in closer.

It was lead. Worthless.

Continue reading

Session 1: “Rocks Fall” | Defenders of Kathrakopolis

For hundred of years, the Pillars of Kathrakopolis have brought many blessings on the city, granting its citizens health, happiness, and plenty. But their ancient network is incomplete.

After decades of research, and years of construction, the Ancients’ work is about to be finished. On the Spring Equinox, when the final stone is placed in the central Great Pillar, the pillars will bless the city with a thousand years of prosperity.

The project is about to be completed. The city is about to celebrate. And four citizens’ lives are about to change.

Continue reading

Crypt of Three Evils: Session 1

The man in the bar was raving about skeletons. Or maybe demons? He wasn’t exactly very lucid.

It was enough to get Augustus’ attention. He stood up — six feet of armoured muscle — and told the taproom in no uncertain terms that folk had to stop the undead.

That shut the man up.

In fact, half the bar fell silent. It looked like Augustus and Patricia would be working alone again.

First order of business: find out where this infestation was. Patricia made a circuit of the bar, while Augustus stayed at the table hoping for volunteers (and drinking).

He found three, each with information. Melil — a forest ranger in thick hide — had heard tales of cows and other creatures drained of blood. A cloaked figure named Micala reported scattered incidents of arson and vandalism, probably the work of goblins.

And rumor spoke of a macabre skeleton procession in a valley to the north.

As the four adventurers began their plans, an aged crone shuffled up to the table. She introduced herself as Liz, and opined that the party seemed in need of a healer.

There was definitely something off about Liz, but the party were happy to accept her offer. The group agreed to start at dawn, and with the drinking done (and money borrowed for Augustus’ bar tab), they turned in for the night.


The next day, three townsfolk were waiting for them outside the inn. There was a somewhat scrawny soldier called Frederik; a gentlewoman, Erassi … and Tarramor, who soon proved himself a bigger idiot than he looked.


After a brief visit to the temple for Erastil’s blessing (which took the form of holy water), Augustus led the group into the forest.

A few hundred yards in, he was thoroughly lost.

Melil took over and led the party back in the right direction. Following some discussion, the group agreed she would lead them around to approach the valley with the sun behind them.


“Humies!”

A goblin squealed somewhere in the trees ahead.

The party lined up to face the foe, villagers behind the experienced adventurers.

The first goblin was equally cautious, shooting wildly from cover. The second charged, and was quickly dispatched by Augustus.

The third advanced more slowly, into the crack of Micala’s spiked whip — then was pulled down by their dog, Flair.

Tarramorr took the opportunity to pose atop the body. The third goblin charged him with a scream of rage.

Frederik chased after it. So did Augustus, who swung his sword in blow that would sever any man’s head from his shoulders.

It sailed right over the four-foot goblin, and stopped just an inch short of Frederik’s neck.

Then Melil stepped up and disbatched the goblin with a simple stab.

When the dust settled, Tarramorr was the only person injured — though Frederik was understandably still in shock.

“Thai” Turkey Salad


I was aiming for Mexican-inspired, but this came out more like a café “Thai beef salad”.

While it was nice enough, I’d like to have another try at some point. The salad could use more zing — maybe fresh coriander?

The sauce also came out very salty (like a Thai fish sauce) so I may have added a bit too much salt.

Serves: 4
Cooking time: 45 minutes

Ingredients

Salad

  • 1 small wombok or other cabbage (~ 100-200 g), shredded
  • 1 red capsicum (bell pepper), sliced into strips
  • 1 Spanish (red) onion, diced
  • 1 can corn kernels

Turkey

  • 500 g turkey breast, sliced into 4 pieces
  • 1 onion, sliced
  • 1 cm ginger, chopped very finely
  • 1 tsp coriander seeds
  • 1 tsp chilli flakes
  • 1 tbsp dried coriander (cilantro) leaves
  • Reserved corn liquid
  • Salt & (optionally) pepper, to season

Method

Drain corn, reserving liquid. Toss with wombok, capsicum, and onion, and set the salad aside.

In a hot pan, fry onion, ginger, and spices until fragrant.

Add turkey to pan. Sear well on all sides, then reduce heat to low, and fry until cooked through.

Once turkey is cooked, remove it to rest somewhere warm.

Return pan to high heat, deglaze with reserved corn liquid, then add coriander. Reduce sauce to desired thickness — not too thick, this is your salad dressing!

(If any liquid has drained out of the turkey, add that to the sauce too.)

Divide salad between four plates. Top each with a piece of turkey, drizzle on sauce, and serve. You could probably slice the cooked turkey first, but I was too lazy to bother.

Duet of Reflections

Who is she?
What will she look like?
Will she be sexy
Will she be stern?

Is this me?
Am I too dressed up?
Will I be dressed up
Too much like her?

Who is she?
What will she act like?
Will she be bitchy
Will she be shy?

Should I believe her?
Tell her my secrets?
If she is family
Should I be blind?

Now
Today
First time in a lifetime
Finally I meet
My mysterious twin

Is this girl
So like me
So different
Really my sister?
Is she a friend?

When we meet
How will I greet her?
Will she embrace me
Will we shake hands?

When we talk
What will we speak of?
Does she have style?
Has she known love?

When we meet
How will it touch me?
Will it be creepy
Will there be a bond?

I’m a geek
Does she watch the same shows?
Does she hate my shows?
Will she hate me?

Now
Today
No more speculation
End of the questions
Proof of the fear

That first fateful meeting
Seconds away now
Heart in my eardrums

The moment is here

I dedicate this poem to Susan and Diane of El Goonish Shive, who seem like mirror-images of each other but haven’t quite met each other yet.

Would I had the skill to set it to music!

Calling Elm Functions from Node.js Code

(Update 2017-02-26: This is actually covered by the Elm docs, just in a more obscure place than I expected.)

If you just want to call Elm from JavaScript, see the GitHub repository. If you want the full saga of how I learned this, read on…

At RubyConf AU, I heard about Elm, a functional programming language based on JavaScript.

Now, I recently started building a set of command-line tools that are pure functions (i.e. they don’t keep running or change things, just process and return their input). These are currently in Ruby, but I’d like to use them for a browser app eventually, so I need something I can call from JS.

Pure function? Callable from JavaScript?

Seems like a job for a JS-based functional language!

Continue reading

Sueness and Popularity: Mistakes

I’m (finally!) scoring the last of the webcomics for my Sueness and Popularity project.

But I’ve just realised a major flaw in my experiment plan: I haven’t specified which characters I will score as “Fan Characters & Newcomers”. The test has a separate section for these characters, and I know from my first scoring project that the choice of section makes a big difference to a character’s score.

This is fine for fan characters, since it’s usually fairly obvious when a webcomic is based on an existing story. But for “newcomers”, it’s a difficult judgement call. As a reader, I can’t reliably tell if a character is a new one the author just made up, or if they were planning to introduce them all along.

I could pick a rule: for instance, “any character who doesn’t show up in the first storyline is a newcomer”. But for something that could have such a big impact on my results, I don’t want to rely on such an arbitrary choice.

Alternatively, I could ignore the original-character/newcomer distinction, and just score every character on the “Original Fiction” scale. This avoids arbitrary cut-offs, but it also means I’m not applying the test properly.

Neither choice really makes sense, so I’m going to re-plan my experiment to try both:

Continue reading

Making Dungeon Non-Linearity Meaningful

I’ve always been a fan of non-linearity in game design.

Some time ago, I read Justin Alexander’s series on Jacquaying, and immediately decided I wanted to use those principles — loops, elevation changes, and meaningful choice — in the maps I designed.

Using the tools wrong

A 30-room dungeon in three levels, with lots of inter-level connections.

Everything loops around eventually, but the paths are never short.

Recently, I got to run my first full-size dungeon (built, of course, on my understanding of these principles).

It didn’t quite work.

Continue reading

Sueness and Popularity: Sample

(Continuing the project from this data collection post.)

I’ve now decided on my 50-webcomic sample (download the full list).

It’s one month today since I sampled the first one, so it’s time to start reading and scoring them. Before I do, though, I’d like to say what I’ve noticed so far:

Exclusions

There are several comics in that list I might not be able to score. (I should have made a plan to handle this, but it’s too late to change the experiment rules now.)

No Regular Characters

Two comics (The Science of Cookies and 3 Frame Movies) don’t seem to have any recurring characters (i.e. no-one shows up on more than one page). By the rules I’ve set out, this means I can’t score anyone in the comic, and therefore can’t analyse it.

This is probably fine — if a comic has no prominent characters, I can’t really measure it for Mary Sues in a useful way.

Too Many Authors

Another two comics (links removed for privacy reasons) are “interactive” comics like MS Paint Adventures (readers suggest actions for characters, and the author picks one and describes the result).

It’s hard to argue these authors bear all the blame for any Mary Sues — or even that it’s a problem at all. Author self-insertion is one thing, but audience self-insertion (or is that just “identifying with the character”?) is quite another.

Fortunately, these comics shouldn’t have too many people making suggestions, so I can just spread the blame equally: if someone’s suggestion gets used, count them as an author. Edit 2020-01-11: One of them was excluded anyway due to going offline before I could score it.

(Needless to say, I’ve deliberately not submitted any suggestions to these comics myself).

Learning

The next time I do this, I’ll need to have a list of rules to exclude comics (e.g. must have a regular cast, must be fictional, must be in a language I read), and decide how (or if) I want to find extra samples to make up for the excluded ones.

Other Complications

There were a few grey areas around what counted as a page.

Generally, I counted all images posted on the site, provided they were either (a) posted as part of the main comic, or (b) had some sort of narrative. (Title pages and side comics count, but random art pieces don’t.) In particular, I didn’t count (and won’t read) anything I had to buy to see.

Page sizes vary, both between comics (three-panel strip versus full pages) and within them (pages posted as double images). For sanity’s sake, I counted each individual blog or image post as a “page”, regardless of size.

This means page counts aren’t comparable, and I’ll only be able to compare relative counts for characters (e.g. “10 out of 100 pages” and “2 out of 20” are the same).

 

More updates once I’ve got some scoring done!