Super Mario 64 was built with a system written in Lisp
franz.com
franz.com
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/2011/02/02/making-crash-ban...
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
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-...
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.
Yes, I wrote it. Yes, it was my first non-academic programming job. Yes, the users complained about the parentheses, and the slowness. But, they also took advantage of the powerful macro facility.
I ran it on an Apple II. It had a 1 MHz 6502. And yet, it felt more responsive than my first IBM PC... Odd times.
And I had to use Merlin... Sadly, I couldn't afford a VAX :-(
http://dynamo.iro.umontreal.ca/~gambit/wiki/index.php/Real-w...
https://github.com/jlongster/gambit-iphone-example
I used Emacs which spawned a REPL connected to a live instance of the app and developed from there. Meaning, the app was running in the simulator/device, and I could evaluate code and instantly see changes.
It appears as you have discontinued this project. Was that clause the reason?
here is his blog for reference: http://jlongster.com/legacy/scheme-iphone-apps.html
I burned out on Scheme and not having a large community of developers, but I'm starting to work on things again, but not iPhone apps.
Gambit is more lean and portable, good for uses like compiling to the iPhone (that would be much harder for Chicken).
That said, I would probably use Chicken for my next project.
Clairvoyant, those 90s game developers were.
Doom code is C, DoomEd is Objective-C and ran on NeXT boxes.
if i recall correctly, directtv boxes are all essentially just web servers and even expose some methods via http. i believe i heard that their hud/gui/etc is all written in javascript and html. incidentally, they also did this a decade ago (or so) when javascript was still quite young.
Franz Allegro CL is a further development of Maclisp, developed during Project MAC at MIT. ZetaLisp was also a direct development of Maclisp. I'm guessing this shared ancestry helped in the software porting and made Franz the natural choice for the N-Graphics. But the press release just blows a lot of smoke about the speed and scalability of Franz.
You are completely wrong. "Franz Lisp" was written to be compatible with Maclisp so that it could run Vaxima. "Allegro Common Lisp" was written from scratch with no relation to Franz Lisp or Maclisp.
I did some really early Apple Newton development work in around the same timeframe ('96, '97) and the early Newton development tools were also all written in Lisp. Probably Mac Common Lisp.
Not so strange of course since many people on the Newton team had a strong OODL (Object Oriented Dynamic Language) background. These are mostly the same folks with SmallTalk, Lisp, Scheme and Dylan experience.
Awesome times. But not much of it is left.
I have all sorts of articles on Crash 1 on my blog: http://all-things-andy-gavin.com/category/games/
For Jak & Daxter 1-3 + Jak X I did a new Scheme based compiled language (GOAL) in which 99% of the games were written. I haven't yet done a big write up on that for my blog, but I will one of these days.
BTW. Abuse is a half-C, half-Lisp game.
Oh please, use something like blip.tv, as it handles podcasts properly. This way I can watch it on my TV and hack from the couch. I need to get away from my desk to get the creative juices flowing.
http://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp http://c2.com/cgi/wiki?LispInJakAndDaxter <-- regarding Jack & Daxter mentioned in the comments.
"[... ] our tools were used to model the characters for Super Mario 64".
I bet SM64 was written in C++.
EDIT: ... and possibly large chunks of it in C, too, since the C++ compilers always seemed to lag several months behind the C compilers on new platforms, and SM64 was a launch title.