Hacker News new | past | comments | ask | show | jobs | submit login

Don't worry. They used PLT Scheme in their latest. http://www.gameenginebook.com/gdc09-statescripting-uncharted... [PDF]

I read an article a while back that said after the engineer that wrote GOAL left the company, they stopped using it and went back to pure C++ or something.

Hearing that they use Racket now, that just makes me all happy inside.

They were acquired by SCE. The mandate to use C++ came from above, most likely.

They are using Racket to generate C++ code.

For what it's worth, I interviewed with them shortly after their acquisition by Sony. The gentleman I talked to told me that Sony corporate had dictated that they give up GOAL for C++ so that their code would be interoperable with the rest of the company.

Using languages with runtime code generation is also quite difficult with modern consoles that don't let you change executable memory pages, or allocate new ones, which means you're stuck compiling offline. Even though changing PPU code is off limits, the PS3 does let you generate SPU code on the fly but it seems to be a capability that few (if any) use.

That's only a problem if you are using JIT compilation. Otherwise a VM (whose executable doesn't change) would just handle the runtime stuff, which is mostly going to be game logic and not super-high-performance stuff (like rendering or audio).

Ahh, but the beauty of GOAL was that the entire game was built using it, including the super-high performance stuff.

GOAL compiled to native code, which made this possible. It also made it easy to mix and match assembly primitives in with your existing code, using the same syntax (much nicer than GCC's intrinsics).

This was before the days of LLVM, so the code generation phase was actually enormous amount of work (Andy spent a lot of time on the register coloring, for example) - not to mention having to write a debugger.

This isn't quite the same thing. The Jak games were built entirely using GOAL (other than a tiny microkernel in C) - gameplay, collision detection, rendering, AI, you name it.

Uncharted is using a LISP-like scripting language for gameplay scripting. Most large games use scripting these days (LUA is pretty common), this just happens to be a lisp-flavored variant of that. There's a huge difference between writing your gameplay scripting in a lisp and building your entire game in it.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact