Friday, January 1, 2016

Post Mortem: The Baker of Shireton

I was honored to participate in the 21st IFComp and place 19th with The Baker of Shireton.  This post will probably be rambly and disjointed as I'll discuss my experience creating it.  There might be spoilers, but I think I can use one of those break things right?  Oh here it is...I don't want to take up too much space on Planet IF if it works...okay here goes nothing...




I wanted to do something different after two horror entries: Final Girl in 2013, and Transparent in 2014.  I always start late for competitions, using the deadline to spur me into action.  For reference, the previous year I decided to start writing and enter Transparent on the very last day to declare intent to entry...because I had a conversation with another author who was withdrawing an entry because they didn't think they could finish in a month after working on it...for a year... And that reminded me that IFComp was coming up...  This time, I did manage to start two months prior to the deadline to submit intent to enter which gave me three months before it was due.

The Baker of Shireton was a joy to conceptualize and program, mainly because I had a whole bunch of disparate concepts that needed a game to go into, and those could be jammed together tinker-toy-like in what was essentially a one-room escape.  If I ran short of time, I had a neat little short experimental game.  My two previous games were too long.  I had no trouble doing a poetic "ode to baking in interactive form" if the uber-design didn't come through.

The earliest thing in this stew was Emily Short's "Recorded Endings" extension.  It allows an Inform story to write an "ending" to an external file that are persistent between plays to keep track of branches the player had seen.  The real magic of this is that a running game can check for these existing endings and alter the game world.  It can be an automatic checkpoint system and achievements.  I renamed "Endings" to "Milestones" since I set endings to mark events that didn't end the game.

I like time management games, especially ones that have you cook a meal or assemble a recipe or check people in and out of a hotel.  I also like games that flip on you and become a completely different thing (like Frog Fractions).  I wanted Transparent to be like this last year, where some people would think it was a rather mundane photography simulator that scored points, but people who wanted to explore would stumble into more.

Next was the concept of using inventory items as knowledge and abilities and conversation topics that cannot be accessed if the player does not possess the item.  It's been discussed on the IF forums recently, but I've always loved this idea and have played with it in several formats in prototype.

On occasion, I have manned live chat for a major retail website where you have a whole bunch of automatic responses you can fire as macros.  In the midst of one of these sessions with not enough coffee in my system I had the revelation that I was essentially running an NPC by parsing the customer's input and deciding what one of a limited vocabulary of answers I could use that would most appropriately fit with what the customer/player typed in.  I wanted to do a game where the player realizes they are a cog inside of a computer game.  This is a popular theme in a lot of games recently, but I loves me the meta play.

Of course the first thing I do when I create a game is make a snazzy logo.  It sort of solidifies what impression I want the game to give.  In this case also, my other idea was that the game's puzzle would be spoiled by the logo: Bake a coin into some bread.  Damn you, Bob.

I decided the player would start Ultima-style with responses only to "Name?" "Job?" "Bye", but could potentially barter with other characters for their abilities.  You also could give a quest.  The incentive for that would be better bread ingredients which make you more coins...  Perhaps you could battle for an ability.  Wouldn't this cause problems in the game?  What if there were godly "Implementors" who could reset the game...

I tried to keep the PC mostly gender neutral, but I might have slipped in some text.  I tried to keep references to "your family" and not "your wife/husband".  I think one of the PCs might refer to the Baker as "him" but oh well.    If you examine things in the bakery several times, it turns out the Baker is well-meaning but quite gullible and impressed by magic.  That Baker's Reel was passed down quite patriarchically, so...there it is.

I got the baking simulation running first and tested until my testers kept noting "Will I be able to sell bread to anyone?" Then I started making NPCs.  Rather than take time to create a dozen or so NPC villagers, there are only about five or six of different colors (which were real complicated and I took pity on the player having to type "chartreuse" and "periwinkle" over and over) who each get a random profession assigned to them as part of their auto-messages.  It doesn't stick, it's not persistent, but players always wanted to refer to them.

The blurb occurred to me in the voice of the Milkman Conspiracy Agents.  "You are the Baker of Shireton.  The bread you bake is delicious."  Then eventually you know some other factions gonna come townslay all your quest givers.  "Raiders are Coming."  I liked the idea of a time management game getting interrupted by unsavory forces.

The selling mechanic was also going to be a lot more complicated (I read the documentation about deli-queues and carousels and stacks) and remembering to curb my tendency toward fiddliness, I simplified the game mechanics so that patrons would ask for random bread that was in the display case, but would accept anything you give them.  I already knew disambiguation was going to be a bear, but I managed to get adjectives that could consistently refer to groups of loaves.  In hindsight, I should have just made two commands: MAKE DOUGH and BAKE BREAD and increase a counter by a number, but I made physical items.  I had metal pans in the initial release when I thought that the baking simulation was going to be more complicated, but they caused major errors and the first update I did during the comp was to just remove them completely.

Since the player was confined to the Bakery, I only had to have NPCs step to the north to leave scope.  They all have different chances to move south.  The PCs start when you've made a number of points, then the Raider is thrown into the mix a number after that.  I lucked out that the system kind of worked the way I wanted it to the first time.  The transcript got very noisy when the bakery filled up, but overwhelming the player was intended.  Since there was going to be a lot of repetition, I came up with the Harbourmaster of Shireton who came into the bakery and told randomly generated stories, some of which turned out quite scandalous.  I also am quite satisfied with how random the PC chats are.  I wish I could have written some more and more interesting specific dialogue for them, but the text generation was doing some cool things that surprised me, so I left it for something that needed more time.

One major shift I did - originally there was going to be a Brothel of Shireton and the Madam of Shireton had the ability to proposition the NPCs and that was going to be what let you join the PC party.  Then I smacked my forehead and realized the only female in the game was a hooker.  Wrong.  She's the weaponsmith who makes gear totally inappropriate for the zone.  I decided to exploit the male fighter who like He-Man or the 300 dudes or every video game comic book Valkire had an inappropriate armor coverage issue.  He can dish out damage, but he can't take it.  His death scene wrote itself late in development.

The back room is actually showing [a list of off-stage things] and I thought it would be funny to have a red-herring object in the list, so I made a cursed pickle.  I had to make an alternate off-stage area for NPCs who went off for various reasons (The Green Room) and I didn't want to show up in the back room.  I'm quite proud of the weird backstory that can be discovered with lots of examining in the bakery.  The Baker is quite impressed with magic and has been swindled by a wizard who took his family in trade for stuff like the Magic Glass in the display case.  One tester fumed "I bet every coin you put in that magic strong box teleports right to his treasury room!...I'm like OF COURSE IT DOES!  Coins are real objects in the game, foolish I know, but I needed them to be a physical object to go into the bread.  That was the original reason for the strong box - there are rules to throw coins in there automatically if there are too many in play and the player doesn't do it, and I need the point count to go up to make stuff happen.  Bob became progressively more thievish through development and started stealing from the tip jar to help get coins back off-stage.  I felt bad and wrote him back to life with a freakout monologue in the back room if you don't take his route patrol and let him talk.

Similarly there's a hidden waste bin for burned bread.  The back room is actually showing all twenty off-stage loaves in every phase since I don't do things smartly with tables.  Similarly with the burned bread I put a secret waste-bin and  spent time writing refusal descriptions for when the player of course tries to shove the previous Baker down in there.

Handy hint for new Inform authors: Don't use names like "AnuusPoopy" which wreak havoc on disambiguation.  All the PCs in Shireton have easier normal "real" names players can refer to them by.

I can't think of anything else really that stands out that wouldn't just be me just going "Har!  The smoke actually comes out of the oven!!! Hoo hoo hee!"  There's lots of weird niches in the game.  Ask me anything in the comments if you have a question.

I have a website: hanonondricek.wix.com/pyramidif

1 comment:

  1. Thanks!! The information that you have provide is really helpful. I always find it very interesting to read your posts.
    Download Cricket Games | IPL Horn - Cricket Horn Sound APK App

    ReplyDelete