Looking back over the entire production of Uncharted, there were quite a few ups and downs, and several things that went right and more than a couple of things that went wrong. While this could probably be said about the production of any videogame, we started off with one fairly unique problem that spawned several of the issues that we ran into down the line. However, through the hard work of an incredibly talented team, we were able to turn those issues around and ended up in a position that leaves Naughty Dog in an even stronger position than I could have hoped for.
The initial issue that I'm talking about is that when we moved from the PlayStation 2 to the PlayStation 3, we started with NOTHING! At Naughty Dog we had been programming in our own internally developed programming language called GOAL. It was a Lisp-based language and it was a great environment for game development that allowed for very rapid iteration times. However, when transitioning to the PS3, we knew that we wanted to do a lot more sharing of technology between all of the Sony first party teams, so we had to switch to the industry standard of C++. This meant throwing out all of our old game code and starting every last system from scratch. As you can imagine, it took a lot of time to build up our code base to the point that we could even start prototyping gameplay.
Since we were starting our game code from scratch, I guess we thought it was a good idea to start our tools from scratch as well. This was simply a huge mistake. Anticipating the large increase in size and complexity of next-gen assets, we over-designed our tools and ended up creating a pipeline that was too difficult to use and incredibly unreliable. About ten months into full production, we decided to abandon our new and "improved" pipeline completely, and ended up going back to a system much more similar to the way we were doing things in the past. This ended up being the single biggest improvement we made to production all project long.
Of course, not to over-emphasize the mistakes, we also did a lot of things right. One of the biggest and most important things that we did was to keep our development fluid and flexible. What that means is that we didn't hang onto ideas just because they were in our original design documents. If things weren't working in the game, we would either cut the feature, or stress another area of the game that was working.
Finally, the most important ingredient in the development of Uncharted was the team. We have very rigorous hiring practices at Naughty Dog and we only want the very best talent in the industry. This allows us to keep a relatively small team, since everybody is self motivated and extremely artistic (even the programmers!). Once all the technology was in place and the team was firing on all cylinders, it amazed me week after week how much we could accomplish in a short amount of time.
All in all, Uncharted was one of the most challenging projects that Naughty Dog has ever embarked upon. Now that the game is complete, I can honestly say that it was one of the most rewarding experiences for me personally, and an accomplishment for the team that I couldn't be more proud of.