Naughty Dog が PS2 時代に使っていた Lisp は命令型スタイルの機械語変換
Naughty Dog の Lisp 好きは有名な話ですが、 Playstation 2 に用いられていた Lisp は、今日僕らが想像するような VM の組み込みなどとは多少事情が異なるようです。 Wikipedia に Game Oriented Assembly Lisp として情報がまとまっていました。
- ゲーム指向アセンブリLisp(またはGOAL)は、Naughty Dog のアンディ・ギャビン*1とジャック&ダクスターの開発チームによって開発された
- ジャック&ダクスターシリーズ全般の開発に使用された
- GOAL の構文自体は Scheme にそっくり
- GOAL は副作用を許容し、イベントの系列を記述させるなど、命令型プログラミングスタイルを奨励していた
- GOAL はインタプリタを持たず直接 Playstation 2 のマシン語に変換していた
- 限定的ではあるがガベージコレクションあり
- インラインアセンブリをサポートしていた
- GOAL コンパイラは Allegro Common Lisp で実装されていた。
- GOAL を組み込まれたゲームプログラムは、(仮想機械実装ではないにも関わらず)GOAL コードのエディット&コンティニューをサポートしていた
- 前身にやはり Andy Gavin が開発した GOOL という言語があった。こちらはクラッシュバンディクーに使用された
- 現在の Naughty Dog では GOAL の開発を継続していない*2
*1:Naughty Dog の創業者の一人