Work continues with Contracts, the weeks are starting to blur together as a continuous stream of work. As you all know by now, Chad is moving on to other projects.
At this stage in the project, bringing in someone new as a straight up replacement isn't a possibility. The level of familiarity a developer gains after working for years on a project can only be gained by working, well, for years on a project. We have new people on the team as well, Hugo is doing some very good work, Rogelio is helping Dan with the animations, which frees him to take on some of the roles Chad used to do, and Nick, who modelled several of the parts in the ARM patch, is also working on other design jobs for things still some ways away. The plan then is not to replace, but to adapt to this new team structure.
Not all is gloom and woe though. On the development side, we now have ahead of us what is unmistakably the last stretch for Contracts and Budgets on this update, so we shouldn’t be far now from a system which will obviously still need a lot of content added to it, sure, but should be able to handle just about any idea we can throw at it.
To put this into perspective, I may have said this before, but I’m quite convinced now that the only existing system that is similar to the Contracts system in magnitude and robustness is PartModules. Now, consider that PartModules, while it made its first appearance in the 0.17 update with the LaunchClamps and got going in 0.18 with docking ports and all the other bits, the basic system itself actually entered development around the time of 0.15. About 6 months or more of development before it was even announced. it did turn out to be a system so important to the game, it was worthy of an entire talk to itself at the GDC.
With Contracts, we are faced with a task that is similar in many ways. However, this time we are under very different circumstances. Most obviously, the game is now much, much larger than it was when the first Module-based parts were added, but perhaps not as immediately apparent, the level of quality expected of such a system today is orders of magnitude greater than what it was about a year and a half ago.
This is by no means a bad thing. If the expectation of quality is ever rising, it means at the very least that we aren’t making the game worse.
But therein also lies the main issue of recent times, and also the reason why we decided to push the 0.24 release back. If we had released Contracts as they were last week, back in the days of 0.17, it would have been pretty ok, and about on par with the rest of the game. However, because everything else is so much further developed, every new feature must be implemented, from scratch, up to the same levels of quality as the rest of the game, which is a lot of work to cram into a single update.
The plan then was to split up the update into two smaller chunks: Contracts first, generate missions based on this progress-aware, semi-procedural framework, then create some placeholder contracts to make sure the thing worked. On the next update then, tie it together with budget management and add in some proper contracts.
Of course, that plan didn’t quite work out. Not because of any technical problems, though, but because of a game design one. As I explained earlier on another article, there was no point to having contracts in before budgets, nor would have there been much use for budgets without contracts. The two systems, while technically separate, were one big gameplay mechanic.
That was the focus of the first week or so of our ‘extended time’ with 0.24. We added enough of the budget functionality to make sure Contracts had a proper purpose and reason for being in the game, and that much I can say, has worked. Being required to purchase your vessels before you launch, and being rewarded for the things you achieve adds a whole new dimension to the game. Arguably, the missing link between a Space Exploration Sandbox and an actual Space Agency Game. There are other Career mechanics still left to add, of course, but nothing of this scale. With Contracts and Budgets in, Career Mode is now finally reaching a point in development where we can start to appreciate the entirety of what KSP will be.
This not-so-distant point now, is what we set out to achieve after we declared KSP to be Sandbox-Complete, just as we finished up updates 0.19 and 0.20, and started in earnest to add Career oriented features. We are now looking, albeit still from a couple of updates away, at Scope Completion.
If you weren’t around when we announced Scope Completion as our goal back then, let me recap: Scope-Complete means that every major gameplay system in the game is implemented, even if its content is limited. It means all the necessary support for the game’s content exists and can be expanded upon.
I do need to make one thing very very clear: Reaching Scope Completion does not mean, by any means, that we’re done with the game, or even that the features we have are now finished and beyond improvement. Quite the opposite in fact. It means there are (or will be, as we’re not quite there yet) no more base systems left to do, and from there on, the focus shifts to improvements, optimization, and content.
Of course, we have to to make sure we add enough content to show our new systems in function (imagine building yourself a top-notch gaming PC and having no games to play), but for a lot of areas, the amount of content we have added so far is symbolic at best. In some cases, like Biomes, it's actually the minimum needed to make sure the system is able to function, and scale as more content is added onto it later.
This is how we’ve developed KSP from the start. Always focused on what I call the ‘area of least development’. Whichever part of the game is the least close to completion, or furthest behind in comparison to others, is the area to focus next.
Working with minimal content during development isn't a bad thing for developers. I can't count how many times I've dreaded the prospect of having to go through all the 170+ parts and their configs, to make some tweak or another. Having less parts in the game would have certainly made life easier for us on many a situation... It would also have made for a much less interesting game. This, as with so many other things, is something we have to maintain in balance.
Walking this line is not an easy thing to do. It's very easy to get tempted to follow some feature or another all the way through, rushing through it on that surge of ideas that pop up as you work on it. Other times, an opportunity may present itself which cannot be delayed (like a very recent one featuring asteroids, you may remember it). On yet other times, you feel the urge to just start chucking in everything that is missing, in the crudest way possible.. I don't have to explain why that last one is a bad idea...
Naturally then, we have taken a few side steps along the way, adding features of opportunity here and there as they presented themselves, or killing off some annoying bug that had just pestered everyone for too long. For extremely large projects, like Multiplayer, we’re working on it in the background from several months in advance, so by the time we are ready to start focusing every effort on it, we won’t be starting from scratch. Sometimes it's worth it to leave the path to pursue something unique and interesting, other times however, we have to force ourselves to not work on that thing we've been itching to do for so long now, but won't get the game any closer to completion.
In any case, the bottom line is that ever since 0.19-0.20 were released, our main goal has been to reach Scope Completion: Not finishing up what we started, but starting what still doesn’t exist.
I do have to say this very clearly: Releasing 0.24 does not mark Scope-Completion. There will be at least one, possibly more updates still before that. However, after 3.5 years of work, a couple more updates is really not such a long way to go.
We're getting there. Perhaps not as quickly as we would like, but we are getting where we want to be.