3 ms·
Mario 64 wasn't itself written in LISP at all. It's models were built in Nichimen graphics, a SGI based 3D design tool written in Allegro CL. As far as I know,
by agavin 15y ago
Mario 64 wasn't itself written in LISP at all. It's models were built in Nichimen graphics, a SGI based 3D design tool written in Allegro CL.
As far as I know, the games we did at Naughty Dog (Crash 1-3, Jak 1-3 + X), and later Uncharted were the only major console games which large amounts of runtime Lisp. The Jak & Daxter series was 99% written in my Scheme dialect GOAL, including all the assembly. The only parts that weren't were libs talking to Sony's libraries (C++).
http://all-things-andy-gavin.com/category/games/ http://all-things-andy-gavin.com/category/games/
- dgallagher 15y agoI loved the "Making Crash Bandicoot" series on your site. It's well worth the read: http://all-things-andy-gavin.com/2011/02/02/making-crash-bandicoot-part-1/ http://all-things-andy-gavin.com/2011/02/02/making-crash-ban...
- JabavuAdams 15y agoMuch respect! Reading about GOOL and GOAL is what got me into Lisp. Working at a previous game company, on a PS2 title, we spent a lot of time oohing and aahing over J&D's beautifully fluid animations. I'm actually still playing through the game as part of my "PS2 classics" backlog. Very nicely done! I didn't realize Uncharted used any runtime Lisp -- could you elaborate? /gush
- ginsweater 15y agoUncharted uses a DSL for gameplay scripting. The compiler is implemented in Racket. You can see what it looks like in Jason Gregory's 2009 presentation: http://www.gameenginebook.com/gdc09-statescripting-uncharted2.pdf http://www.gameenginebook.com/gdc09-statescripting-uncharted... The compiler is written on top of the low-level system in Dan Liebgold's 2008 presentation: http://www.naughtydog.com/docs/Naughty-Dog-GDC08-Adventures-In-Data-Compilation.pdf http://www.naughtydog.com/docs/Naughty-Dog-GDC08-Adventures-... More or less, the sexps that define a state-script get run through a maze of Scheme macros - there's even a pretty decent expression language in there which is compiled to bytecode - and the result is big honking C++ structure which is fed to the Uncharted runtime and interpreted. In particular, note all those wait-blah-blah calls; those are using call/cc to implement coroutines. Which is something you really really want in a game but which C++ of course doesn't have. (GOAL had native coroutines.) It's also nice to be able to iterate on the language syntax without having to fool with BNF grammars and so on.
- lispm 15y agoI would guess that the 'worlds' in Super Mario 64 were also done with the software. There are somehow similar 3d worlds in a movie (Jetsons) done with the Symbolics S-Graphics software.