
Super Mario 64 was built with a system written in Lisp - old_sound
http://www.franz.com/success/customer_apps/animation_graphics/nichimen.lhtml
======
agavin
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/>

~~~
JabavuAdams
Much 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
Uncharted 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-
uncharted...](http://www.gameenginebook.com/gdc09-statescripting-
uncharted2.pdf)

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-...](http://www.naughtydog.com/docs/Naughty-Dog-
GDC08-Adventures-In-Data-Compilation.pdf)

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.

------
neonscribe
In 1983, Rescue on Fractalus and Ballblazer, the first releases from Lucasfilm
Games, were built with a system written in Lisp. It was a 6502 assembler with
Lisp syntax and a Lisp-style macro facility, written in Portable Standard
Lisp, running in Berkeley Unix on a 4MB VAX 11/750. Unfortunately it was
eventually abandoned because the developer had left and it was a bit of a
strain on the VAX that was shared by the whole development team.

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.

~~~
pstuart
Fond memories of Ballblazer. An amazing creation for a ~2 MHz 8 bit cpu.

~~~
neonscribe
Written by David Levine, <http://grokware.com/dl/resume.html> who credits the
Lisp-based Macro Assembler in his resume!

------
jlongster
I built an iPhone game with Scheme, and I have to say, it was the best
debugging/development environment I've ever had.

~~~
Vekz
jlongster I was closely following your blog posts about Gambit-scheme on the
iphone and was even inspired to try it myself. However this was shortly before
Apple changed the developer agreement to add the "stuff that compiles to
objective c is not acceptable" clause.

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>

~~~
euccastro
FWIW, Gambit C compiles to C, not to Objective C. I'm not sure that makes a
difference, though.

------
thought_alarm
Doom was built with a system written in Objective-C.

Clairvoyant, those 90s game developers were.

~~~
jbrennan
Can you describe it? I thought the code was all C? Or were the tools written
in Objective-C? Either way, that's very interesting (big Objective-C fan,
here).

~~~
thought_alarm
John Romero wrote up a pretty cool post about the use of NeXTSTEP and
Objective-C at id Software during the 90s.

<http://rome.ro/2006/12/apple-next-merger-birthday.html>

------
bcaulf
It's a little disingenuous for Franz to claim any credit for Nichimen.
Nichimen N-Graphics was the spinoff of the Symbolics S-Graphics system,
written in ZetaLisp. Symbolics ceased new development and there were customers
for the graphics system, so it needed to be ported to a Lisp environment that
would run on available hardware.

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.

~~~
e40
> Franz Allegro CL is a further development of Maclisp

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.

~~~
bcaulf
I see now after more reading that I was wrong and you are right. Franz Lisp
was a new implementation that was compatible with Maclisp and Allegro Lisp was
a later new implementation. I'm sorry to have posted bad information.

------
st3fan
It is cool but I wonder how many customers you get with a story that is 15
years old. The world has moved on.

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.

~~~
old_sound
I've posted the link. I've have no affiliation with the guys from that site.
Just wanted to share an interesting story.

------
mtogo
The Jak and Daxter series (PS2) was also written (almost?) entirely in Lisp,
too.

~~~
notlion
Or more specifically, GOAL -
<http://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp>

~~~
notlion
..which incidentally is how one of the villains got his name:
<http://jakdaxter.neoseeker.com/wiki/Gol_Acheron> :P

------
TeMPOraL
Thanks for sharing this link. I'm giving a talk on Lisp and computer games at
my university in less that two weeks from today. It's great to have more
examples to share.

BTW. Abuse is a half-C, half-Lisp game.

~~~
ericlavigne
Good timing. You can also use the results of the Lisp Game Jam that starts
today.

<http://lispgames.org/>

~~~
rbanffy
> NEW: Lisp Games Development Screencast 1

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.

------
old_sound
I've also found this resources talking about Lips in the gaming world:

<http://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp>
<http://c2.com/cgi/wiki?LispInJakAndDaxter> <\-- regarding Jack & Daxter
mentioned in the comments.

------
tzs
Note that the article seems to be talking about the tools used to build the
game, not the game code itself. I'd guess this means things like texture
editing, level design, and such.

~~~
Luc
As far as I can tell N.World was a modelling and animation (and rendering)
package comparable to Maya. See this press release from 1996:
[http://findarticles.com/p/articles/mi_m0EIN/is_1996_August_6...](http://findarticles.com/p/articles/mi_m0EIN/is_1996_August_6/ai_18562821/)

"[... ] 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.

~~~
ajg1977
It was written in C and assembly.

------
cageface
This seems like pretty old glory to trumpet in 2011.

~~~
e40
Or, that's been on their website for a long time and someone found and posted
it here.

------
rcneel
Haven't you ever unlocked Lambda Mario? I thought this was pretty clear... ;)

