В приключенческих играх Sierra можно застрять навсегда: забыл крем от загара в Лос-Анджелесе, сел на лайнер — и через несколько игровых дней умираешь на плоту, вернуться нельзя. Игра продолжает принимать ввод, просто выиграть уже невозможно. LucasArts таких ловушек не делала принципиально.
Кто-то написал анализатор, который находит эти состояния сам. Он декомпилирует скрипты движка SCI, абстрактной интерпретацией строит граф переходов между комнатами с условиями, перемещений предметов и записей сюжетных флагов, выводит охранные условия, проверяет их на модели и вшивает обратно в игру: переход в тупик просто перестаёт срабатывать.
Ничего про конкретную игру внутри не зашито: стартовая комната, комната победы и сигнал смерти выводятся из кода самой игры. Проверено на четырёх играх одним и тем же кодом: Leisure Suit Larry 2 и King's Quest IV на SCI0 1988 года, King's Quest VI и Laura Bow 2 на SCI1.1 1992 года.
Мысль на вынос: невозвратные переходы ищутся обходом графа состояний, а не плейтестом.
@make_game
Post #2000
1.28K

- ❤ 4