LucasArtsifier automaticky hledá a opravuje softlocky ve hrách Sierra

Experimentální nástroj analyzuje skripty her postavených na Sierra SCI, hledá stavy, ze kterých už nelze hru dokončit, a vytváří odstranitelné patch soubory.

19. srpna 2026 Martin Šuránek

Starší adventury od Sierry jsou známé situacemi, kdy může hráč pokračovat ve hře, ale kvůli dřívějšímu rozhodnutí už není možné dosáhnout vítězného stavu. Projekt LucasArtsifier zkouší takové softlocky hledat automaticky pomocí statické analýzy herních skriptů.

Nejde o mod, který má předem ručně nadefinované problematické situace. Nástroj dekompiluje SCI skripty, vytváří z nich abstraktní model stavů a přechodů a snaží se odvodit, kdy vítězství přestává být dosažitelné.

Jak analýza funguje

Pipeline používá abstraktní interpretaci k vytvoření grafu stavů hry. Z něj hledá přechody, po kterých už není možné dostat se do vítězného stavu, přestože hra dál přijímá vstupy.

Pokud takovou situaci najde, nástroj se pokusí odvodit podmínku, která problematický přechod zablokuje. Typickým příkladem může být odchod z oblasti bez předmětu, který bude později nutný k dokončení hry.

Výsledkem jsou upravené SCI skripty, které se znovu zkompilují jako takzvané loose patch soubory. Původní resource map a volume soubory hry se nemění. Patch lze proto odstranit jednoduše smazáním vygenerovaných script.* souborů.

Čtyři analyzované hry

Autor uvádí čtyři hry, na kterých pipeline testoval:

  • Leisure Suit Larry 2,
  • King's Quest IV,
  • King's Quest VI,
  • Laura Bow 2.

Zajímavé je, že analytický engine podle autora neobsahuje pravidla napsaná speciálně pro jednotlivé tituly. Z kódu se snaží odvodit například startovní místnosti, signály smrti, vítězný stav nebo debug flagy.

To ale neznamená, že už jde o univerzální analyzátor všech her na SCI. Autor upozorňuje, že přidávání dalších titulů zatím odhaluje nové případy, kvůli kterým je potřeba analýzu rozšiřovat. King's Quest V je stále rozpracovaný a Quest for Glory naráží na problém state explosion.

Instalace je techničtější, než může vypadat

Analytická část projektu je napsaná v Pythonu 3 a používá pouze standardní knihovnu. Celá pipeline ale má další build závislosti.

Pro dekompilaci a rekompilaci jsou potřeba také nástroje kolem SCI, .NET SDK, CMake a C++ compiler. Nejde tedy o jednoduchý Python skript určený běžným hráčům bez technického prostředí.

Právě oddělení analytické části od nástrojů pro práci se SCI je ale zajímavé: samotná logika hledání stavů nemusí být závislá na externím Python balíčku, zatímco dekompilaci a patchování obstarávají specializované nástroje.

Co nástroj zatím neumí

Autor popisuje několik důležitých limitů.

Analýza zatím nemodeluje všechny požadované akce, které mohou mít důsledky až výrazně později. U složitějších her může počet možných stavů rychle růst a narazit na state explosion.

Ani čtyři označené hry podle autora nebyly s vygenerovanými patchi kompletně dohrány end-to-end. Relevantní situace byly rozsáhle testované, ale nejde o důkaz, že automaticky vytvořený patch zachovává správné chování ve všech částech hry.

Projekt se navíc zaměřuje na hry používající Sierra SCI. Starší AGI tituly v současnosti nepodporuje.

Statická analýza starých herních skriptů

LucasArtsifier je zajímavý hlavně jako experiment se statickou analýzou a abstraktní interpretací nad několik desítek let starým herním kódem.

Místo ručního seznamu známých softlocků se snaží z programu odvodit, které stavy jsou ještě řešitelné a které už vedou do slepé větve. To je užitečnější technická pointa než samotná možnost vytvořit patch pro několik konkrétních adventur.

Současně je potřeba zachovat limity projektu: čtyři analyzované hry ještě neznamenají obecné řešení pro celý katalog Sierry a nové tituly stále vyžadují další práci na analyzátoru.