게임 지향 어셈블리 리스프

Game Oriented Assembly Lisp
게임 지향 어셈블리 리스프
패러다임다중 패러다임
가족리스프
설계자앤디 개빈
개발자개구쟁이
처음 등장한2001년 12월 3일, 20년 전(2001-12-03)
안정된 릴리스
2012년 2월 3일 / 7일; 10년 전(2012-02-07)
타이핑 분야동적, 잠재성, 강성
범위어휘
구현 언어알레그로 커먼 리스프
플랫폼PlayStation 2, PlayStation Portable, PlayStation 3
면허증.독자 사양
영향을 받다
리스프, 스킴,
게임 지향 객체 리스프(GOOL)

GOAL(Game Oriented Assembly Lisp)은 Andy Gavin회사Jak and Daxter 개발비디오 게임용 언어인 Lisp방언프로그래밍 언어입니다.

Allegro Common Lisp를 사용하여 작성되었으며 JakDaxter 시리즈의 전체 게임 개발에 사용되었습니다.

설계.

GOAL의 구문은 Lisp 방언 체계와 유사하지만 클래스, 상속가상 [1]함수와 같은 많은 독특한 객체 지향 프로그래밍 기능이 있습니다.GOAL은 필수 프로그래밍 스타일을 장려한다: 프로그램은 재귀적으로 평가되는 함수의 기능적 프로그래밍 스타일보다는 실행되는 일련의 이벤트로 구성되는 경향이 있다.이것은 그러한 부작용을 허용하지만 명령적인 스타일을 장려하지 않는 계획으로부터의 전환이다.

GOAL은 인터프리터에서 실행되지 않고 PlayStation 2 머신코드로 직접 컴파일되어 실행됩니다.가비지 수집을 위한 제한된 기능을 제공하며 런타임 지원에 크게 의존합니다.비디오 게임 콘솔의 고정 메모리에서 실행하기에 적합하도록 설계된 동적 메모리 할당 프리미티브를 제공합니다.GOAL은 스페셜을 사용하여 인라인 어셈블리 언어 코드를 폭넓게 지원합니다.rlet하나의 기능 내에서 어셈블리 및 상위 수준의 구조를 자유롭게 혼합할 수 있도록 [1]합니다.

GOAL 컴파일러는 Allegro Common Lisp에서 구현됩니다.컴파일러에게 심볼 테이블을 포함하여 컴파일되어 실행 중인 프로그램의 상태에 대한 지식을 제공하는 장기 컴파일 청취자 세션을 지원합니다.이것은 동적 링크와 더불어 기능을 편집, 재컴파일, 업로드 및 실행 중인 게임에 다시 시작할 필요 없이 삽입할 수 있습니다.이 프로세스는 일부 C++ 컴파일러에 의해 제공되는 편집 및 계속 기능과 유사하지만 프로그램이 임의의 양의 코드(최대 객체 파일)를 대체할 수 있으며 디버거를 사용하여 실행 중인 게임을 중단하지 않습니다.이 기능은 JakDaxter 게임에서의 코드 구현 및 레벨 스트리밍에 사용되었습니다.

사용하다

GOAL의 첫 번째 용도는 Jak과 Daxter였습니다. Premiger Legoor legacy 게임.이전 언어인 GOOL(Game Oriented Object Lisp)도 Andy Gavin에 의해 Crash Bandicoot용으로 개발되었습니다.

GOAL의 주요 개발 및 유지보수 엔지니어를 고용하지 않고, 새로운 모기업인 Sony로부터 스튜디오 간에 기술을 공유하라는 압력을 받고 있었기 때문에, Notty Dog는 [2]Lisp를 떠나게 되었습니다.

솔직히 말해서, 우리가 차세대 개발에 GOAL을 사용하지 않는 가장 큰 이유는 우리가 이제 Sony의 일부이기 때문입니다.소니가 몇 년 전에 Nutty Dog를 구입했을 때, 다른 소니 스튜디오에서 우리의 기술을 활용할 수 있기를 바라면서, 그리고 나서 우리의 코드 베이스를 사용할 수 있는 다른 사람이 없다는 것을 깨달았을 때의 충격은 상상할 수 있을 뿐이다.Sony는 우리가 다른 스튜디오와 코드를 공유할 수 있기를 바라며, 이것은 양쪽 모두 우리의 코드를 사용하는 다른 스튜디오와 그 반대입니다.여기에 신입사원용 새로운 언어 학습의 난이도 곡선, 외부 개발 툴로부터의 지원 부족(자사의 컴파일러, 링커, 디버거가 있어 거의 Emacs를 IDE사용해야 함) 등을 더하면, 그 밖에도 많은 요소가 관련되어 있는 것이 분명합니다.그러나 이러한 문제는 기술적인 문제가 아니라 사회적 문제라는 점에 유의하십시오.

--

하지만, 그들은 그 이후 The Last of [3]Us를 포함한 일부 PlayStation 3 게임에서의 스크립팅을 위해 그것을 다시 사용하기 시작했다.

레퍼런스

  1. ^ 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.

외부 링크