RacketCon 2013: Dan Liebgold - Racket on the Playstation 3? It's Not What you Think!
Racket3 HN recommenders · recommended in 3 months, 2014-2022
19K views · 13 years ago · talk · evergreen
Dan Liebgold of Naughty Dog gives a RacketCon 2013 keynote on using Racket in PlayStation 3 game development. He explains the Racket-based DSLs used for game data and scripting, which replaced the studio's earlier GOAL-based toolchain.
HN cites it whenever Lisp in games, Naughty Dog or Racket in production comes up, as the main first-hand account.
8:45Racket: Why I Think It’s a Great Language, and Why I’m Not Using It Anymore
Leandro Facchinetti
19K views • 5 years ago
32:18(ninth RacketCon): Andrew Blinn – Fructure: A Structured Editing Engine in Racket
Racket
10K views • 7 years ago
46:22"Clojure in Unity 3D: Functional Video Game Development" by Ramsey Nasser and Tims Gardner
Strange Loop Conference
24K views • 12 years ago
37:34Zach Oakes - Making Games at Runtime with Clojure
ClojureTV
31K views • 11 years ago
1:55:24Ideas about a new programming language for games.
Jonathan Blow
530K views • 12 years ago
51:11Game Development with SDL 2.0 (Steam Dev Days 2014)
Steamworks Development
235K views • 12 years ago
53:22Ruby Conf 12 - Y Not- Adventures in Functional Programming by Jim Weirich
Confreaks
65K views • 14 years ago
53:44Console Hacking 2016 (33c3)
media.ccc.de
166K views • 9 years ago
36:42Bottom Up vs Top Down Design in Clojure - Mark Bastian
ClojureTV
29K views • 10 years ago
58:24#Gamelab2018 - Jon Blow's Design decisions on creating Jai a new language for game programmers
Gamelab Conference
210K views • 8 years ago
44:1127c3: Console Hacking 2010 (en)
Christiaan008
33K views • 15 years ago
29:59John Carmack's keynote at Quakecon 2013 part 4
Kostiantyn Kostin
139K views • 13 years ago
40:50Ruby Manor 3 - Programming with Nothing by Tom Stuart
Confreaks
13K views • 14 years ago
1:01:51Rant: Entity systems and the Rust borrow checker ... or something.
Jonathan Blow
304K views • 8 years ago
47:34RailsConf 2011: Aaron Patterson, "Double Dream Hands: So Intense!"
O'Reilly
26K views • 15 years ago
1:13:00Jonathan Blow - Jai Demo and Design Explanation (KEYNOTE) - Updated
LambdaConf
241K views • 1 year ago
1:06:00CppCon 2017: Juan Pedro Bolivar Puente “Postmodern immutable data structures”
CppCon
31K views • 9 years ago
9:30Jonathan Blow on scripting languages
Jeru Sanders
185K views • 7 years ago
36:14Barliman: trying the halting problem backwards, blindfolded - William Byrd, Greg Rosenblatt
ClojureTV
8K views • 9 years ago
1:15:51Jonathan Blow - How to program independent games - CSUA Speech
Alexandre Franco
190K views • 13 years ago
12 comments from Hacker News
Related talk by Dan Liebgold from Naughty Dog, at RacketCon 2013: ▶ this video Starting at around 10m into the talk, Liebgold says their DC language for TLOU (to get what they most needed from a DSL even if using C++ instead of GOAL) was implemented in Racket. For anyone not familiar with TLOU, it was a critically-acclaimed game, and my personal all-time favorite game for storytelling that somehow grabbed me. (I dislike all zombie franchises, but at a key point towards the end of the nonlinear narrative and playing in the game, I was surprised how much I really wanted to protect the kid. Which I'll partly attribute to a Lispy DSL that helped them execute immersive storytelling in a zombie stealth shooter.) link This is one of the Racket success stories. They seem to happen because someone already knows they want a Lisp, they end up picking Racket without needing anyone else's permission, and the people using it are capable of designing and building whatever missing pieces they need.
Found an old postmortem on Jak and Daxter from 2002 talking about pros and cons of using GOAL: link And Andy Gavin talked briefly about GOOL on Ars Technica Crash Bandicoot interview: link It seems Naughty Dog later decided not to maintain their own Lisp and moved to Racket: ▶ this video I am really curious about how they use Lisp nowadays.
Neat, I didn't know Naughty Dog also used Allegro CL, in addition to Racket: * "RacketCon 2013: Dan Liebgold - Racket on the Playstation 3? It's Not What you Think!" ▶ this video * "Functional mzScheme DSLs in Game Development" (MzScheme was the name of the main PLT Scheme interpreter that was renamed Racket) link
Other than the games they wrote entirely in GOAL, all of their PS3+ games use a series of lispy DSLs implemented in Racket that get compiled to C and C++ for defining data to be loaded in the game and dependencies between these data, light scripting, dialogues, stuff like that. There's a talk by one of the engine devs at RacketCon from a few years ago on youtube about how they use these DSLs and how they came to be: ▶ this video
Dan Liebgold from Naughty Dog did a talk on using Racket during development for the PlayStation 3 at Racketcon a few years ago [0]. [0]: ▶ this video
A little off topic, but Racket is definitely used by Naughty Dog in their games. Here's a talk they did a while back ▶ this video
That's not quite right. These days Naughty Dog uses a DSL called DC built in Racket to write all the "data" in the game (everything from cut scenes to character attributes). Running DC produces data files shipped on the DVD of the game, and used by the big C++ engine that's running on the PlayStation. Dan Leibgold gave a talk about their system at RacketCon a few years ago: ▶ this video
They switched to Racket when moving to the PS3. Here's a talk discussing the use of Racket in developing The Last of Us: ▶ this video
I'm working through the admittedly beautiful and very thorough documentation [1]. It's a very simple idea, really: you write your document and sprinkle racket s-expressions wherever you want. You can put your definitions at the top of your document, or in another file. You describe your templates in Racket also, because like Butterick says in his RacketCon video [2], "S-expressions and XML are the same thing". You can use tags that you haven't defined, they just get placed in the resulting HTML. You still have to roll your own CSS and any JavaScript. As far as I can tell it doesn't help you out with things like keeping track of footnotes numbering or citations and such: you roll your own for things like this, Pollen is no LaTeX. This is partly why I say it's a really simple system. It makes a certain set of web authoring things simple, but it doesn't try to be a one-stop shop, which is excellent because this makes it a supremely flexible tool. It also has some backend fancy sauce where you can save your file and refresh the page [3]. Also I admit I'm not really a big fan of DrRacket: I've just been using it for the tutorials because I have no idea what to expect from Racket, but I'm slowly moving to Emacs, and Racket seems to work fine there. Definitely worth checking out Pollen if only to get a light introduction to the thoroughness of Racket documentation (they definitely do things differently in Racket-land!), but stay for the tools you need to roll your own ultimate stati
While I understand your frustration with 'too many languages', Racket is older than quite a few (started in '95). I also think the danger of having this attitude is that if we all thought like this nothing would become better. If no one wanted to get out of C++ we wouldn't have had many languages. The premise behind Racket, in broad strokes, is to provide a platform and programming language for making new programming languages. The most important identifier/keyword in Racket is '#lang' (specified at the top of a file to tell Racket which language the file is in). It's a whole ecosystem in which a multitude of languages exist and the only thing they really need to have in common is that on some level they speak Racket. Personally, I think the above paragraph explains how exciting Racket as a language and platform is, but it doesn't sound that interesting on the surface. It does allow people to create things like this[0] and this[1], though, which displays real practical use; shaping the way you solve the problem to fit the actual problem. [0] ▶ this video - Naughty Dog's scripting language [1] link - A web book publishing language
Dan Liebgold (Naughty Dog) at RacketCon 2013. "Racket on the Playstation 3? It's Not What you Think!" ▶ this video
The speaker actually begins talking about racket and how they use it at about 6 minutes into the video. Here's a link: ▶ this video Interesting to hear how they replaced GOAL in their toolchain. The people I've met who used GOAL in the past talked at length about how much they miss it.