TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Halo was written with a Lisp dialect called blamscript (2014)

119 pointsby kuwzeover 6 years ago

11 comments

Sharlinover 6 years ago
Nb. "Written" as in screenwriting, not "written" as in implementing the game engine itself.
评论 #18904200 未加载
评论 #18904835 未加载
评论 #18901928 未加载
评论 #18903093 未加载
评论 #18904131 未加载
blattimwindover 6 years ago
Meanwhile, Half-Life/GoldSrc/Source scripting means placing "entities" in the world space and connecting them. Like a very messy form of visual/block-based programming. On many maps with a lot of scripts there are separate, inaccessible rooms where the mapper stashed all the entities, because placing them where their triggers / effects happen would make editing the level geometry quite difficult.
grogenautover 6 years ago
We had this at another Sony studio I worked at. I asked why. The person who write it said writing the interpeter&#x2F;compiler for lisp is quite easy. As is understanding the byte code. They did it as an intern project in about 3 months.<p>It wasn&#x27;t the most friendly language and ended up with many c like additions. At the end of the day it was all about cost to work on and efficiency of using.<p>Many would have been super happy to slap a &quot;real&quot; language in there but they would have spent years putting the real time esque controls they needed on it. Not the normal real time but bound to game engine execution phases which is different. It also needed to very easily work with cpp and the art tree.<p>I doubt any of the fp folks here would have loved the language and would have spent much of their kvetching time on why it wasn&#x27;t more lispy and therefore more productive.<p>Thing is most of what it needed to do was atomic thread and mutex&#x2F;semaphore joins, branching parallel green threads and parallel wait conditions and goto. The scripts were all written by non programmers and when slow converted to c++ which was about 20kx faster.
t3hz0rover 6 years ago
The title is misleading. Blamscript is only really used in the interactive consoles of the game and its editing kit, and the scripting of encounters, cinematics, and triggers in the campaign[1].<p>Modders also use it in custom multiplayer maps for things like doors. Since Halo PC&#x27;s netcode doesn&#x27;t synchronize the state of such scenery to players, some map makers came up with the clever idea of hidden &quot;biped crusher&quot; rooms which repeatedly dropped vehicles on NPCs depending on the state of doors. Their respawns _were_ synchronized across the network, so this system could be used to trigger doors opening&#x2F;closing on clients.<p>[1]: <a href="https:&#x2F;&#x2F;github.com&#x2F;Dwood15&#x2F;HaloScripts" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;Dwood15&#x2F;HaloScripts</a>
jayd16over 6 years ago
&gt;Any sufficiently complicated program contains an ad-hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp<p>I find this quote especially true in games.
评论 #18917051 未加载
评论 #18906163 未加载
ryanmercerover 6 years ago
Meanwhile, Halo 2600 was written in Atari BASIC (probably) <a href="https:&#x2F;&#x2F;atariage.com&#x2F;store&#x2F;index.php?l=product_detail&amp;p=998" rel="nofollow">https:&#x2F;&#x2F;atariage.com&#x2F;store&#x2F;index.php?l=product_detail&amp;p=998</a>
评论 #18904706 未加载
评论 #18903155 未加载
vernieover 6 years ago
I believe that Naughty Dog also scripts game logic in their own Lisp dialect.
评论 #18904632 未加载
评论 #18904365 未加载
评论 #18904074 未加载
评论 #18903930 未加载
rongenreover 6 years ago
This seems like a pretty typical pattern: Back when I did games (mid 90&#x27;s), it was pretty essential to come up with a tight game engine with components that could be driver from a script: That way someone in design&#x2F;production could focus on making things interesting and fun without needing to mess with a compiler.<p>In our case, we used tcl, but embeddable lisp would have worked too.
bitwizeover 6 years ago
Recently I learned that the AI for Age of Empires was also written in a Lisp-like dialect. Interesting.
Hagaover 6 years ago
I cant help but think that a lualisp merge would be the ideal script addition for all most any engine.
评论 #18902574 未加载
评论 #18904385 未加载
jorviover 6 years ago
Don’t most engines offer this by default?<p>I know Unreal Tournament 99 and especially 2004 was very extensible because they offered uScript (very C++ like) which made it easy to make all sorts of mutators and mods. They even had a specific feature for making in-game cutscenes (I thought it was named Kino but apparently not).<p>I don’t have much knowledge of Source but afaik they also offered something similar.