Good Robot #42.5: Good Writebot

By Rutskarn Posted Saturday Feb 20, 2016

Filed under: Good Robot 77 comments

I hope you’ve all been enjoying Shamus’ series on the art of programming, which I understand is writing special words that make games happen. Sometimes you don’t write the words good enough and the game isn’t good; John Romero did this one time and he’s been working as a garbage man in Tulsa ever since. I’m the lead writer, so programming isn’t really my department, but having accidentally opened the source code while Arvind was explaining TortoiseHg again I can see why Shamus has been having so many problems–to be frank, the grammar was terrible and almost three quarters of the words were misspelled. I did an editing pass which I assume fixed most of the problems; Shamus has assured me this will be the topic of posts #43-129.

But I think we’ve all got the basic idea: coding is “hard” and “interesting” and “requires technical skill” and “can be objectively assessed.” But is it really the most fundamental part of a videogame? Shamus and Arvind say “yes,” repeatedly, at progressively louder volumes–but I’m not convinced. If you take away the code I’m sure a videogame will still run, but can you say the same about its story? What would Killzone, Rocket League, and Neko Atsume be without their rich internationally beloved canons? And if it wasn’t for Final Fantasy villains, how would you know which of your old forum accounts to be slightly embarrassed by?

My point is that my job writing Good Robot (or more precisely, writing a couple hundred headlines that display when interacting with vendors, plus some names to go with levelbosses) is exactly as critical as the stuff Arvind and Shamus do all week. I’m guessing. They keep forgetting to tell me when their meetings are.

So in the vein of the rest of this series, here’s a few days in the life of the Lead Writer (!).

Sometimes I worry that these gifs don't capture the pathos of Good Robot. Sometimes I also worry that the marketing, art direction, gameplay, writing, premise, execution, and Good Robot don't capture the pathos of Good Robot.
Sometimes I worry that these gifs don't capture the pathos of Good Robot. Sometimes I also worry that the marketing, art direction, gameplay, writing, premise, execution, and Good Robot don't capture the pathos of Good Robot.

It’s a few months until release and wouldn’t you know it, there’s an unforeseen problem: I have to write Good Robot. Arvind claims that based on how many terminals exist in the final game and how many lines are displayed per terminal we’re going to need two hundred and fifty headlines total. That makes sense based on our initial projections, and it should add a lot to replay value for the player, but the obvious complication is that it’s a lot of work. How would he like it if he had to write two hundred and fifty lines of code? That’s probably enough to power an entire year of Assassins Creed releases.

Now I know what you’re thinking: “Rutskarn, why don’t you just write the same line two hundred and fifty times? You can be done in half an hour if the line’s not too long and you type quickly enough!” Which is a terribly clever idea–I eventually thought of it too–but the problem is that Windows has some kind of weird protection where it’ll keep you from playing Mount and Blade if you copy the same one joke over and over again. I don’t understand the technical details, but Arvind was very explicit about it–I think he said it had something to do with polarity reversals. That also kind of shot my initial idea for this article, incidentally.

So back to the drawing board, which I have been using as a writing board–aspiring writers, learn from my example and don’t buy the wrong board by mistake. The board guys are real uptight about exchanges and drawing boards are huge.

I initially wrote a deft political allegory for this scene, but Arvind is convinced audiences aren't ready for a robot called Actually George W. Bush.
I initially wrote a deft political allegory for this scene, but Arvind is convinced audiences aren't ready for a robot called Actually George W. Bush.

The second idea I have is to write one joke, then split it up across two hundred and fifty terminals. This is something we in the games writing business call “worldbuilding.” Rather than spoon-feed the audience an accessible narrative, I make players connect the dots between all of the game’s 250 riveting text characters, presented one at a time at stores throughout the gameworld. What’s exciting about this approach is that every player’s takeaway will be unique: instead of dictating how the letters, punctuation, and numbers should be interpreted or even arranged, I allow players to project their own meanings onto the text. The controversy will have a far greater impact on the psyche of the player than rote, overplayed “complete sentences” would have. Arvind thought this was a great idea, but did express some reasonable concerns that an abstract storyline would cause yon Kelpie to rise from the black moss-fringed loch to drag my meat and bones to a blue-faced death, which is exactly what happened to this other writer Arvind knows. As always, I defer to his superior technical knowledge.

So Plan A and Plan B are both, apparently, unfeasible. And these dang headlines aren’t going to write themselves–unfortunate, as that was my strong Plan C. Misspelling “two hundred and fifty” doesn’t seem to help any, which was Plan D; I think it might come down to that “math” thing I’ve heard about. I’m obviously in a real pickle, but it’s struggles like this that help writers capture the humanity of their characters, which, when your game is called literally anything else, is probably useful.

At the end of the day there’s nothing for it. Counter-intuitive as it might seem to a layman, the solution to my problem of needing several hundred lines is to sit down and write several hundred lines. It’s the only solid move; anything else would be a betrayal of my standards, my colleagues, my contract, mostly my contract, Arvind can sue me, our loyal playerbase, read the contract, especially read the clause about involuntary kidney donations.

Also, I don’t want to get made fun of on Spoiler Warning. More than usual.

I push the scripts to the repository and give myself a modest pat on the back–reflecting as I settle into my chair that there’s a kind of poetic balance to game design, an ebb and flow, a give and take, that you miss if you get too wrapped up in the making videogames part. It’s the little coincidences, like the fact that every time I add something to game’s script a bunch of fix-this-broken-scripting tasks are added to the workpile. Just another one of those facts about how computers work we’ll probably never understand…and I wouldn’t have it any other way.


From The Archives:

77 thoughts on “Good Robot #42.5: Good Writebot

  1. Da Mage says:

    I feel this post could have been two-hundred and fifty words…..but then it wouldn’t be anywhere near as fun.

    1. Rutskarn says:


      1. Lisa says:

        Your mind is clearly too highly trained.

  2. Rick says:

    I love the first paragraph :D

    [edit] Ok, I just finished and have to take that back. The whole post is awesome!

  3. sheer_falacy says:

    I assume at some point you’re also going to help them with the title. I mean, I’ve played a lot of games with incredibly ridiculous concepts, but nothing approaches the pure fantasy of a robot that’s actually good. Robots either want to kill all humans or they’re broken. Actually usually both, though only one at a time and in that order.

    1. Izicata says:

      I expect that’s the twist. You were the Bad Robot all along, killing humans wearing robot suits.

      1. krellen says:

        In the prototype before Pyrodactyl came on board, “you’re actually the bad robot” seemed to be the direction the story was taking.

        1. Lachlan the Mad says:

          I really, really don’t want the story to go in that direction. That twist is way too overplayed.

          1. Rutskarn says:

            I can confirm that saying the story “goes” somewhere, in the present version, is a bit of an overstatement. The story is a presence and context that informs your understanding of what you do, and there are small arcs contained within groups of terminals, but what you do is destroy things until you fight a big antagonist and then you’re outie.

            The original did have a straightforward story arc. Krellen’s not far off about the twist, but I will say the humor came less from the idea that you’re not such a Good Robot and more from establishing exactly why you ARE doing whatever it is you’re doing.

            1. Xeorm says:

              Any idea if we’ll ever get to hear the original story? Seems worth a post or two on an off day content wise.

              1. Daemian Lucifer says:

                It will be a dlc.Extended robot.

                1. Retsam says:

                  Gooder Robot.

                  1. Ingvar says:

                    “Good Robot”
                    “Gooder Robot”
                    “Goodest Robot”
                    “Goodester Robot – the sequelizer”
                    “Goodestest Robot – ungrammatically shootiest”
                    “Goodestester Robot – the hyperpluslative attacks”

                    Plenty of sequel material that there title.

  4. Tektotherriggen says:

    If you’d waited a bit, you could have used the spambot script that Shamus posted a few days ago. Spambots are utterly convincing at writing realistic dialogue, I’m sure nobody would have noticed.

    1. Mephane says:

      That was my thought, too. It would actually be hilarious because (I suppose) you are talking to machines anyway. :)

  5. Akuma says:

    You are killing me Rutskarn. Truely all code just needs a good spellchecking.

    1. Matt Downie says:

      It’s usually the punctuation that needs the most work. Programmers tend to overuse semicolons; you can make their code better by replacing those with full stops.

      1. Neko says:

        Actually, I’d suggest replacing the semicolons with regular colons, when appropriate to do so of course. Just follow this handy guide!

        1. Daemian Lucifer says:

          That made me wonder:Why is it called SEMIcolon?Shouldnt it be colon and a half?Or maybe,more precisely,colon and a third?

          1. Joe Informatico says:

            The semicolon is “weaker” than the colon. The two clauses separated by a semicolon are independent clauses; the clauses could be written as separate complete sentences. Whereas with a colon, the first clause is an independent clause that could be written as a complete sentence, while the second clause emphasizes or illustrates the first clause: a list of examples, an illustration, or for emphasis. In other words, a colon joins a complete clause to a clause inferior to it, while a semicolon joins two equal clauses.

            (These refer to cases when colons and semicolons are used as clause separators. They do not include uses that arose later like nested lists, Biblical notation, time notation, field headings, etc.)

      2. NotSteve says:

        A lot of programmers use semicolons (;) when what they’re actually trying to use are greek question marks (;). Go ahead and replace a few to show them how much better it is.

        1. Mephane says:

          And while you are at it, replace the boring quotation marks ("...") with more fancy ones that look different at the beginning and the end of a quote ("...").

          1. sudowned says:

            you guys are horrible. please never help my code.

  6. Galad says:

    Sometimes I wonder if my Patreon support of Ruts is a sound expense. Not that I’m stingy over a few bucks, it’s just .. not always easy to justify spending them to myself. Then he writes a gem like this whole post, and all is well in the world

    I think I laughed out loud in real life 5 or 6 times while reading this post, that’s how good it was.

    1. HeroOfHyla says:

      Mac OS tries to be helpful and replaces straight quotation marks with smart quotes, even in plain text editors. It was a fun afternoon trying to figure out why a simple print statement wouldn’t compile.

  7. Grudgeal says:

    And if it wasn't for Final Fantasy villains, how would you know which of your old forum accounts to be slightly embarrassed by?

    Who told you about that?!

    1. Gilfareth says:

      No, no, not GaiaOnline, don’t remind me! It burns!

  8. Henson says:

    Have you ever considered crowdsourcing? I’m sure this site has two hundred and fifty readers who can do the heavy lifting here. Of course, then none of the headlines will have anything to do with each other, but that’s the brilliant part!

    1. SeekerOfThePath says:

      Just leave it to the players to connect the dots :)

  9. Content Consumer says:

    “I did an editing pass which I assume fixed most of the problems”

    Aw geez. I cringed, I really did.

    1. Majikkani_Hand says:

      I grabbed compulsively at the edge of my desk like I was hanging onto a life raft.
      Ruts, NOOOOO!

    2. Jason-L says:

      I just closed my eyes and thought “Thank heavens for version control.”

    3. Lachlan the Mad says:

      I propose that we use that sentence as a test to tell the programmers apart from the non-programmers, because I just thought “Ha, that’ll show those programming languages”.

  10. Gahrer says:

    Wow, that was the funniest thing I have read in… I don’t know how long. :) (Be careful, windows is notoriously protective about Mount and Blade. Don’t anger it!)

    1. Daemian Lucifer says:

      Since the last time you read something by Rutskarn?

  11. Daemian Lucifer says:

    But I think we've all got the basic idea: coding is “hard” and “interesting” and “requires technical skill” and “can be objectively assessed.”

    Youd think that,but there are plenty of cases where thats not true.For example,while.

    1. Mikeski says:

      Of course code can be objectively assessed. We have code to do that for us, even. We call that code a compiler.

    2. Richard says:

      Nah, bad example.

      When using Do While and While Do, one of them is objectively the right one.
      – Always do the thing at least once, only do the thing if required.

      Containers are a much better example.

      Is it better to use a list, a red/black tree or a hashmap?

    3. Cuthalion says:

      Thank you for that link. I was highly amused.

  12. Neko says:

    Try and sneak Actually George W. Bush in there. Just make the commit message something like “Fixed typo” and maybe no-one will notice?

    1. Daemian Lucifer says:

      AGWB would be an interesting name for a robot.Or maybe AGWB001.

      1. Bloodsquirrel says:


    2. Mephane says:

      The best way to sneak it in is if the same changeset starts with a massive amount for formatting changes (like replacing tabs with spaces*). No one is going to bother to find out whether there is anything else in there. :)

      *Beware, it is only believable when the checkin comment is something passive aggressive about what kind of savage would use tabs in the first place.

      1. Hermocrates says:

        what kind of savage would use tabs in the first place

        I think you meant to put spaces there? :p

      2. Neko says:

        Tabs for indentation, spaces for alignment. Anything else is HERESY!

  13. Daemian Lucifer says:

    to be frank, the grammar was terrible and almost three quarters of the words were misspelled. I did an editing pass which I assume fixed most of the problems;

    You jest,but now I wonder if anyone has actually done that to some piece of code.Because Id like to read it.Maybe something like “Tetris made readable”,or some such.

    1. krellen says:

      COBOL was invented with the idea that a programming language should be readable as regular English.

      COBOL is also terrible.

      1. Felblood says:

        COBOL is particularly bad, but I’d say that all attempts to make actual programming languages more like human languages are misguided.

        Communicating with humans and communicating with computers are very different skills, and by making them more similar you invite all kinds of negative transfer problems.

        Even attempts to create a computer that can accept arbitrary commands in normal English seems problematic to me. Do we really want to make it easier for people to give instructions to computers without proper training on how the computer will interpret those instructions?

        All I did was tell it to make me some paperclips!

        How many paperclips?

        I dunno, I just said, “as many as you can.”

        You fool! You’ve doomed us all!

        Obviously classical cases like this can be stopped with a good set of default options and some basic safety limits, but you’re never going to find every possible use case that can result in the end of all humanity, before launch day.

        1. Daemian Lucifer says:

          There is the reverse problem as well,which can be seen with many new operating systems:You can make the computers be both friendly to regular users,and resistant to their blunders,but that means making it extremely difficult(or even impossible) for skilled users to do advanced stuff.

        2. guy says:

          Having programmed in Assembler, I think I must come firmly down on the side of making computer languages more like human languages.

          1. ehlijen says:

            As with anything, there’s a golden compromise to be had somewhere in the middle (but not necessarily in the same place for every instance).

            It’s great if code reads like human language because it makes checking it easier.
            It’s great if code doesn’t read like human language because it means it can have fewer ambiguities, making it easier to write in the first place.

        3. Bloodsquirrel says:

          I hear this “more like english” line used to defend Visual Basic all the time.

          English is a terrible language for talking to computers with. Pretty much all human languages are. They’re filled with ambiguity. Just look at how putting english on the internet without the body language and vocal tone to support it causes no end of communication issues. English is incredibly context-heavy, and often very, very bad at being explicit and precise in important ways. Do we really want to see what happens when someone tells omnipotent-bot to “Make me a sandwich”?

          Making a programming language more english-like just creates the illusion of comprehension. If you don’t understand how the computer processes instructions, you still don’t know what’s going on.

          1. Corpital says:

            I see exactly one point in favour of programming in english and that is the faint and faded hope that it may improve the quality of the user’s english.

            You know, they’re/their/there, to/too/two, we’re/were/where and the like. Was trying to write a whole sentence like that, but it burnsssss.

      2. Akhetseh says:

        As an absolute ignoramus of coding matters: you say COBOL and I think of lizard people. I’m aware of the different spelling, but this only gives more validity to Ruts’ “editing pass”…

  14. Florian the Mediocre says:

    Plan E: {{Convince|Persuade|Get} {Shamus|Arvind|someone|anyone} to {reverse engineer|integrate|make|write}|{Write|Code|Program}} the spambot Shamus {saw|encountered|wrote about} {a couple days ago|this month|last wednesday}.

    1. Felblood says:

      Maybe the bad robots shout obvious spam at you?

      That’s why we need a good robot to kill them all.

      1. Nidokoenig says:

        Or add replay value by unlocking spammy randomisation of the existing headlines when you beat the game. This has the side effect of killing all attempts at punnery.

        1. Florian the Mediocre says:

          You underestimate Rutskarn.
          Every single combination would be it’s own pun.

  15. Genericide says:

    Funniest post I’ve read in quite a while. Thanks Ruts.

    1. Cuthalion says:

      +1, hilarious post. The self-deprecating self-awareness given the writer’s job for a low-writing game was very funny, and I think my heart skipped a beat a couple times when he mentioned the ways in which he helped improve the code.

  16. Christopher says:

    This is a really funny article. I feel confident about the Good Robot writing.

    Edit: Oh no, I got “logged out” somehow and now my avatar is a shocked pentagon instead of a silenced triangle.

    1. Viktor says:

      It’s based on your email address IIRC. So you either used a different one or typo’d. Fix that and you should be a mute d4 again.

      1. Christopher says:

        You’re completely right. Thanks!

        Also I remembered wrong. I am a quiet square.

  17. Ramsus says:

    This was exactly the kind of thought-provoking treatise I believe all of needed to enrich our lives on this fine summer’s day.

  18. aldowyn says:

    John Romero lives in Tulsa? Maybe I can meet him :P (P.s.: why Tulsa?)

    Seriously though, that was hilarious, good job rutskarn. I particularly liked the bit about not being able to play Mount & Blade :P

  19. Gilfareth says:

    It’s probably far, far too late to throw out any game suggestions, but it would be very entertaining to see something like Iji’s Scrambler in the game, where the games’ dialogue and text are replaced with barely coherent nonsense and strange concepts like ‘missile ponies’.

    1. NotSteve says:

      My favorite part of that was the one character whose dialogue was replaced with “HONK”

      1. Gilfareth says:

        Asha had the best Scrambler dialogue. Such wonderful, elegant lines as ‘TOOT TOOT’, ‘HONK’, and my personal favorite, ‘>:(‘.

  20. Dragmire says:

    Now I’m curious about what the actual word count is for Good Robot’s source code and how it compares to Shamus’ Mass Effect retrospective.

  21. Alderman says:

    This is some top-form Rutskarn right here – bloody hilarious ^_^

  22. dva13 says:

    Great post. Tickled the funny bones of both the programmer in me and the writer. Also reminded me to go wishlist & follow Good Robot on Steam. :D

  23. sensi277 says:

    From someone who has never listened to a single episode of Spoiler Warning, my first thought when reading this was, “Who is this guy? Apparently he thinks he’s xkcd’s hat guy or something.”

  24. Artyom says:

    Rutskarn, I know that this question itself is heresy for a lead writer, but I’m going to ask it anyway.
    Does this game actually NEED a story? I’m telling about a story with an ark. With protagonist, antagonist, beginning, ending and so one.
    Maybe what the game actually need it’s just a two hundred and fifty jokes. Dungeons of Dredmor worked that way: the only text in the game is the description of stats, skills and items.
    And I’m not telling that EVERY joke should be comedy gold. I’m talking about Rapid-Fire Comedy principle. Just collection of jokes that’s okay to put one after another.

    1. Rutskarn says:

      You’re not wrong, and that’s pretty much exactly what this game’s writing amounts to.

    2. Bubble181 says:

      Stories with an ark are great. Saving animals and all that.

      Stories with an arc, though, we don’t necessarily need more of.

  25. Droid says:

    Wow, I finally caught up! That whole series was about the most insightful dev diary I have ever read, and it was really entertaining! Seems like perfect timing, too, considering I only found this after revisiting DMotR for what I think was the third time.

    Hope for you all that Good Robot is a great success, it has the potential for it, from all I’ve seen so far. At least you’ll have one more buyer now.

  26. Volfram says:

    Rutskarn, did you just write a fully-article parody of Shamus’s programming articles?


Thanks for joining the discussion. Be nice, don't post angry, and enjoy yourself. This is supposed to be fun. Your email address will not be published. Required fields are marked*

You can enclose spoilers in <strike> tags like so:
<strike>Darth Vader is Luke's father!</strike>

You can make things italics like this:
Can you imagine having Darth Vader as your <i>father</i>?

You can make things bold like this:
I'm <b>very</b> glad Darth Vader isn't my father.

You can make links like this:
I'm reading about <a href="">Darth Vader</a> on Wikipedia!

You can quote someone like this:
Darth Vader said <blockquote>Luke, I am your father.</blockquote>

Leave a Reply

Your email address will not be published.