Nicholas usually played as Nicholas (race: Half-English, class: Coder, specialization: Graphics, favoured enemy: Writing Documention). But this week we brought the snacks and he got to be the Development Master. That meant the adventure was his pick. We always dreaded his week.
Sean (Half-Scot Artist, specialization: Environment) made coffee of blackest night. Cups filled and SVNs updated, The Gaslamp Games adventurers assembled at the table. Once everyone had quieted down and settled in Nicholas began as he always did. With dramatic pause.
… … …
“This week we enter The Codebase of Elemental Evil: A story of Clockwork Empires.” he intoned.
Daniel, Viking dual-classed Executive/Programmer, spoke up immediately. “Dude, I don’t think this adventure will motivate team-building. We’ve got four artists, and since you’re DMing we’re down to just two coders. It’s inappropriate.”
Flustered, Nicholas responded “Well hang on! Joseph is sick this week so that’s just three artists, and David said he really wants to do this adventure.”
I chimed in: “Yeah, I mean I’m an Artist/Manager right now, but I’d like to multi-class one more time as a Programmer because the adventuring party could really use more gameplay abilities.”
“Indeed.” said Nicholas portentously.
* * *
Nicholas never used notes for these things; He enjoyed putting on a show.
“The Codebase looms over you, vast, brooding, coiling in upon itself in glistening loops within loops dripping with tears and blood. It simultaneously extends into the distance and disappears into itself, a tiny mote. You can only focus on one detail at a time while the whole eludes you. And a sound catches the edge of your hearing — as if a chorus of voices was screaming and crying at the same time.”
Nicholas went on: “Jira the Sage speaks, ‘Your quest is to implement the new tree chopping animations made by your Animator who is known to my people as ViewProfile.jspa?name=chris.triolo’. ”
” ‘Forsooth.’ I say. ” I said.
Nicholas continued, “Jira then explains that you must combine the sapling, stump, and tree game objects into one entity database entry, create ambient sound objects for biomes that automatically prune themselves if too close to others, then make a generic object for natural foraged commodities to replace the current berry bush code.”
* * *
“Deep into the codebase you must delve.” Nicholas growled “Alone.”
That was some time ago, when I left the rest of the party behind. The hours blurred into days. I’m sweating. I had already forgot the Secret of Jira*, which had wounded me greatly.
(* “Start counting at 1.”)
I instinctively grabbed for my Wacom pen. This prompted a low laugh from the Development Master.
” ‘Your illustrations will not protect you in this place, artist.’ ” Nicholas said in his terrible Christian Bale voice normally reserved for games of Arkham Horror where he ended up drawing Joe Diamond.
Looking for a way to help, Daniel spoke up, gesturing to a smudge on his character sheet: “Even if I’m not there, I can assist David’s skill check with one of my class specialties, see?”
Nicholas knew better than to attempt a direct argument.
“Roll your management skill.”
rand(1,20). Fifteen is returned: a solid success.
Daniel pumped his fist and said: “David, you’re trying to do too many things at once. Go back in SVN commits until it works, then take each step one at a time.”
“Hmm.” In my minds eye, I stared at the writhing mass of malevolent code. It slumped and gurgled foul errors that burned at my character. Micah (Grad-Student Programmer, specialization: Parallelism, favoured enemy: Gluten) had already cast Message Passing which bound the attacking monster into constraints which would allow us to defeat it. But I needed to land the final blow.
“With the management bonus from Daniel, I want to use my Obsessive Grain Silo Optimization on the game object script.” I said.
Nicholas glared. “Fine. Roll.”
I had turned this dubious title he had bestowed on me in his last DMing session against his monster.
result = rand(1,20) + state.party["Daniel"].lastSkillRoll if result >= 20 then printl("Success!") else printl("Failure.") end
“Success!”
* * *
Ticket after ticket was resolved. Rewards were plundered, experience gained. Nicholas sulked and drank cup after cup of coffee. It seemed as if nothing could stop my path through The Codebase.
Until the forageSource game object appeared.
It seemed an easy kill, but nothing worked. It was immune to every attack I could muster. I rolled for every skill I had and, buzzing dangerously with magical caffeine aura, drank all the coffee in my inventory.
One last attempt. “I roll versus scripting by using my Python skill at a penalty which should be made up by using the Lua’s Tome I got from the Amazons.”
“It’s just crazy enough to work.” said Daniel.
rand(1,20).
Nicholas smiled evilly. “But you forgot to pass the correct variable name to the create function. Automatic fail. The entire party is dead.”
* * *
And that is why you always leave random effects to chaos mages … .
I love you guys. Your zany adventures through game development are inspirational.
I love the code heavy updates. But this… this… takes it to a whole new level. The adventure feels so fresh and different. It also reminds me how amazing of story tellers you are (Each is hybrid class, part Poet!)
Great write up. Do you guys even have time to play Dungeons and Dragons?
Clockwork Empires is being implemented in Go? Does this have to do with it being tied to a university research project on concurrency, or was there some other motivation working here?
The “.go” is just a “game object” file which is otherwise written in Lua. I don’t know why, I just work with them.
Since the folder is called “gameobjects” I’d assume the .go file extension stands for “Game Object”.
But there’s a subfolder called “FSM” which obviously stands for “Flying Spaghetti Monster”.
I think CE should be using ISM. Infinite State Machines.
Or Imaginary State Machines, for colonies that could use a visit from Her Majesty’s Anti-Paranormal Investigation Squad.
I thought the same, but then realized that .go probably meant Game Object.
Poor, silly David. You should know by now that Amazons can’t help you with anything related even tangentially to Pythons.
Lua is the product of an evil mind.
In other words, I spent the whole afternoon trying to code a program that would calculate a simple thing, but due to Lua brainwashing me and my cat I ragequit that. Even programming things with gears and cogs is more easy.
You, sir, have insulted my love.
Let’s solve this like gentlemen. A Street Fighter fight at dawn. Loser pays the drinks.
i love the bugs
No, we don’t have any of those around here.
This made me laugh much harder than it probably should have.
Wait! If artists are coding, than that must mean that coders can do art!
* draws especially ugly stickfigure *
Aww. 🙁
(Also, that was a lovely blog entry – I think I’m going to steal the description of the codebase to use it in one of my P&P campaigns for a demon of some sort)
You guys are a gazillion times more awesome than you already were for both playing AND referencing Arkham Horror. Srsly.
Wait… You’re all dead? Then how’d you write this?
My brain keeps trying to switch gears mid sentence.
It hurts. Oh gods, it hurts.