Game Oriented Assembly Lisp

Game Oriented Assembly Lisp

Game Oriented Assembly Lisp (or GOAL) is a computer game programming language developed by Andy Gavin and the Jak and Daxter team at Naughty Dog. It was written using Allegro Common Lisp and used in the development of the entire Jak and Daxter series of games.

Syntactically GOAL resembles Scheme, though with many idiosyncratic features such as classes, inheritance, and virtual functions. An example of what GOAL code looks like can be found at [http://web.archive.org/web/20070412155710/http://lists.midnightryder.com/pipermail/sweng-gamedev-midnightryder.com/2005-August/003804.html] . GOAL encourages an imperative programming style: programs tend to be comprised of sequence of events to be executed rather than the functional programming style of functions to be evaluated recursively. This is a diversion from Scheme, which allows such side-effects but does not encourage imperative style.

Like many modern implementations of Common Lisp, GOAL does not run in an interpreter, but instead is compiled directly into PlayStation 2 machine code for execution. It offers limited facilities for garbage collection, relying extensively on runtime support. It offers dynamic memory allocation primitives designed to make it well-suited to running in constant memory on a video game console. GOAL has extensive support for inlined assembly code using a special rlet form [http://lists.midnightryder.com/pipermail/sweng-gamedev-midnightryder.com/2005-August/003804.html] , allowing programmers to freely mix assembly and higher-level constructs within the same function.

The GOAL compiler is implemented in Allegro Common Lisp. It supports a long term compiling listener session which gives the compiler knowledge about the state of the compiled and therefore running program, including the symbol table. This, in addition to dynamic linking, allows a function to be edited, recompiled, uploaded, and inserted into a running game without having to restart. The process is similar to the "edit and continue" feature offered by some C++ compilers, but allows the programmer to replace arbitrary amounts of code (even up to entire object files), and does not interrupt the running game with the debugger. This feature was used to implement code as well as level streaming in the Jak and Daxter games.

GOAL's first use was for the original Jak and Daxter PS2 game; the predecessor language, GOOL, was also developed by Andy Gavin for Crash Bandicoot.

GOAL's primary development and maintenance engineer is no longer available to Naughty Dog, and so they are transitioning to a C++ based pipeline for future projects.

External links

* http://www.franz.com/success/customer_apps/animation_graphics/naughtydog.lhtml — Franz Inc. success story
* http://bc.tech.coop/blog/060118.html — Page about Lisp developments by Paul Graham and Naughty Dog
* http://www.gamasutra.com/features/gdcarchive/2003/White_Stephen.ppt — (Powerpoint) "Jak & Daxter: The Precursor Legacy", development overview, lessons learned, very interesting
* http://www.gamasutra.com/features/gdcarchive/2003/Denman_Stu.ppt — (Powerpoint) "Highly detailed continuous worlds", about the streaming world loader


Wikimedia Foundation. 2010.

Игры ⚽ Нужна курсовая?

Look at other dictionaries:

  • Assembly language — See the terminology section below for information regarding inconsistent use of the terms assembly and assembler. Motorola MC6800 Assembly Language An assembly language is a low level programming language for computers, microprocessors,… …   Wikipedia

  • Crash Bandicoot (video game) — Crash Bandicoot …   Wikipedia

  • Andy Gavin — (b. 1970) is a programmer notable for co founding the video game company Naughty Dog with childhood friend Jason Rubin in 1986. Naughty Dog s games (most famously, Crash Bandicoot) are known for their combination of exceptional technology, great… …   Wikipedia

  • Bully (video game) — Bullworth redirects here. For the film, see Bulworth. Bully North American PlayStation 2 cover art. Developer(s) Rockstar Vancouver (PlayStation …   Wikipedia

  • Naughty Dog — Naughty Dog, Inc. Tipo Subsidiaria Fundación 1986 Sede Santa Mónica, California Administración Evan Wells (co presidente) …   Wikipedia Español

  • Goal (disambiguation) — Goal may refer to: * An objective or desired outcome ** Goal (management), a desired state of affairs of a person or of a system ** Goal in systemics and socio cognitive engineering, a state of the domain of activity of an intelligent entity… …   Wikipedia

  • Scripting language — Scripting redirects here. For other uses, see Script. A scripting language, script language, or extension language is a programming language that allows control of one or more applications. Scripts are distinct from the core code of the… …   Wikipedia

  • Amiga software — covers a wide range of software for the Amiga computer, both productivity and games, both commercial and hobbyist. The Amiga software market was particularly active in the late 1980s and early 1990s but has since the period 1996/1999 dwindled… …   Wikipedia

  • List of programming languages by category — Programming language lists Alphabetical Categorical Chronological Generational This is a list of programming languages grouped by category. Some languages are listed in multiple categories. Contents …   Wikipedia

  • computer science — computer scientist. the science that deals with the theory and methods of processing information in digital computers, the design of computer hardware and software, and the applications of computers. [1970 75] * * * Study of computers, their… …   Universalium

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”