From: Craig Reynolds
Subject: Lisp powers Jak & Daxter at Naughty Dog
Date: 
Message-ID: <39514d33.0303082208.5591b4b3@posting.google.com>
Sorry if you have already seen this.  I asked the-usual-suspects who 
else might be interested in the message below and comp.lang.lisp was 
one of the suggestions.  This issue has been mentioned here before:

Re: Success Stories 
Date: 2002-04-11 09:57:54 PST 
http://groups.google.com/groups?selm=lak7reuqel.fsf%40buzz.in-fusio.com

The specific URL for the Game Developer magazine article mentioned in 
that post (free registration required):

Postmortem: Naughty Dog's Jak and Daxter: the Precursor Legacy
http://www.gamasutra.com/features/20020710/white_02.htm


Craig Reynolds
http://www.red3d.com/cwr/




-------- Original Message --------
Subject: Lisp powers Jak & Daxter at Naughty Dog
Date: Sat, 08 Mar 2003 12:38:58 -0800
From: Craig Reynolds
To: the-usual-suspects

I had a surreal experience yesterday at the Game Developers Conference.
The director of a successful software company was complaining about how 
hard it was to find good Lisp programmers.

Stephen White, of Naughty Dog, Inc. spoke on "The Technology of Jak & 
Daxter".  Naughty Dog (http://www.naughtydog.com/) is a game studio in 
LA, known for its popular Crash Bandicoot series and now Jak & Daxter.

He also talked in glowing term of how the power of Lisp (well, Scheme, 
well GOAL: Game Object Assembly Lisp) helped them create the complex 
runtime code of a major commercial console game.  The text of a few of 
his slides is included below.

(In Crash Bandicoot, they used a game engine written in C which they 
scripted in GOOL, an earlier Lisp-like language.)

I thought this would be of general interest to TUS, and perhaps even a 
job opportunity for someone.  Naughty Dog is hiring and they need Lisp 
programmers.  Can anyone suggest other Lisp-friendly communities I 
could send this to?



What is GOAL?
* GOAL is our custom compiler based on Lisp (well, actually Scheme).
* Practically all of the run-time code (approximately half a million 
  lines of code) was written in GOAL.
* Only the IOP code and a small amount of kernel code was written in C.


GOAL Features
* Object-oriented language.
* Extremely simple syntax.
* Powerful macro capability,
  far superior to C's preprocessor or C++'s templates.
* Listener
  * Code can be executed live at a "listener".
  * Code can be compiled, downloaded,
    and linked without interrupting gameplay.
  * Data structures can be inspected or modified live.
  * Rapid tuning and debugging.

From: Olivier Drolet
Subject: Re: Lisp powers Jak & Daxter at Naughty Dog
Date: 
Message-ID: <599a6555.0303091523.40b8d9c5@posting.google.com>
···@red3d.com (Craig Reynolds) wrote in message news:<····························@posting.google.com>...
>(...) 
> What is GOAL?
> * GOAL is our custom compiler based on Lisp (well, actually Scheme).                                                                           
>(...)

Is it correct to understand that, using Franz' Allegro CL (says so on
Franz' website), they developed GOAL as a scheme-based language to
program in?

Olivier
From: Duane Rettig
Subject: Re: Lisp powers Jak & Daxter at Naughty Dog
Date: 
Message-ID: <4bs0jaurq.fsf@beta.franz.com>
·······@mac.com (Olivier Drolet) writes:

> ···@red3d.com (Craig Reynolds) wrote in message news:<····························@posting.google.com>...
> >(...) 
> > What is GOAL?
> > * GOAL is our custom compiler based on Lisp (well, actually Scheme).                                                                           
> >(...)
> 
> Is it correct to understand that, using Franz' Allegro CL (says so on
> Franz' website), they developed GOAL as a scheme-based language to
> program in?
> 
> Olivier

Franz Inc and I are under nondisclosure with Naughtydog from a
contract we did for them, so I must be careful what I say.
However, I did get permission from Andy Gavin from ND to say what
I like as long as it's good :-).

Yes, Goal looks a little scheme-like, and yes, it was developed
to compile on Allegro CL.  I would characterize goal in broad
terms as a cross-compiler, written in Allegro CL, for a game language
to run on a mips r5900.  It has CL-like qualities, scheme-like
qalities, and game-specific qualities.  As far as I can tell,
though, the overriding factor in what Goal looks like is its
orientation toward game play.  The compilation is direct; there is
no interpreter on the target game boxes, as I understand its
predecessor GOOL had.

To back up into a more general point of view, I believe that this
is one of the most perfect applications of Common Lisp, since it is
one of the only language that can do it, and CL is certainly the
only current language which advocates it in its culture.

The "this" of which I'm speaking is the fact that Lisp is an
excellent language for writing languages.  Many of the more
successful large projects in Common Lisp are written by inventing
a language which best describes an application-specific domain, and
then writing the language in CL.  An example of this is a CAD system,
with such constructions as "defpart".  Other languages can be invented
and written using CL macros, classes, and straight functionality, and
they can tehn be easily maintained due to the extreme flexibility in
late-binding and redefinition.

Note that any language can easily be written in Common Lisp, including
Common Lisp.  This also includes Scheme.  So to the extent that
ND made good use of CL to write their Goal language, I'd say that CL
was successful in doing what it does best.

-- 
Duane Rettig    ·····@franz.com    Franz Inc.  http://www.franz.com/
555 12th St., Suite 1450               http://www.555citycenter.com/
Oakland, Ca. 94607        Phone: (510) 452-2000; Fax: (510) 452-0182