The Final Update
FRONTIERS is Finished
A new build - the final build - has been pushed to Steam. The game has exited early access. It's not perfect - not even close to what we'd hoped for - but it's done. Janky, ugly, compromised, buggy, missing tons of promised features... and done. You can install it, launch it and play it from start to finish. I've done so dozens of times. (And never will again, knock on wood.)
Thought You'd Heard The Last From Me, Eh?
Can't say I blame you. It's been almost two years since the last big update. Unless you're one of the backers who contacted me directly you'd have no way to know I was still hard at work. Raising a kid while working full-time doesn't leave much time for development, but I've averaged a few hours of work a night with occasional full-time sprints during weekends & vacations.
Repo activity for 2019. The blob around April marks the beginning of the final refactor.
In all my project-filled years I've never sustained this kind of day-to-day commitment for such a long period and regardless of the final product I'm proud I stuck with it.
That's The Good News
There's no way to sugar-coat the bad news: many features and rewards were cut to make final delivery possible. If you're someone who pledged for a reward you won't ultimately get, I'm sorry. I won't bore you with technical justifications. I promised too much and I can't deliver.
The features that made it in are distributed in ways that are sure to seem frustratingly unfair and arbitrary. The principle behind every cut was this: if we keep this feature or reward can I still finish the game? If the answer was no then I cut it. It wasn't possible to give you all everything, but at least I can give you all something. Less than what you all deserve, but something.
I'll stick around to answer questions about individual features & rewards in the comments.
What Happened After The Last Update?
In the
December 2017 update I was optimistic about a new code refactor. I was
posting smaller updates to Twitter as well, and I was even gearing up to do some twitch dev logs. Then I went abruptly and totally dark in 2018. Why?
Because gridlock - the old enemy I discussed at length in the
November 2015 update, and the primary motivation behind the refactor - was wrapping its cold, bony, strangling fingers around the project's neck again. AGAIN. The refactor was making the code prettier, smaller and faster, yes. But it wasn't fixing the one problem that mattered. In another few months it was obvious I'd be stuck. AGAIN.
Fallen Comrades
The reality that the game might never be finished set in. That was an actual thing that could happen. Not because I'd given up, or because I couldn't handle it emotionally, or because the heat-death of the universe had finally set in. It might never be finished because I was incapable of finishing it for reasons beyond my understanding or control. Just... kill me already. I could barely process this impending failure privately, let alone publicly.
A lot of other ambitious Kickstarter indies were being cancelled or suffering catastrophic setbacks around the same time. The effect of these failures on my morale was not great given that many were helmed by veteran designers with impressive pedigrees. The cancellation of
Limit Theory in particularsent a chill down my spine. Jim Rossignol is unequivocally a more talented developer and programmer than I am, and from what I gather similar issues killed his 6-year project. What hope did I have?
Mid 2018 got pretty dark, and early 2019 got even darker. I drafted cancellation updates more than once, feeling that it was dishonest to string everyone along.
Third Time's The Charm
In early 2019 impending gridlock ground development to a halt as predicted. So I set programming aside and focused on the interface rebuild while I weighed my options.
With the many, many other walls I'd hit on this project I could always tell you what was wrong. (And
often did, at length.) I may have lacked the experience to engineer a solution at first, but that was easily remedied with a little research & labor. Here my struggle was to identify the problem. 'Gridlock' describes the result, not the problem itself. And 'complexity' is not the problem because complexity doesn't always result in gridlock. If it did we'd all still be making Pong.
So I reasoned that I must be lacking some crucial knowledge. I needed vocabulary. I needed theory. Once I could think about and describe the problem in precise terms I could identify the skillset needed to engineer a solution, learn those skills as quickly as possible, then take one last stab at refactoring.
Pretty vague as plans go, but it was better than giving up. I chose 2020 as hard deadline because this couldn't go on forever. If it wasn't working then I would frankly admit defeat, cancel the game and accept that the project was simply beyond my capabilities.
Humorous unrelated visual to break up the text
Thank Goodness For My Day Job
Working at Microsoft has its perks. A big one is a steady stream of positive reinforcement. I was delivering quality code to discerning experts on a regular basis, and I was observing teams of talented & experienced developers struggle with the same kind of gunk that was blocking me on FRONTIERS. If I had been isolated I might have succumbed to gnawing doubts about my fundamental competence, but the job kept them at bay. I could do this.
Now, I had originally planned a much larger update - oh, irony - where I described what I learned and how I applied that knowledge to FRONTIERS. It's a fascinating subject and there's enough material for three updates. Maybe another time.
Systems, systems, systems
The short version is that I rewrote the game completely from scratch - the lines of code that survived this process are in the low hundreds - and when I finally wove all of the game's systems into a final framework, there was no gridlock. Gods be praised, I was over the wall.
Once it stopped being a question of possibility, it became a question of time - did I have the time to pull all the old game content into the new framework and deliver something that was functional by 2020? I did, just barely. And here we are.
Time to Take a Break
I'm getting old. I've been working late into the evening on something or another for my entire adult life and I'm ready to put that activity on pause and just be part of my family for a while.
Olive will be 3 years old soon and this is a very important time in her life - she's starting to pay close attention to how present I am and how often I choose to work on projects instead of play with her or to spend time together as a family.
So this is goodbye for a bit. I'll stick around to answer questions for the next day or so, and I'll probably get in touch with many of you directly. Then I will be taking a long break from FRONTIERS.
Thank You Everyone
Thank you again. For believing in me and for pitching in to make this project happen all those years ago. Even a perfectly realized game would have been a feeble reward for all the patience and encouragement and good times you've given me.
I hope the work I've done brings you some joy, and I hope that in the future we'll reflect on this insane expedition with some fondness.