6 ms·
GOAL / games written in Lisp have been a lifelong obsession. I used to search for hours for any scrap of information about the language. I would have traded a l
by sillysaurusx 5y ago
GOAL / games written in Lisp have been a lifelong obsession. I used to search for hours for any scrap of information about the language. I would have traded a lot for this repo when I was 19.
Thank you to the authors for fulfilling a teenage dream. Please consider doing Last Of Us next —- I once downloaded it and tore it apart for any signs of lisp, but it was all compiled bytecode. That’s where I gave up, but it looks like you took it one millennium further by reverse engineering the bytecode from Jak and Dexter to make your own port that compiles to the same bytecode. If you have infinite time, you could theoretically do this for last of us too, and also last of us 2.
- deleted 5y ago[deleted]
- dharmab 5y agoNaughty Dog transitioned away from GOAL after they were purchased by Sony. Uncharted and TLOU are mostly written in C++.
- msk-lywenn 5y agoAll the scripting in Uncharted and TLOU is still in lisp. Well, actually, it's scheme now. They use M-something... It's the core of Racket. Edit: MzScheme
- Ericson2314 5y agoMzScheme hasn't be a name for Racket for at a decade+. Maybe the earliest Uncharteds? Racket now uses https://en.wikipedia.org/wiki/Chez_Scheme https://en.wikipedia.org/wiki/Chez_Scheme which vaguely rhymes but there's no relation.
- sillysaurusx 5y agoUncharted! That’s the one. Didn’t they do a video long ago about uncharted + lisp? I seem to remember them talking about some interesting benefits they got out of it. Although the engine is mostly C++, the bits that aren’t are usually the most interesting. And the most impactful. So it would be neat to analyze, if for no reason other than archaeology.
- bmitc 5y agoI remember seeing a video like that too, but I don't remember what it was or where I saw it. Doing a brief search didn't show up anything.
- sillysaurusx 5y agoI remember they were talking about the combat system specifically.
- corysama 5y agoI crossed paths with someone who joined ND around the time they were purchased by Sony. According to him, Sony told them "You will be working with other Sony companies. They will not be using GOAL. Switch to C++."
- dang 5y agoSounds like Viaweb after Yahoo.
- PicassoCTs 5y agoWhat is it with Large Video Game Producers like Sony or EA interfering in studio internal technical detail decisions? I distinctly remember EA pushing the Frostbite engine on bioware and thus ruining the franchises in production (MassEffect Andromeda/ Anthem). Is this just another case of visible external costs (engine licensing) vs invisible internal costs (complete restructuring/retraining of existing pipelines/ engine rewrites)?
- bmitc 5y agoIn the case of Sony and Naughty Dog, it's my understanding that Naughty Dog serves two purposes. One is that they are a game studio that makes games but the other is that they're a technology development studio that exports common tech for other Sony game studios to make their games with. While I'm on the side of Lisp and C++ makes me itchy, I can understand why that would be a hard sell.
- alexdss 5y agoNaughty Dog had very good reasons to avoid alienation that would come by sticking to their custom languages (not necessarily Lisp). Only one person on the team really properly knew how the GOAL compiler worked and how it interacted with the rest of the Naughty Dog toolchain, and that person would have to leave the company at some point. Remember that, since they are under the Sony umbrella, they would have to share technology around with the other teams. They were aware this could turn into an issue, and mention it in some interviews and e-mails: https://www.neogaf.com/threads/why-did-naughty-dog-abandon-g-o-a-l-an-old-long-usenet-thread-gives-public-insight.139054/ https://www.neogaf.com/threads/why-did-naughty-dog-abandon-g...
- syntheweave 5y agoIt's a "can't win" scenario in that the presumed advantage of a large org is that studios can share tech and therefore get an edge in deploying it across all titles - but they can't do it in a way that's really optimized to anyone's particular situation. Depending on the structure and communication flows the game teams can feel like code was "thrown over the fence" at them, or they feel chained into a method of asset production, builds and testing that is, for their purposes, extremely costly. Generalizing an engine has always been a very hard, two dimensional problem: 1. If you're pushing the platform, you need every part of the asset pipeline to be optimized for it, and probably lower level runtime optimizations too. 2. If you're doing something well within the constraints, your bottleneck is on implementing the specific types of assets that will make your game unique. As games get more featureful more and more micro-categories of assets show up - bits of UI text, custom behaviors, scene transitions, camera movements and so forth. 3. If you do 1, then 2 becomes more challenging because you made more optimizing assumptions, so the game production may fall off schedule due to lousy tooling making it hard to actually test anything in-game. If you focus on 2, you don't have as many reusable parts, and you're adding pressure to optimize near the end of the dev cycle, which can result in catastrophic bugs from changing assumptions in the asset-code mix, like "we tightened when we load in streaming assets. This broke a cutscene trigger because now it loads at the wrong time." And then you add in an external tech group and you have another layer of communication to deal with, so the design or art teams can't just grab a coder and say "hey, this workflow sucks, give me a little support on this." Whether it's in the org or third-party, it's the same problem: you really need engine coders on staff to handle some things. But the case can always be made: "if we have an internal engine group we can put all the smartest people in one place and have them develop the next-gen graphics." And once you have that group, it's politically necessary for the management to make its tech as widely deployed as possible, otherwise, why budget for them? The engine teams at large publishers who follow this kind of hard separation are known for having relatively cushy, high-profile gigs, while game teams are disposable bodies that churn out necessary but low-value features. Conflicts of interest and fiefdoms emerge from that. Some of them do enforce rotations and other protocols to lower the barriers.
- sillysaurusx 5y agore: a deleted comment saying that last of us only had lisp in their dialog system and nowhere else: I swear I remember a YouTube video from naughty dog about lisp, and that it was about one of their later engines. But at this point I think I just hallucinate parens wherever I go, so maybe not. Bet it was the most extensible dialogue system ever though.
- heavyset_go 5y ago> That’s where I gave up, but it looks like you took it one millennium further by reverse engineering the bytecode from Jak and Dexter to make your own port that compiles to the same bytecode. If I'm reading this right, the original Jak and Daxter was written in a Lisp, too? If so, that's pretty cool and I wouldn't have guessed.
- kayamon 5y agoIt was written in a Lisp/C mashup and compiled to MIPS assembly.
- astrange 5y agoSame people wrote ITA Matrix (aka Google Flights) in Lisp. But GOAL didn't have a GC, so it might not really count as Lisp.
- bmitc 5y agoAre you sure? GOAL was created by Andy Gavin, a co-founder at Naughty Dog who never worked at ITA to my knowledge. Edit: I was just randomly watching this video (https://www.youtube.com/watch?v=cHkk9isDfg4 https://www.youtube.com/watch?v=cHkk9isDfg4), and Dave Baggett came up. When I searched his name, it does look like he was a co-founder of ITA after leaving Naughty Dog.
- dmbaggett 5y agoThe predecessor to GOAL was GOOL and was 100% Andy's work. We used it to code the logic for the objects in the Crash games (critters, platforms, etc.) and I actually wrote the entire load/save UI in it as well! I assume GOAL was also all Andy but I don't know that for sure because I only worked on the Crash games. ITA's use of Lisp was driven by our co-founder and Chief Scientist, Carl de Marcken. He wrote the prototype in LispWorks, then the production code in Allegro, and then we finally ported everything to CMUCL when Franz essentially tried to extort us for a tax on our entire business. (We couldn't imagine this would become the norm for consumer "apps" five years later, but that's another topic entirely.) Ultimately the MIT AI Lab circa 1993 was the source of the decisions to use lisp for both these commercial products. At the time, the lab's culture was still very much influenced by all the work done there and in spin-off companies in the late 80s commercializing lisp, e.g., at Symbolics (first registrant of a .com domain name!) At INKY (my current startup) we use Python. By 2010, when I started the incubator that evolved into INKY, it was pretty clear that scaling a development team on a lisp stack was going to be really difficult.
- Pxtl 5y agoFunny, because there's an old run and gun PC game "Abuse" that was famous for being one of the first commercial Lisp-scripted games, but very little has been done with its open-sourced codebase since its Lisp code is notoriously hard to work with.
- yumaikas 5y agoSo, it's not GOAL, but I've been starting to work with https://fennel-lang.org https://fennel-lang.org and Love2d, and there's a twice-yearly Lisp Game jam that happens. I've found that I like Fennel (and Janet as well, both created by the same author, though they have different maintainers) quite a bit. Turns out that having simple semantics and a very regular syntax makes for a language that makes writing basic code feel nice.
- medo-bear 5y agogiven the amount of interest in the hobby lisp game dev community it would be super cool if naughty dog/sony (or whoever own the license now) open sourced GOAL
- ArtWomb 5y agoThis is what makes OpenGOAL and video game archeology so mission critical. It isn't just preservation of digital culture. I think there are real insights to be gained. Next step is to make a cookbook of classical Game AI techniques (monte carlo tree search, goal oriented action planning) in GOAL. Then it becomes a package anyone can use, like PhysX and RAD tools ;)