Sokoban-Lettres

Історія жанру

Витоки сокобану

Sokoban-Lettres не вигадує свою механіку: він запозичує її в японської гри 1982 року, формула якої відтоді майже не змінилася. Зрозуміти, звідки взялася ця формула, допомагає зрозуміти, чому вона так добре витримала час — і що змінює додавання літер.

Комірник

Слово сокобан (倉庫番) японською означає «комірник». Гру створив Хіроюкі Імабаясі, а 1982 року її видала Thinking Rabbit — японська студія, для якої вона стала першим помітним проєктом. Гра вийшла на японських домашніх комп’ютерах тієї доби, коли комп’ютерна головоломка ще тільки формувалася як жанр.

Принцип уміщається в одне речення: персонаж штовхає ящики складом, побаченим згори, доки кожен ящик не стане на позначене місце. Тягнути їх не можна, штовхати два одразу не можна, проходити крізь стіни не можна.

Чому такої малої кількості правил достатньо

Більшість ігор набувають глибини, додаючи системи. Сокобан робить навпаки: його глибина виростає з єдиної асиметрії. Штовхати можна, тягнути — ні.

Ця асиметрія має жорсткий наслідок: більшість ходів незворотні. У головоломці з плитками будь-яку досягнуту позицію можна відкотити. У сокобані ящик, заштовханий у кут, лишається там назавжди. Гравець програє не через брак спритності, а через хибне передбачення — інколи зроблене тридцять ходів тому, без жодного попередження в ту мить.

Це також пояснює особливе відчуття жанру: вирішальний момент партії майже ніколи не збігається з моментом, коли ви помічаєте поразку.

Складна задача — у точному значенні слова

Сокобан рано привернув увагу дослідників штучного інтелекту, і не з цікавості: він є надзвичайно ворожим полігоном для алгоритмів планування.

Роботи 1990-х років установили, що узагальнена версія гри — на полі довільного розміру — є PSPACE-повною задачею. Простіше кажучи, вона належить до класу складності, для якого не відомо жодного ефективного загального методу розв’язання, і є щонайменше настільки ж важкою, як будь-яка інша задача цього класу. Раніші результати вже показали її NP-складність, зіставивши її із задачами планування руху.

Складним для машини сокобан робить не кількість доступних щомиті ходів — вона мала, часто менша за десять, — а глибина розв’язків і наявність безнадійних позицій. Наївний пошук годинами досліджує гілки, приречені вже давно. Тому ефективні розв’язувачі витрачають більшість своєї кмітливості на одне завдання: якомога раніше розпізнати, що позиція програна.

Чого навчилися розв’язувачі й що застосовують гравці

Перенесені в гру, ці три ідеї складають основу поглиблених стратегій, описаних для цієї гри.

Сорок років портів

Сокобан поширився так, як мало яка гра: його логіка вміщається в кілька десятків рядків коду, а рівні — у кілька байтів тексту. Його портували практично на всі платформи, що з’явилися відтоді, часто силами аматорів і часто разом із наборами рівнів, створеними ентузіастами. Еталонні набори рівнів і сьогодні використовують, щоб порівнювати розв’язувачі між собою.

Цим поширенням гра завдячує рідкісній властивості: рівень сокобану — це дані, а не програма. Поле описується символами — стіна, підлога, ящик, ціль, — що дозволило тисячам рівнів мандрувати незалежно від будь-якої конкретної реалізації.

Що змінюють літери

У класичному сокобані ящики взаємозамінні. Задача полягає в тому, щоб накрити набір місць; який саме ящик де опиниться — байдуже.

Sokoban-Lettres забирає цю свободу. Кожен ящик несе літеру, місця складають слово, що читається зліва направо, і ящик із літерою «Р» має тепер рівно одне можливе призначення. Задача перестає бути покриттям множини й стає обмеженим призначенням: треба не лише довести кожен ящик до місця, а зробити це в порядку, за якого жоден не перекриє шлях іншому.

Ефект добре помітний навіть на невеликих полях. Розташування, тривіальне з безликими ящиками, може вимагати серйозного обмірковування, щойно порядок стає обов’язковим, бо кожна вже поставлена літера перетворюється на перешкоду для наступних. Саме це дозволяє тримати поля читабельними на екрані телефона, не жертвуючи складністю.

Другий, менш очікуваний ефект стосується пам’яті. Слово-ціль дає гравцеві опору, якої класичний сокобан не пропонує: «Р має пройти раніше за О» запам’ятати легше, ніж абстрактну позицію. Режими складності грають саме на цьому, приховуючи частину або всі позначки.

Читати далі

Повні правила цього варіанта викладено в посібнику, а рішення щодо дизайну — на сторінці про гру. Щоденний виклик дає одне поле на дату, однакове для всіх.