A Day of Maintenance: One Year Later

Canvas
21 min readDec 4, 2021

--

Oh no.

What.

It’s been a year since 7DFPS 2020?

Piss.

Well, I kind of set a precedent with a “1 Year Later” devlog for Forgetful Loop, so how about one for this game too?

The Gamejam

So to start all this off, For me I felt that 7DFPS is one of those “prestigious” gamejams — SUPERHOT is one of those games I devoured: the style, the flow, the mechanics — and to have a chance at making an entry for the same challenge that that game (amongst other greats) came from? Ab. so. lutely.

I went into it with a straightforward set of ideas to play with:

  1. I wanna make a driving game (it’s technically first-person if it’s in cockpit view 👌)
  2. Set in open terrain, just empty areas of desert with outcroppings 🏜
  3. And you fix stuff with a crane 🚒

At the time, I was coming off playing games like In Other Waters, Art of Rally, and seeing simulator games of various kinds doing well (see Euro Truck Simulator 2). So the idea of an explorative driving game that’s more focused on being in a space, with simple objectives to complete, and some kind of minimal-yet-crisp HUD was on my mind.

In the initial builds, Post-Processing was enabled for the HUD as well as the game. I had to disable this after revising the HUD to be rendered with it’s own camera, but part of me hopes I can replicate it someday.
For me, it all starts with a palette, a font, and an idea. From there it all flows.

And it went well! I got a huge 180,000kg truck bouncing and wobbling around a desert, some big box “spaceships” you drive around, good times.

From what I remember of it, the initial game itself was pretty straightforward to make — the vehicle controller was the hardest part (in part due to the weight & setup I was going for. Since then I’ve gotten the feeling that Unity’s Vehicle system was designed for vehicles that have geometry around the wheels to collide with, not open-wheeled buggies) And then with plugins like SC Effects, I played around the post-processing layers to give the game it’s own little style.

The game’s hero shot, and one that continued straight into the current introduction

Now going into 7DFPS, I was hopeful I could get a fuller game idea out of it, one part because I wanted to replicate Forgetful Loop’s luck (and had a hunch this truck/crane puzzle system could be a similarly good foundation for other mechanics/stories). And another part because I’m a sucker for backstory and want to be in the same leagues as SUPERHOT, coming out of (to my mind) a prestigious gamejam.

(But of course, I tried to not really embrace that, as you’ll lose the charm of a gamejam — they’re at their best when you can go in all-guns-blazing and with scrappy coding practices).

So, coming out of it, I was excited! Because I could see this game become something bigger pretty easily, in the same way Forgetful Loop did; With that, I almost immediately imagined more mechanics, more ways of manipulating the “fix nodes to get to the core” loop, where I could add writing to play with the idea of being forcibly time-travelled.

With Day of Maintenance, it was mainly story: this truck game is a good, slow-paced way of talking with other people whilst you drive to do another easy fix-em-up puzzle. One thing I remember most about Euro Truck was it’s a perfect podcast game — you have just enough to do to keep your mind switched on, but the rest is empty space for whatever.

In a sense: I felt that MDay would become a game about enjoyable mundane-ity, about watching the hills roll past, with good tunes on the radio, and your work-mates talking about random bullshit to pass the time.

And that bodes the question: what would the story be?

The first Act turned into a pretty useful way of benchmarking the rest of the game, as well as the initial visual style: a burning, posterised sun shining bright across the desert landscape. The other Acts would try to mimic this (or at least the scale of it all)

“What if?”

If you don’t know me: I like robots, sci-fi, moody/dark stories, and massive landscapes.

So of course I wanted to make a game where you, a boy-robot, would chat up your boyfriend-robot about whatever, then something dark would happen/be talked about to play with the relationship dynamic. All the while as you drove a huge truck around the desert, to get us some suspension-of-disbelief to work with.

Homeworld: Deserts of Kharak Concept art, one of the references for the game. This is THE shot I wanted to reproduce the most.

Originally, the core story nuggets I wanted to go with were:

  • It’s you (a robot) driving around a space, chatting with your Robot BF about your day
  • Robots are usually written to be emotion-less in fiction. What if we had robots which were assigned personalities/emotions as part of their work assignments?
  • And to follow that — what if certain emotions were muted, but could still present themselves? In that the robot is feeling an emotion, but literally doesn’t know how to process/render it.
  • Finally, the arc of the story would be you helping your BF process a deep anxiety that manifested itself, where he’s unable to process it properly as part of his assigned personality
John Harris’ sci-fi covers were a reference too, but moreso about the texture of the art/world, and some of the colours.

This all wraps around personal experiences of mine with trying to talk through heavy mental-health subjects with my male friends over the years;

For me, I’ve found that myself & other dudes will joke about a problem as a way of dealing with it. Then, over time, you & a mate will slowly open up about a problem, to finally have a conversation where you can finally talk about a problem that’s been bugging you (mostly from my side, bottling it all up to not bother anyone with my supposed bullshit). And then you finally process it and feel better — knowing that someone else has experienced it, or that you’ve said it out loud, not keeping it stuck inside you.

So, to bring the threads together, waaaay back in the weeks post-gamejam, the mission statement was:

“What if you drove a truck around a desert fixing stuff in the far future, where robots were commonplace. You chat with your robot BF who fixes satellites (so you can talk at any point).

Your BF isn’t allowed to worry about problems because you don’t want that when it comes to fixing satellites: you want a focused, diligent individual. But he is worried, about what? You’re not sure.

How would you, the player, navigate that conversation? Whilst trying to keep up with your workload, and a timer ticking down to an event that could change your BF forever.”

And that’s when I sent Freya a message: “yo I’m making a game with trucks & gay robots in it, interested?”

Iterations

So to cut a long story short: me & Freya sat down (on video calls) a few times over December/January to figure out the world, a plot, a timeline for how the world came about, and in general just talk about ideas; and then compile them to see what notes we ended up with.

After fleshing out the world (and as we found out: also making the project 4x as complex), we ended up with some foundational Science Things for this fiction:

  • Personality Cores: the things that drive robot emotion, using ‘Wetware’ as the goop surrounding it. Any robot that runs by itself has one of these. But there are still “normal” computers present throughout the world.
  • Early space travel: we’ve got some robots out here/there as part of mining efforts to get necessary resources for Earth, Mars is a colony, but we haven’t gotten out of the solar system yet.
  • Hard Sci-fi but Soft where we need it: so things have some sense of reality, are worn down a bit — rust ‘n that. But let’s not sweat the details like the electricity requirements of Wetware.
  • Truckin’ as a job, and the crew/operations that surround it are part of the experience, so we’d need a little crew of other robots you chat to as you drive around, & an Operator to wrangle the lot ‘a yas.

And throughout all of it would be a sense of “Mundane but in an enjoyable way”. Ideally you’re enjoying the drive, with interesting conversations along the way; having plenty opportunities for talk over identities, or work as a robot (that can think, can emote), or random bullshit like “hey you heard the story of this shipcrash?”

The main menu design came together REAL QUICK. Coming off Other Waters, I think the idea of a thin, minimal UI was something I wanted to play with, sooo the masking & layout of it all was just playing around with shapes until I was happy.
One of my very early mockups for the story player UI. From the get-go I wanted to have Orby rendered in 3D with half the screen devoted to him, the rest being the story player UI. I can’t remember where it came from, but very quickly I got the idea of tiling blueprint patterns as a background.

During all this, I stumbled onto Alecia Doyley’s work, and instantly loved her blocky heavy colouring. So, with her & a couple days of work, we ended up with our first draft of Orby (the cutest boy). (I think his name came about pretty quickly as “Orbit” >>> “Orby”)

He’d have himself, then a backpack with big arms to hold himself on whilst working on the satellites.

Originally I planned for Orby to have a few hats he could wear, and you as the player could nudge him in a chat to pick a different one early on. But alas, we could never figure out HOW to have that chat happen in-game naturally.
Alecia’s final concept

He’d also wear a hat because “why not?”, rounding out his head, giving him a sense of character; but then this one snippet also lays down track for chatter about how robots see themselves — they do have personalities with some free will, so… would they decorate/accessorise themselves?

After Alecia’s draft, I felt Orby could be a bit cuter — especially with his skull & eye shapes. So (after a lot of revisiting and slow tweaking), I ended up with this revision.

Across the first months, Freya laid out an arc, gave our main character a name (Ground / GC-53AN), and together we constructed our fiction from which this project could grow from.

Our story would all take place across 3 Acts: the sun-scorched desert, a moonlit quarry, then a sunrise finish. Across the 3, I’d add in minigames & some other crane mechanics to help keep the gameplay interesting, and Freya would write this thing into the stratosphere.

With all this, I set out our project timeline, a high-level summary being:

  • January, February, March: core development, getting it all spinned up, story player code, writing, where January was a lot of figuring it all out
  • April, May: polishing it all off, getting art into the game
  • June: Release!

That seems hilariously short, as I write this here in December. But you have to remember that I was seeing this project as mostly cubes, low-fidelity assets, and a real focus on making the writing be the largest content requirement. Since then? It all just kept growing, maturing. For example: very quickly I ran into an issue where the 2nd Act would have to be split into two, as we needed a pitch-black indoors scene, and managing a terrain and an indoors scene in one Act? Too much. So from that we had 4 Acts, and then… what if we could do something more with that new 3rd? & so the scope grew…

More mechanics, more robots, more terrain

Ok, we got a plan, let’s make this thing!

So the goal of the initial iteration was fairly straightforward from a high-level: add a couple twists to how you use the crane, add some things to do on-foot, make the truck more drivable, and bring in more characters to the story player.

As with any big “let’s make a gaaaaaaaaaammmmmmeeee” you get tons of ideas to play around with. For MDay, I came to align them into two groups:

Crane Mechanics — big metal thing wibbles and wobbles then zaps a thing to “““fix””” it

  • Cables — easy enough, instead of fixing a thing, you have to grab a point then drag it to an end point
  • Bridging — easy idea, nightmare in practice. You use the crane as a way of transporting the player from point A-to-B as a means of progressing. What makes this painful is the classic gamedev problem of “the player is physics-based, and we want to move it with another physics object”. Took way too long to implement, but worth it for the mix-up.

Foot Mechanics — you walk around using your robot legs, looking at stuff from a couple metres high versus the massive truck cabin.

  • Interactables — not much to say; it’s the basic system of “walk into a zone, press/hold a button to cause something to act”. But it helps give a tiny bit of control to the player across the game, and to have little “ooh shiny” moments of animation, so it’s worth having in your back pocket imo.
  • Minigame terminals — the BIG thing for the being on-foot. Where you’d walk up to a terminal, then interact with it to trigger a little minigame to “fix” a component somehow. These ended up being a real fun programming challenge for me — where I’d try to write each minigame in a single class with just prefabs inputted into it. Once I got 4 of them, I had enough to spread across the whole game as a little spice & reason to get out of the truck.

On the way, there were plenty ideas that were discarded (note: before I even tried to implement them, these fell by the wayside as part of time-commitments elsewhere, and with hindsight realising they’d be too much work on top of the rest of the game):

  • Lights — This is a twist on the cable mechanic, where you use the cable ‘head’ as a spotlight for moving around a dark space. This is something I wanted to pursue, but with Unity’s URP lighting (in that it’s really iffy to have a realtime spotlight cast any kind of decent shadow), and the rest of the game’s density, I just couldn’t be bothered to follow-through due to the estimated technical/time cost of fixing these lights.
  • Collectibles — another idea in a similar vein to the Interactables, these would be things you picked up around the world. They were only an idea purely because “open world == things to find” but I just kind of didn’t feel like it? They would be just distractions without much reward other than number-go-up. (The thinking was they’d be pages from an MSSIRT manual, as desktop wallpapers you unlocked — cool! but so much art investment to do the necessary illustrations)
  • Scanning — something that came from Freya was the idea of scanning stuff, like in Metroid. Again: cool. But very time-intensive and writing-intensive for not much reward. Let along placing the damn things around a huge open-world (I am le tired and can’t deal with this much space ok, even dotting kit-bash geometry is like a whole day)
  • Battery Management — looking back I have no idea why I thought of this as decent? So the idea is that the MSSIRT had an actual battery level you had to manage, and then keep track of as you drove (i.e. petrol gauge). Except it had solar panels which would help charge up the truck, and you could charge at any station or something. Basically it sucks because I’m inpatient, and once again: this game was already getting big & long enough as-is. So, it was axed (however it still lives on as one of the panels in the truck, purely as a visual element)
Large. Long. Shadows. (Hell yeah)

More characters

As we went, the list of characters grew, and grew, and grew. From just the Player & Orby, to 6 crewmates, an Operator, some other humans, and even more robots (there are so many robots in this game you guys). One fun part of making all these handsome folks is portraits — it gave me a reason to dust off my (old, aching, weary) sketching gloves & draw up some ‘bots.

One thing that I found with Forgetful Loop — and now MDay — is that even with a fairly small cast of voices, things start getting really busy project-wise, as for each character, you have another portrait, another sound-bite, another asset to keep track of.

Pro-tip for any devs: you ought to make a list of character assets to store their name/text colour/alignments/etc, then be able to poll that list with a simple tag to fetch the data with. From there, you can also script into those assets to manage features, e.g. Orby should have per-word sounds, but not minor characters; and the player has their own ‘character’, but without a portrait.

One other issue is tagging: as with Forgetful Loop, I chose to set it where every line has to be tagged with a #ch-tag in order to render as a specific character. Once again this feels so. clunky. but I can't think of another way to approach it? As then you have the ability to do more fun stuff with conversations, and likewise you can read through a convo as if it was a play - each line has an actor who speaks it:

Alas, it’s an easy way that “just works”, and for me the simplest & most reusable approach has usually panned out.

Rolling on a few months and Mia Cain joined! I was looking for someone to make Orby’s proper mesh, and was pointed in her direction (to much resounding awe from me, and “oh hell yeah she’s perfect”). After a lot of back-and-forth, along with 🎵 life events 🎵, we ended up with a great model, and plenty rough texture:

New Orby with a wonderfully chunky background
For reference, here’s proto-orby with his iconic visage
We tried out many, many, MANY colour combos before ending up with Orby’s final look later in June

During this time I also added in the little beeps n boops that give just that touch extra character to Orby/Ground. One thing you learn across a doing a story game is that there’s loads of little ways to give character: emotes, the way text appears, the way it fades, the colour of it- hell the font is such a key way of describing how someone talks. And then… all you need sometimes is a little beep that changes pitch.

Skipping back a bit to February, when it came to the story player itself, my initial push was to work on the visuals — the scrolling, blueprint decorations, and visuals were the FIRST thing I wanted to go ham with. As my main lesson from Forgetful Loop was that it’s storyplayer could do a lot more visually than “just text” (I say that as someone who’s now played more VNs, “just text” is an uncharitable description, but Disco Elysium exists, and I’m a sucker for fancy UI with animations & a little texture, y’know?)

The textures that appear behind the text; the idea is they’re all blueprints of some kind of imaginary component on/in the MSSIRT

And well, the first half of 2021 was pretty damn fun: easy wins, easy blocks of systems coming together, and the game kept growing up in front of our eyes like a blooming flower — we kept finding ways to make it richer, and have that be reflected in the truck, in the dialogue, and in the scenery itself.

Life events occur

Alas, every games project is doomed to overscope/have a problem that delays it.

A few months in, Freya had to move on into FT work, and likewise I myself was slowly plodding through tasks rather than the speed I expected I would be (which was a really foolish estimate looking back, as I planned FT hours when I actually had after-work hours to do things with).

We still had a long list of writing and chats with your robot crew to do, therefore we needed to look at getting another writer involved. So we put out a writing call, got responses, and ended up with the best-worst problem: we had two great writers to choose from, Elliot & Julian.

Well, I’m an idiot spending my own money on the project, so I picked both!

Elliot would work on the in-game stories, as she had a casual-ness to her writing that I felt would work better with the game, and Julian had his Everyone on the Moon book that piqued my curiosity, because it was along the lines of an idea I was toying with: Events occur in the game that suggest a previous major event had happened, what if I commissioned a short story to explore that?

Welp, that spawned a side-story: The Logs from Iapetus (keep an eye out for when this releases!) And well, that’s another 40 pages of writing for the game to keep track of…

Oh yeah, the videogame! Looking back as a whole, one thing that stands out to me is that we had a fairly consistent feedback loop that kept growing the game, but in a really natural way: Something in the gameplay would be added, where the writing (already having plenty to work with), could use the fellow robot characters to feast off the space/scene/narrative as you drove around it (Panther-Eight is a great example of this, they love talking, and especially about the trains/history of the places you drive around)

So, we ended up with some shifting around, but ok. Ok. Let’s see the timeline:

  • April, May: first tests, and revisions, then we finish things up
  • June: still release, but end-of-month, not the start.

So pushed the game back a bit, but still on track to get a releasable build in June. In fact, back in May we were actually getting there — in like an alpha or beta state, come May we were most of the way. All that was left was just… filling in this huge, huge reservoir of content and features that was required of what we laid out. So things would go well? Right?

It took the better part of the day, but the MSSIRT blueprint helped me clue into further art-style patterns for the game — thin strokes, outlines but little detail/texture, and just validating the whole colours & gradient for the storefront theme

Overwork

Part of my memory of Forgetful Loop is that I crunched hard on it, out of pure motivation & a hunger to prove myself. That lead to it being tainted as a project I don’t really want to revisit. Day of Maintenance I’ve been slower with — pushing deadlines to save me stress — but I still ran head-first into a health problem: my hand/wrist/arm started to ache, severely (I’m 80% sure it was RSI).

I’ve been working on this project pretty much most evenings of the past year, just keeping that momentum going; inch-by-inch is how I feel you need to tackle something like this — a missed day is a day you potentially stop doing it forever. That’s kind of a fallacy, as if something gets such an emotional weight like this project? Yes you’ll find the energy to come back (I promise you that you can find it, if you have a team of people who are all excited by the game too)

~

With all this, one day, it started with the lightest of oddities: I would stretch my left hand to hold shift as I pressed on WASD with my other fingers (moving around a map placing props). Then, that action seemed to finally trigger a bundle of stress that’d been building in my left arm.

Over the next few days, it went from an ache, to straight up pain up my forearm — less of a stabbing sensation, more like an angry headache feeling. It’s weird, having a hand injury, because it’s like “Oh. Oh no. I can’t do much can I?” as you need to let your hand rest.

And yet. I still kept working.

I would work at about 1/3 the pace, and even then, that was between plenty of breaks to let my hand rest. It took maybe 2 weeks of care for the initial hand & arm pain to go, but about 3 months for it to truly subside and feel like my hand was back to normal.

As I write this initial draft in September, my arm is basically back to normal, but I still have this lingering tenderness in my left first finger that comes & goes. If I type too hard for too long, or just plain type away for like a few minutes? It starts to build again. (Editing this in November, I get little tinges of stress if I don’t take a break & stretch it out. Plenty of varied exercise, stepping away, with a padded keyboard area for my wrists has helped this a lot.)

~

Here’s the point: take care of your damn hands. Do stretches, walk away from your desk more, and make your day such that isn’t typing some 8 hours a day — that it has plenty of breaks, and that you manage your core/back/shoulders/arms to keep your body in decent condition. Look into wrist & forearm stretches, and look into ways to stretch your back out — see a Physio, if you can afford it.

Immediately after this event I swapped to a split keyboard, which has helped with keeping my arms split/angled, but I can’t 100% say it’s improved things on it’s own as I’ve built up my exercise regime a lot alongside my arm/hand practices (as well as over the pandemic).

Slowdown

But all energy has to be accounted for at some point. Across July we still had the immediate useful deadline of getting a build ready for the Melbourne Queer Games Fest deadline, but after that, we were all spent/juggling a lot of plates each, so agreed to each take some form of break across August.

For me, it was mainly due to me moving & my energy for the project running empty after the demo release. A huge personal takeaway from this is: a games project that goes beyond half a year of development should have a holiday of some kind in the middle. Otherwise the slog of it feels too much; at least for me who likes the easy wins & a general momentum to his work. Maintaining that momentum over more than a couple months for something in my free time has a real test of motivation.

So we all went our own ways — I took a break from MDay to do a small project: “Two PEAs in a Pod

The idea was to help get some fun experimental nonsense back in my life, to be free of the reality & severe “weight” of expectations that MDay was compiling. And it worked, sort-of. I was able to vent some frustrations through painting a terrain, make something a bit romantic, and enjoy a lack of complexity (like not doing a settings screen)

(…and yes. I really wanted to make a game for YaoiJam, ok? You got me.)

Two gay robots wander around an island & talk about absolutely nothing

16,473 words is a lot to write, but when compared to the word count of MDay? Barely a dent. Having that perspective helps in many ways: from just being so proud of what you & a few others have made, to realising quite how much you need to account for.

Ahead of all this, I had tried to set down a final release plan:

  • September, October: would be the push for 1.0 of all the game’s content. After this, nothing new gets in except for super important stuff, it’s 1.0 and we get. it. done.
  • November: fixing & finessing it all to a release shine.
  • December: the anniversary — would be the itch.io release! (Woops! Didn’t hit that deadline, sorry folks)
  • January+: steam release, patching, then we’re all done with it.

I can say that we narrowly made all those deadlines — as of writing, the game itself is not actually that far off release, and we don’t have many showstopper bugs to resolve… but of course, life keeps ticking, and life keeps flipping tables over to ruin your neatly-made plans. I’ve had a very interesting two months this October & November, so sadly the game’s release isn’t today as I’d hoped (so I’ve written this retrospective instead)

And… well we got cracking again (albeit a lot more slowly - myself included - getting back up to speed with this BEHEMOTH of a project)

The Beast

And now… here we are. It’s December 2021, 1 year later. The game is SO. CLOSE. To being finished — me & freya recently found out it’s ~8 hours long of really good content (that doesn’t have much to cut, only edits and improvements really) And now it’s on-pace for being released in Q1/Q2 2022.

What did we end up with?

A larger, more expressive, more emotional, and wildly denser game than I ever would’ve expected. From basically every way, this game is monumental to me in what we’ve accomplished during a pandemic year in our respective part times:

  • 4 acts, each ~2 hours long
  • Over 72K lines of writing, with over a dozen characters showing up in some form, and like 7 different ways to have story/chatter present itself
  • Over a dozen music tracks, with actual composed music as part of the finale
  • Almost a dozen other people in the ‘team’ credits
  • A side-project short story
  • And an ungodly amount of code, commits, art assets, and duct-tape

It took delay, another delay, and another delay; but it’s close, I swear to god we’re close!

Throughout this, it’s been far more of an endurance & project management test than I could’ve expected, with us all starting/stopping/starting/stopping on it in our own ways, but it’s almost done.

My truck-sim, crane operation, gay robot visual novel game is almost done.

And. I’m like… 90% sure it’ll never recoup the amount of money I put into it.

But fuck it. This project has become so much more than just a game to me. Like, in a weird way, making this game has helped me come out to myself more? I remember at first being really awkward around saying that Orby is your BF in the game — like I was embarrassed a bit by it, by wanting to make a game so purely about a cute, warm gay relationship.

And now it’s just: Yeah it’s a gay game, about you and your BF whilst you drive a truck in the far-future, it’s low-fi blocky geometry, fuck you think of that? Here’s robots. (I’m also putting Two PEAs into this bucket, because that helped me realise that: yeah, I do want this, I do want to make games about Queer relationships where they get all romantic ‘n shit, and I won’t hold back)

Anyway. We’ve gotten this far, I’m not quitting now. Here’s to 2022.

--

--

Canvas

aka 'bighandinsky'; i make hard-to-genre games, write out long-format thoughts, and sometimes write creatively too.