Мини-игра взлома замков в Gothic 1 Remake — головоломка-слайдер: у каждой плитки семь отверстий, штифт должен встать в центральное (позиция 4). Ловушка в том, что плитки связаны: двигаешь одну — едут другие, иногда в противоположную сторону. А любое движение в стену напрягает отмычку, и после пары ошибок она ломается.
UnlockMyLoot перебирает все состояния замка и выдаёт кратчайшую последовательность ходов, в которой ни один штифт ни разу не упирается в стену. Следуй шагам — отмычка целее, лут твой.
Открой сайт, дальше три шага:
- Количество плиток — от 3 до 8, в игре обычно 6.
- Позиции штифтов — кликни на текущее отверстие каждой плитки (счёт слева направо, центр — 4).
- Связи между плитками — вручную в матрице или через «Помощь» на шаге 03: мастер даёт безопасный ход в игре, ты отмечаешь, кто дёрнулся, связи записываются сами. При открытии помощника снимается снимок исходных штифтов; в UI остаются позиции после проб (как в игре), а в общую копилку уходит конфигурация исходные штифты + найденные связи.
Жми «Взломать» — получишь пронумерованные шаги с предпросмотром позиций после каждого хода. Выполненные шаги отмечаются кликом. Конфигурацию можно отправить другу ссылкой ?lock=… или найти готовые замки в каталоге. Счётчик на главной показывает, сколько замков уже вскрыто всеми посетителями.
Состояние замка — вектор позиций штифтов, ход — сдвиг плитки с каскадом по связям. Решатель в два этапа: BFS находит минимальное число ходов среди безопасных (штифт остаётся в [1, 7]), затем DP по коридору кратчайших путей выбирает вариант с меньшим числом переключений между плитками. Перед выводом решение прогоняется через независимую симуляцию.
Мастер связей учитывает механику игры: если связанная плитка упёрлась бы в стену, весь ход не происходит; при блокировке у стены ищет обходной путь BFS по уже проверенным плиткам.
Алгоритм проверен на реальных замках (включая дверь у основания Разрушенной башни в Старом Лагере) и на тысячах случайных конфигураций — тесты sol-test.mjs, wiz-test.mjs, link-test.mjs, suggest-test.mjs.
Статика на GitHub Pages, бэкенд — api.unlockmyloot.com (Durable Object + KV):
| Метод | Путь | Назначение |
|---|---|---|
GET |
/count |
Счётчик взломанных замков |
POST |
/opened |
+1 к счётчику |
POST |
/lock?code=…&pins=… |
Запись в копилку (код + фингерпринт штифтов для подсказок) |
GET |
/locks |
Топ конфигураций из копилки |
GET |
/suggest?pins=… |
Подсказка связей по расстановке штифтов |
| Файл / папка | Назначение |
|---|---|
index.html, en/index.html |
Решатель (RU / EN): разметка, стили, UI, мастер связей |
locks/, en/locks/ |
Каталог именованных замков |
counter-worker.js |
Cloudflare Worker: счётчик, копилка, подсказки |
wrangler.toml |
Конфиг воркера, KV, Durable Object, домен API |
locks-research.md |
Внутренние заметки по именованным замкам (не на сайте) |
sol-test.mjs, wiz-test.mjs, … |
Регрессионные тесты ядра и UI-логики |
.github/workflows/pages.yml |
Деплой сайта на GitHub Pages |
.github/workflows/purge-locks.yml |
Ручная очистка копилки lk: / pi: (admin) |
Хостинг разнесён сознательно: статика на GitHub Pages (доступен без VPN в РФ), API — Cloudflare Worker. Если API недоступен, сайт молча показывает локальный fallback счётчика и работает дальше.
Если основной домен не открывается, в подвале есть зеркало на jsDelivr (gcore.jsdelivr.net). Зеркало 1h8s.github.io не подходит: GitHub Pages с кастомным доменом редиректит обратно на unlockmyloot.com.
Каждый пуш в main деплоит сайт (GitHub Actions) и воркер (Cloudflare Workers Builds). Не менять id KV в wrangler.toml — оттуда подтягивается значение счётчика при миграции.
Сборка не нужна:
open index.html
# или
python3 -m http.server 8000
# тесты
node sol-test.mjs && node wiz-test.mjs && node link-test.mjs && node suggest-test.mjsСайт создан YouTube-каналом 108 seconds.
Метод пошагового определения связей между плитками (мастер «Помощь»: двигаешь плитку — отмечаешь, кто дёрнулся — связи и позиции вычисляются автоматически) впервые придуман и реализован в этом проекте, июнь 2026.
Код распространяется под лицензией AGPL-3.0. Коротко: использовать и модифицировать можно, но любой сайт или сервис на основе этого кода обязан открыть свой исходный код под той же лицензией и сохранить указание авторства. Хочешь использовать иначе — напиши, договоримся.
Фанатский инструмент для Gothic 1 Remake (Alkimia Interactive / THQ Nordic). Не аффилирован с разработчиками или издателем — просто очень не хотелось ломать отмычки.
