Skip to content

Latest commit

 

History

115 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UnlockMyLoot - решатель замков Gothic 1 Remake

UnlockMyLoot

Решатель замков для Gothic 1 Remake — кратчайший путь, ноль сломанных отмычек

unlockmyloot.com → · English · Каталог замков

Один файл Без зависимостей Vanilla JS


Зачем это

Мини-игра взлома замков в Gothic 1 Remake — головоломка-слайдер: у каждой плитки семь отверстий, штифт должен встать в центральное (позиция 4). Ловушка в том, что плитки связаны: двигаешь одну — едут другие, иногда в противоположную сторону. А любое движение в стену напрягает отмычку, и после пары ошибок она ломается.

UnlockMyLoot перебирает все состояния замка и выдаёт кратчайшую последовательность ходов, в которой ни один штифт ни разу не упирается в стену. Следуй шагам — отмычка целее, лут твой.

Как пользоваться

Открой сайт, дальше три шага:

  1. Количество плиток — от 3 до 8, в игре обычно 6.
  2. Позиции штифтов — кликни на текущее отверстие каждой плитки (счёт слева направо, центр — 4).
  3. Связи между плитками — вручную в матрице или через «Помощь» на шаге 03: мастер даёт безопасный ход в игре, ты отмечаешь, кто дёрнулся, связи записываются сами. При открытии помощника снимается снимок исходных штифтов; в UI остаются позиции после проб (как в игре), а в общую копилку уходит конфигурация исходные штифты + найденные связи.

Жми «Взломать» — получишь пронумерованные шаги с предпросмотром позиций после каждого хода. Выполненные шаги отмечаются кликом. Конфигурацию можно отправить другу ссылкой ?lock=… или найти готовые замки в каталоге. Счётчик на главной показывает, сколько замков уже вскрыто всеми посетителями.

Как это работает

Состояние замка — вектор позиций штифтов, ход — сдвиг плитки с каскадом по связям. Решатель в два этапа: BFS находит минимальное число ходов среди безопасных (штифт остаётся в [1, 7]), затем DP по коридору кратчайших путей выбирает вариант с меньшим числом переключений между плитками. Перед выводом решение прогоняется через независимую симуляцию.

Мастер связей учитывает механику игры: если связанная плитка упёрлась бы в стену, весь ход не происходит; при блокировке у стены ищет обходной путь BFS по уже проверенным плиткам.

Алгоритм проверен на реальных замках (включая дверь у основания Разрушенной башни в Старом Лагере) и на тысячах случайных конфигураций — тесты sol-test.mjs, wiz-test.mjs, link-test.mjs, suggest-test.mjs.

API (Cloudflare Worker)

Статика на 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). Не аффилирован с разработчиками или издателем — просто очень не хотелось ломать отмычки.

About

Finding solutions to Gothic 1 Remake lock puzzles with a modified BFS solver, plus an API that collects lock configurations players encounter in-game.

Topics

Resources

Stars

11 stars

Watchers

0 watching

Forks

Contributors

Languages