5 ms·
I’m floored and amazed. I’ll certainly look into contributing but…how did the devs acquire a language spec for GOAL? My understanding was that that was the majo
by jimbob45 5y ago
I’m floored and amazed. I’ll certainly look into contributing but…how did the devs acquire a language spec for GOAL? My understanding was that that was the major blocker of these types of projects for years.
- corysama 5y agoOP also posted https://blog.jakspeedruns.com/opengoal-project-update-september-2020/ https://blog.jakspeedruns.com/opengoal-project-update-septem... a while back. It has a section on "How is this possible?"
- DylanBohlender 5y agoWhoa, that is crazy! TL;DR for folks is that they left a lot of debug information in the build. The C code was compiled with no optimizations (and included debugging symbols), and GOAL uses a string-based table for global functions/variables/types, so they're starting with all those for free. Plus they don't think the GOAL compiler did too much tricky-to-undo optimization either.
- rgbrgb 5y agoJust curious... what makes you look at this and want to contribute? I'm interested in why people do these unlicensed emulation projects at all and it sounds like you have at least one answer as your motivation.
- jimbob45 5y agoAs far as I know, GOAL/GOOL remains the only time Lisp has ever successfully been used in a video game. Given Lisp's near-mythic status of productivity, it at least piques my interest to see how ND might have used it creatively in the codebase. That and I've always wanted to check out the language after Andy Gavin (ND founder) talked it up on here [0] [0]https://news.ycombinator.com/item?id=3152131 https://news.ycombinator.com/item?id=3152131
- bigbillheck 5y ago> As far as I know, GOAL/GOOL remains the only time Lisp has ever successfully been used in a video game. 'Abuse' had a substantial lisp component.
- rgbrgb 5y agoCool, thanks for sharing that. I had no idea Andy Garvin was on hn, but makes sense :)! I had a vague memory that Super Mario 64 also used lisp and when I googled, I found him again [0]. You've likely seen this, but I recently watched and loved this extended interview with him about making Crash Bandicoot [1]. Really made me want to look more into making video games. [0]: https://news.ycombinator.com/item?id=2474833 https://news.ycombinator.com/item?id=2474833 [1]: https://www.youtube.com/watch?v=pSHj5UKSylk https://www.youtube.com/watch?v=pSHj5UKSylk
- Jach 5y agoYeah it's rather amazing what Lisp applications in the 90s contributed to. https://en.wikipedia.org/wiki/N-World https://en.wikipedia.org/wiki/N-World is the software mentioned in the comment, the modern equivalent being Blender. The Credits section of that page has some great classics like SM64, FF7, Banjo-Kazooie... It also had great tutorials and documentation: http://www.aaronjamesrogers.com/misc/nworld/N-World-Intro.html http://www.aaronjamesrogers.com/misc/nworld/N-World-Intro.ht... It's a shame that its successor Mirai https://en.wikipedia.org/wiki/Mirai_(software) https://en.wikipedia.org/wiki/Mirai_(software) just kind of vanished. Its main claim to fame is Gollum's face. Chronologically it's not that different from Blender, which also imploded around the same time in the early 2000s, but Blender was able to go open source and survive and have another 20 years of development to get where it's at today. I don't know that the world would look all that different if Mirai had been able to take a similar path, but at least there'd be a cool modern 3D modeling tool in Lisp.
- deterministic 5y agoI worked on Banjo Kazooie and the claim that N-World was used for it is incorrect. We used Maya for all modelling. They did a demo to the BK team once and it went really badly for them. What they demoed to us was so far from being competitive with Maya that it was almost laughable.
- ensan 5y agoThis is not an "unlicensed emulation project". In fact, it's not emulation at all.
- monocasa 5y agoIt looks like they don't have a full goal spec, but are relying on the copious debug and runtime type information, as well as the simplicity of the original goal compiler (and arguably the simplicity of lisp itself) to come up with something close that's semantically equivalent.
- kayamon 5y agoThere's a lot of snippets posted over the years on various forums. Nothing much, a few pages to get a hint of the syntax and the basics. Once you've picked apart the loader/runtime[1] the dynamic nature of the Lisp runtime system allows the system itself to hint a lot at how things originally went together. (e.g. type information is always present, state machines are explicit and easy to spot) [1] http://www.codersnotes.com/notes/disassembling-jak/ http://www.codersnotes.com/notes/disassembling-jak/ (my old article this is based off)