~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ D045FB5D6E01023894792DAEDE6EDBD5__1716076800 ✰
Заголовок документа оригинал.:
✰ Game Oriented Assembly Lisp - Wikipedia ✰
Заголовок документа перевод.:
✰ Game Oriented Assembly Lisp - Wikipedia ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/d0/d5/d045fb5d6e01023894792daede6edbd5.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/d0/d5/d045fb5d6e01023894792daede6edbd5__translat.html ✰
Дата и время сохранения документа:
✰ 07.07.2024 11:27:48 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 19 May 2024, at 03:00 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Game Oriented Assembly Lisp - Wikipedia Jump to content

Game Oriented Assembly Lisp

From Wikipedia, the free encyclopedia
Game Oriented Assembly Lisp
ParadigmsMulti-paradigm
FamilyLisp
Designed byAndy Gavin
DeveloperNaughty Dog
First appeared3 December 2001; 22 years ago (2001-12-03)
Stable release
3 / 7 February 2012; 12 years ago (2012-02-07)
Typing disciplineDynamic, latent, strong
ScopeLexical
Implementation languageAllegro Common Lisp
PlatformPlayStation 2, PlayStation Portable, PlayStation 3
LicenseProprietary
Influenced by
Lisp, Scheme,
Game Oriented Object Lisp (GOOL)

Game Oriented Assembly Lisp (GOAL, also known as Game Object Assembly Lisp) is a programming language, a dialect of the language Lisp, made for video games developed by Andy Gavin and the Jak and Daxter team at the company Naughty Dog.

It was written using Allegro Common Lisp and used in the development of the entire Jak and Daxter series of games.

Design[edit]

GOAL's syntax resembles the Lisp dialect Scheme, though with many idiosyncratic object-oriented programming features such as classes, inheritance, and virtual functions.[1] GOAL encourages an imperative programming style: programs tend to consist of a 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.

GOAL does not run in an interpreter, but instead is compiled directly into PlayStation 2 machine code to execute. 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 language code using a special rlet form,[1] allowing programs to freely mix assembly and higher-level constructs within one 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 thus 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 programs 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 and to enable level streaming in the Jak and Daxter games.

Uses[edit]

GOAL's first use was for the game Jak and Daxter: The Precursor Legacy. The predecessor language, Game Oriented Object Lisp (GOOL), was also developed by Andy Gavin for Crash Bandicoot.

Since Naughty Dog no longer employs GOAL's primary development and maintenance engineer, and they were under pressure from their new parent company, Sony, to share technology between studios, Naughty Dog transitioned away from Lisp:[2]

In all honesty, the biggest reason we're not using GOAL for next-gen development is because we're now part of Sony. I can only imagine Sony's shock when they purchased Naughty Dog a few years back, hoping to be able to leverage some of our technology across other Sony studios, and then realized that there was no way anyone else would be able to use any of our codebase. Sony wants us to be able to share code with other studios, and this works both ways - both other studios using our code and vice versa. Add this to the difficulty curve of learning a new language for new hires, lack of support from external development tools (we had our own compiler, linker, and debugger, and pretty much had to use Emacs as our IDE), etc, means that there are clearly a lot of other factors involved. Note, however, that these issues aren't really technical problems, they're social ones.

— Scott Shumaker

However, they have since resumed using it for scripting on some PlayStation 3 games, including The Last of Us.[3]

OpenGOAL[edit]

A community project, OpenGOAL, started in 2020 with the goal of porting GOAL to x86-64 by decompiling existing Jak and Daxter: The Precursor Legacy and Jak II assets and recompiling them natively.[4] It includes a GOAL compiler written in C++ as well as a read–eval–print loop to enable a similar workflow to Naughty Dog's original implementation. By November 2023, the OpenGOAL team had produced ports for both games 100% completable on Windows and Linux computers,[5][6] with a Jak 3 port in development as of 2024.[7][8]

References[edit]

  1. ^ Jump up to: a b Shumaker, Scott (11 Aug 2005). "[Sweng-gamedev] Higher Level Languages (Was: Next Gen Multiplatform Load Balancing)". Midnight Ryder Technologies: sweng-gamedev mailinglist. Archived from the original on 2007-04-12. Retrieved 2019-04-20.
  2. ^ Shumaker, Scott (2005-08-08). "[Sweng-gamedev] Higher Level Languages (Was: Next Gen Multiplatform Load Balancing". Midnight Ryder Technologies: sweng-gamedev mailinglist. Archived from the original on 2007-07-20. Retrieved 2019-04-20.
  3. ^ Anthony Newman (2017-10-28). Unsynced: The Last of Us Melee System (Videotape). Game Developer's Conference. 37 minutes in. Archived from the original on 2021-12-14. Retrieved 2017-11-05.
  4. ^ "OpenGOAL". OpenGOAL. Archived from the original on December 13, 2022. Retrieved October 23, 2022.
  5. ^ "Jak and Daxter OPENGOAL 100% Playthrough!". YouTube. OutrageousJosh. June 22, 2022. Retrieved May 16, 2024.
  6. ^ "Progress Report - October 2023". OpenGOAL. October 30, 2023. Archived from the original on May 16, 2024. Retrieved May 16, 2024.
  7. ^ "Progress Report - April 2024". OpenGOAL. April 30, 2024. Archived from the original on May 16, 2024. Retrieved May 16, 2024.
  8. ^ "Progress". OpenGOAL. Archived from the original on February 12, 2024. Retrieved May 16, 2024.

External links[edit]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: D045FB5D6E01023894792DAEDE6EDBD5__1716076800
URL1:https://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp
Заголовок, (Title) документа по адресу, URL1:
Game Oriented Assembly Lisp - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)