1. Prolonged Dev Cycle. As we mentioned above, TimeShift was in development for more than four years. We went through a publisher switch. Even at that moment, the game was somewhere around beta and was already undergoing serious QA at Atari, and a demo was already out on PC and Xbox 360; a year later we had to clear up the confusion when people were downloading the OLD demo and thinking they are playing the new one.
A total of four executive producers, two writers, and a large number of creative people worked on the game. By the time we finished, we were operating under Amendment 17 of our initial contract. An insane number of piecemeal two to four month extensions never allowed us to neither bring the game to the finish line, nor make a big enough overhaul. The game as it was in September 2006 was a mishmash of way too many creative visions.
Certainly the last extension was an exception to this and allowed us to bring the game to the level of quality it deserved, piecing the elements together. It worked out for the most part, but the story came out relatively weak.
We were constrained by the fact that we could not really take the game through a proper preproduction and planning phase, and could not change a lot of levels to accommodate to the final creative vision. Certain members of the gaming press criticized us sharply for that.
Another negative effect of the game being so long in production, and being close to the finish line so many times, was that by the time it was getting close to being released it had already been shown to the press over and over again.
How many exciting stories can you tell to the same journalists who've seen the title three or four times already? The surprise factor was totally lost, and Sierra's PR staff had to overcome a lot of skepticism. Because the game was shown primarily to the U.S. press, PR efforts were easier to carry out in Europe where the game was fresher. That's probably one of the reasons we are getting consistently higher review scores in that region.
2. "Not Invented Here" Factor. At Saber, we strongly believe that it's absolutely essential to rely on our own technology. TimeShift is built using our proprietary Saber3D engine and toolset. Having full control over the entire production pipeline has allowed us to accommodate new features easily and to optimize our production processes.
We fully believe that we would be unable to implement one of the most challenging technical features of the game -- time reversal -- had we not had built the game on our own engine. Having said that, we realize that there's a great value in using engine components provided by third parties. For TimeShift, the primary components included GameSpy for networking needs, Fmod for audio support, Bink for video playback, and Havok for physics handling.
Adopting these systems was a great idea which allowed us to focus on the game rather than on pure tech. All of them are tested solutions, utilized on a large number of projects in the industry. We therefore expected them to be as reliable and robust as the CLIB base library. Unfortunately, that was not the case.
Sometimes the issues were known and there were pre-existing workarounds or fixes available, but every once in a while we were stumbling upon an untested piece of code, or an unanticipated use of a subsystem, or a lack of a vital piece of documentation which made some concepts unclear to our engineers.
What came as a surprise, though, was that whenever an issue arose with any of these components it oftentimes required massive efforts to nail it down. Conference calls were scheduled, mini-apps that demonstrated the problem in a testbed scenario were built and sent to the providers, and support trips were set up to bring the engineers on-site to address the issues "right on the spot".
All of that slowed down the development somewhat and was always a "scare factor" to the senior management. What if an engineer from one of these middleware providers would not be available for a quick trip to our offices?
At the end of the day, though, we were able to address all of the issues and ship on time. Many kudos go to all of those middleware providers who helped us by going that extra mile, flying in from all over the place to St. Petersburg, or making themselves available at odd hours to talk to our team.
The lesson learned is that it's certainly a great idea to utilize third-party solutions, but because those providers don't work for you they may have other priorities, so enough time needs to be allocated to deal with the possible issues. It's also crucial to integrate and test all third-party components as early in the dev cycle as possible to be able to accommodate to any contingencies.
And it's essential to get the source code for all the components so your engineers can at least see exactly what's happening at the source code level and report specific info such as callstacks, the values of registers or variables back to the middleware support team. Establishing direct relationships and lines of communication with tech support people is invaluable, with real-time communication means such as ICQ or other IM services being preferable to slower email or web-based ticketing systems.