Not that the process hasn't gone well for them -- Uncharted and UC2 are totally awesome, and watching the UC3 trailer gives me goosebumps. Dan (head gameplay programmer) did miss it so bad that he went with Scheme for their scripting :-) There are many ways to skin a cat, and the truth is that as long as you have good people (which they do in spades) and make decent decisions decisively, things tend to work out. Forward progress is one of the most important things.
http://all-things-andy-gavin.com/2011/02/02/making-crash-ban...
http://all-things-andy-gavin.com/2011/02/03/making-crash-ban...
http://all-things-andy-gavin.com/2011/02/04/making-crash-ban...
http://all-things-andy-gavin.com/2011/02/05/making-crash-ban...
http://all-things-andy-gavin.com/2011/02/06/making-crash-ban...
http://all-things-andy-gavin.com/2011/02/07/making-crash-ban...
http://all-things-andy-gavin.com/2011/02/08/making-crash-ban...
Our motto was “bite off more than we could chew, then figure out some crazy complicated way to make it work.”
What a great motto to have for anything you're working on, clearly it paid off.
HNers might be sad to learn that they gave up writing games in their home-grown Lisp with the advent of the PS3 era. It was called GOOL, and later, GOAL: http://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp
Hearing that they use Racket now, that just makes me all happy inside.
Uncharted is using a LISP-like scripting language for gameplay scripting. Most large games use scripting these days (LUA is pretty common), this just happens to be a lisp-flavored variant of that. There's a huge difference between writing your gameplay scripting in a lisp and building your entire game in it.
Well, at least until I told my Fundamentalist mother that there were Satanic symbols in the game. That put an end to that...
Seth worked out the (5D) math to trace the propagation of light through portals and precompute the set of visible polygons from any point in a so-called "architectural walkthrough" -- i.e., traversal of a space with lots of walls.
We knew that would never work for something as low-power as the PS1, but we were intrigued enough by Teller's work to try a very watered-down brute force variant.
As Andy describes in the article, this is what led to our precomputing the visible set of polygons (and their relative sort order) for every frame of the game. This was actually hard for three reasons:
- we had to distribute the precomputation work across all the artists' SGI workstations to get it done in under an hour per level - we had to store a sorted list of polygons per frame in a compact enough way that it would fit - we had to weave the foreground elements, which were not precomputed, into the background, which was
It was a really fun, but very challenging, project to get this all to work.
http://all-things-andy-gavin.com/2011/02/04/making-crash-ban...
http://all-things-andy-gavin.com/2011/02/10/crash-bandicoot-...
http://all-things-andy-gavin.com/2011/02/16/crash-bandicoot-...
I learned a lot by making that step, and there is way more to be learned.