5 ms·
Show HN: Automatically detect and patch walking-dead states in Sierra games
Hi HN, I've become lazier in my old age and struggle to replay my favorite Sierra games from the 80s and 90s because I keep getting into those situations where I need an item from 3 acts ago, I have no save game handy, and now I gotta make dinner.
So I'm building the Lucasartsifier: a static analysis tool that decompiles Sierra resource files, automatically finds those states, automatically generates code to prevent the player from getting into those states, then emits loose patch files that can be placed alongside the original game resources. There's no game-specific code involved; all the logic is generic, though of course Sierra introduces new idioms and mechanics in every game so every new supported game needs a bunch of engine work.
So for example in Leisure Suit Larry 2, the patched game prevents you from boarding the cruise ship until you have both the sunscreen and the Grotesque Gulp. Without them you die on the raft 3 play-hours later.
So far this works on Leisure Suit Larry 2 (SCI0), King's Quest 4 (SCI0), King's Quest 6 (SCI1.1), and Laura Bow 2 (SCI1.1). I'm currently working on King's Quest 5 (SCI1.0).
This is work done with Claude -- I do the design and playtesting and it does the rest :D
Any feedback, play testing, and suggestions would be great!
- deleted 1mo ago[deleted]
- vunderba 1mo agoNice job! I actually wrote a blog article about my love/hate relationship with KQ4 in particular - with a particular shoutout to my incredible irritation with the whole golden bridle scene [1]. Without spoiling anything, are you accounting for stuff like a player saving in the Minotaur's Labyrinth without a... shall we say crucial item necessary for a trap scene? [1] - https://mordenstar.com/blog/kqiv https://mordenstar.com/blog/kqiv
- wkfauna 1mo agoYes I'm with you on that bridle! And you can only get it by typing "look down", which is infuriating! I'm also discovering, working on KQ5, that it is really evil in allowing you to use items in certain ways that look fine at first (the action succeeds), but bite you in the butt later because you needed that item for something else and there was an other option you could have used. For example, throwing the leg of lamb at the cat to chase it away will work... but then good luck surviving the mountains. I love these games but MAN. In KQ6, the patched game prevents you from returning to the Labyrinth entrance unless you hold everything you need for inside. Stepping on the mountain will just not work. So you can save inside... you should be "safe" at that point (as safe as you can ever be in a Sierra game, lol).
- vunderba 1mo ago> In KQ6, the patched game prevents you from returning to the Labyrinth entrance unless you hold everything you need for inside. Stepping on the mountain will just not work Nice~ > throwing the leg of lamb at the cat to chase it away will work... but then good luck surviving the mountains. Agree! Some of the KQs will even give you a few points (not the maximum, since it’s not the optimal action) for doing something that’s considered “good,” even though it puts the game into an unwinnable state later on.
- wkfauna 1mo agoThat's evil! But it does make me feel a little better about not using points as a proxy :D
- dafelst 1mo agoThis is so cool, what a great project! I remember using a single save game and soft locking myself in Space Quest 2 by not getting the glowing gem, and in Space Quest 1 I think by not picking up the shard of broken glass, and being so pissed off about having to replay. The LSL dip and sunscreen issues you fixed were particularly egregious, by that point I feel like they should have fixed things. While Sierra should absolutely be recognized for spawning an entire genre of games that were legitimately fun, it is crazy that they were fine with shipping games with these broken states, when it was eminently preventable.
- wkfauna 1mo agoThanks!! I mean, I can kiiiinda see it as a design philosophy... It does make games harder and make them feel higher stakes. What really gets me is some of the later games that look like they would be safe, but aren't. For example Gabriel Knight 1 has a day structure that looks like it would prevent you from getting stuck... but it doesn't, you can trigger a day's end without getting everything you actually need. That's just, like, evil haha
- kelnos 1mo ago> it is crazy that they were fine with shipping games with these broken states, when it was eminently preventable. Given what I know about Sierra (nothing first-hand, just impressions based on what I've read), I would not be surprised at all if this was entirely intentional.
- 6581 1mo ago> it is crazy that they were fine with shipping games with these broken states It was an intentional part of their game design.
- a96 1mo ago"We know that you are brave, but you might want to save."
- shoo 1mo agotangent: this unfortunate design choice by the old Sierra adventure games has been discussed a number of times on the Designer Notes podcast, focused on game design [1]. Soren opens each discussion by asking the guest which is the first game they remember. [1] https://www.idlethumbs.net/designernotes/ https://www.idlethumbs.net/designernotes/
- catoc 1mo agoThis is so cool - very impressive! Read the whole ReadMe to understand how you pulled this off. Halfway through, I shiver, wait a minute I recognize this writing style… I would have so preferred to remain impressed and excited by what a fellow human came up with - sometimes I really hate what AI is taking from us
- wkfauna 1mo agoIt's true that Claude wrote most of the Readme... But the design is human :)
- catoc 1mo agoThe readme and 100% of the code - according to that readme - was also AI. If you came up with the design of the parser for the decompiled graphs, then I’m glad to still be impressed. Don’t get me wrong, it’s a cool project… and I was actually impressed and excited
- no-name-here 1mo ago> 100% of the code - according to that readme - was also AI I only briefly scanned it - are you referring to Claude being an extensive commit contributor?
- catoc 1mo agoYes, as in 100% :-(
- cadamsdotcom 1mo agoWhy not rip and replace the parts of the readme then? It's like making a beautiful chocolate praline and shipping it in a shoe.
- kelnos 1mo agoMaybe don't feel entitled to the author's time? Perhaps he'd rather spend time playing the games that the software patched, instead of spending time doing writing for you.
- thom 1mo agoTalking of being softlocked on a boat crossing: https://www.kensblog.com/update-on-our-journey-through-the-nw-passage/ https://www.kensblog.com/update-on-our-journey-through-the-n...
- snipem 1mo agoThis is great. Would you provide the changes as patches like they do for romhacks? This is some true quality of life improvement when playing these games and have to make dinner.
- wkfauna 1mo agoThanks! No, this needs your own copy of the game, like eg ScummVM does. You run the tool on it and then you can point ScummVM/DOSBox to the patched directory.
- snipem 1mo agoTrue, but it looks for me like a tool that can generate a „nice“ path for every game. The path is true for every instance of the same game. If the path is done once, everyone can benefit from it. So a patch would not bundle copyrighted material, only the changes made from your tool that anyone else would end up with anyway. It is just a convenience thing. One would need the path, not running your tool over and over again for everyone wanting to play the sane version of the game.
- Asooka 1mo agoOr the author could get in touch with GoG, who currently distribute several classic Sierra games. I'm sure they would be happy to offer patched versions.
- bsammon 1mo agoThe discussion here reminded me of the "Cruelty Scale" (https://www.ifwiki.org/Cruelty_scale https://www.ifwiki.org/Cruelty_scale) It was originally created specifically in relation to text adventure games, but seems appropriate to a broader range of game types. The rankings are based on criteria like how far the game lets you go after making a get-stuck choice before you realize you're stuck, and whether that realization comes with clear information about what the wrong choice was.
- johnxianren 1mo agoThe delay is the real killer. You don't realize you're driving off a cliff until you’ve already hit the ground.
- disillusioned 1mo agoAha, but there's an added dimension to this Sierra-branded cruelty: A young 8-year-old me, playing Police Quest for the first time. Sits through the briefing. Gets the gun, the ammo, the briefcase, from the locker room. Grabs the car key. Heads out to the parking lot, gets in the car, starts driving... and immediately dies: "you failed to perform the prescribed vehicle walkaround." A bit of a "gotcha" for sharewareing the game, because said prescription was in a manual I definitely did not own (remember the games that would ask you for, say, the third word of the tenth page of the manual, as a form of DRM? brilliant.) NO PROBLEM: ASSIGNMENT RECEIVED: I WILL SAVE THE GAME EARLY AND OFTEN! Begin another playthrough. Lather, rinse, repeat. Play for several hours, carefully save scumming my way to glory: I have built a complex ladder of 10 save slots that I am slowly rotating through. Then the action gets heavier and heavier, and the saves come faster and faster, until the climax of the game, where you have the Death Angel cornered. "Radio for help." And there it says: "With what radio?" The one I had left back at the station, I don't know, 10 hours ago? But that's okay, because I can head back to the station and grab it from one of my convenient saves! No, no I cannot. I have over-indexed and let fear win the day and save scummed myself into oblivion. The earliest save is in a walking-dead state as well. I am toast. I died a bit that day. A painful lesson for an 8-year-old to learn. As Bennett Foddy says in his Getting Over It soliloquy, "When games were new, they wanted a lot from you; daunting you, taunting you, resetting and delaying you. Players played stoically. Now everyone’s turned off by that."
- chrisjj 1mo ago> Room art (PIC/VIEW) and obstacle polygons are read too, since some gates are geometric and exist nowhere in the script. Anyone got an example? Not counting bugs such as the floor gap in the SQ2 start room.
- wkfauna 1mo agoThe volcano at the end of Leisure Suit Larry 2. The elevator door opening after you drop your bomb into the crater is handled in the PIC, not in the room script. So the game ending condition is essentially invisible if all you look at is the scripts. Also in LSL2, nothing in the script tells you that you can't dodge the KGB agents on the beach by walking around them.
- chrisjj 1mo agoGreat. And the elevator door is operated by script?
- wkfauna 1mo agoNo, the elevator door is a boundary that is an obstacle in the PIC, until you drop the bomb and it becomes walkable.
- chrisjj 1mo agoAnd script is what sets it to walkable?
- wkfauna 1mo agoYeah so here's the chaining, I went back to look at it. The door is a sprite, declared in the VIEW, that is in the way of the strip of elevator shaft (declared in the PIC) that you have to step on in order to exit from the volcano (room 82) to room 83, which is the beginning of the endgame. If you just look at the script, the fact that you can't just walk into the shaft is not visible. Once you've caused the explosion, all that happens is that a variable is set called causedEruption, and the door animation happens. Nothing else other than a look message uses the value of causedEruption in the script. So before we added in the VIEW and PIC files, the engine thought that the endgame was free once you stepped onto the volcano crater. The PIC file is what tells you that that strip of the screen matters (it's the exit), and the VIEW file is what tells you that the door (a sprite) initially blocks access to it, and once it becomes open allows access to it. So the engine had to look at the VIEW and PIC to deduce that causedEruption was the flag that mattered, which meant that the items you have to use to cause said explosion were needed for the endgame.
- shidesheng 1mo ago[flagged]
- matheusmoreira 1mo agoFor those wondering just how pervasive this is: https://tvtropes.org/pmwiki/pmwiki.php/UnwinnableByDesign/Sierra https://tvtropes.org/pmwiki/pmwiki.php/UnwinnableByDesign/Si... https://tvtropes.org/pmwiki/pmwiki.php/UnintentionallyUnwinnable/Sierra https://tvtropes.org/pmwiki/pmwiki.php/UnintentionallyUnwinn...
- xnorswap 1mo agoWas the idea that these were incredibly complex and convoluted puzzles that you'd be expected to "solve" by playing over and over until it was completable? You'd expect one or two of these things to slip through by mistake, but so many indicates it was a bizarre but deliberate design decision?
- wolfram74 1mo agoI'm not sure how it became the norm in text adventure games, but for platformers part of it was a hold over from games being designed to be quarter eaters in arcades. Kids that played those became adults that made the next ones. I /suspect/ that a similar thing has happened with the kids that grew up on the N64 and gamecube had four player local coop as the ceiling and now lots of games that probably could have more than 4 players at a time (albeit with balance probably thrown out) are capped at 4. Looking at you, concerned ape :|
- Boxxed 1mo agoThey weren't even complex or convoluted. It was just a quiet, "Fuck you, you didn't think to try picking that item an hour ago so now you have to restart."
- rasz 1mo ago> "solve" by playing over and over nah, you were supposed to buy official Hint Books https://www.sierragamers.com/hint-books/ https://www.sierragamers.com/hint-books/ or call 0-700 tip line. This cruel design printed money.
- miek 1mo agoAs a kid, I owned Kings Quest 3 and 5 (side note, KQ5 was available on NES). Both are in the cruel category, and I never met anyone who came close to beating them. They were fun to play occasionally, but the most fun was had by showing to friends and letting them play (everyone was blown away). Sierra operated a 1-900 tipline (cost $0.75 per minute or similar). I can't imagine anyone beating these games without those tips or tips from a magazine.
- jddj 1mo agoI remember in Kings Quest 6 you can meet a guy early on in the bookstore which becomes relevant (but not critical?) right at the end. I never knew how relevant though, as the time I played it through right to the end wasn't one of the times when he'd happened to be in the bookstore early on. I guess that's not enough of a dead end to block progress. Maybe it'd be enough just to know what happens in the castle if Prince Alexander had befriended him. Otherwise I guess I'll carry that unresolved thread around with me for another ~25 years. Edit: went looking for spoilers and yeah, alternate ending which admittedly sounds better than the one I got
- wkfauna 1mo agoI played KQ6 as a small kid who could barely speak English, and again ~10 years later as a grad student. The day I stumbled on the long ending and found myself in the Realm of the Dead still counts as one of the most mind-explodey things that ever happened to me.
- jddj 1mo agoI'm a native English speaker, but I was a young kid as well and so I remember learning a lot of the puns and wordplay in English much later on in life after first seeing them in that game. I'm sure another playthrough would reveal even more. "Stick in the mud", "Wallflower", those sorts of thing.
- jonathanlydall 1mo agoGames used to often be brutally unforgiving. If you hadn't saved recently and you died (or inadvertently made the game unwinnable without knowing), tough luck, so for some games I'd save regularly "just in case", even if saving was relatively slow. I was somewhat astonished when mid/late 2000's I was watching a friend play a game (on a console I think) where if you missed a jump over a bottomless pit, instead of you going back to your last save or check point, your character was right back to just before the jump and you could try again instantly. One of my very favourite games of all time is Star Control II and I was thrilled when Jimmy Maher did a review of it [0] (and then felt a bit upset that he essentially said he felt it was overrated). One of his criticisms which I felt was very fair was that the game had a hard in-game time limit, and although the warning signs are obvious in retrospect, until you actually hit it you don't realize it's there, meaning that your fate could have been sealed hours and hours before the actual time limit because there was not enough remaining time to travel to the places needed to win and you were actually walking-dead for that period. However, I suppose it makes the next play through easier as you'll know more of what to do. [0]: https://www.filfre.net/2018/12/star-control-ii/ https://www.filfre.net/2018/12/star-control-ii/
- a96 1mo agoIn (real) roguelikes, if you die you get to start from the beginning with a new character. Saves are only for when you want to continue the game some other time.
- smrtinsert 1mo agoYears later, I appreciated the ability the get stuck in Sierra games. It makes each decision or moment just that much more important. Leave no stone unturned or thought unthunk!
- bhickey 1mo agoAte the pie? You're gonna die.
- Boxxed 1mo ago100% the only non-trivial useful application of formal methods I've ever seen
- h2aichat 1mo agoI will have to install back my old games !!!
- sunir 1mo agoI'm still traumatized from Space Quest I because I didn't grab a broken glass from the windshield of our crashed spaceship before entering the cave with the laser. It's been 40 years. I vote wkfauna for President.
- bckr 1mo agoThis is just very cool. Thanks for sharing.
- qarl2 1mo agoThis is wonderfully delightful. I wish I'd thought of it. I am exploring decompilation - MAME ROM to idiomatic JavaScript. It's going pretty well - the LLM does a good job translating from one language (machine) to another (JavaScript) which I guess is how the LLMs got their start. Does your input have symbols to assist understanding, or do the LLMs have to work it out for themselves? Warning: self-promotion: https://github.com/qarl/arcade-js https://github.com/qarl/arcade-js
- wkfauna 1mo agoThanks! I use sci-tools for the decompilation. It produces a LISP-ish S-expression source. I also extended it to produce a JSON AST.
- qarl2 1mo agoAH. And I see that sci-tools has access to English derived symbols from the classes and methods. That answers my question - whether your system is generating novel symbols.
- resetneac 1mo ago[flagged]
- foobarian 1mo agoWarning: this whole thread is full of spoilers!! :-D
- sirtaj 1mo agoI remember being mostly okay with this level of cruelty when this was one of the few games I had available all summer, but I tried to play some of them again as a middle aged guy and I couldn't believe I had put up with this. This is one of those so obvious it's brilliant ideas and a lot of people are going to be grateful. Thank you.