No description
  • TypeScript 87.8%
  • HTML 4.3%
  • CSS 4.2%
  • JavaScript 3.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-26 08:29:04 +03:00
balance fix: synchronize lab progression rewards with verified game balance 2026-10-25 19:35:31 +03:00
docs docs: update parity limits and validation results 2026-10-26 00:27:51 +03:00
e2e fix: compact resource HUD and use Unity XP icon 2026-10-26 08:29:03 +03:00
public chore: bootstrap standalone Rare Finds lab and repair source paths 2026-10-25 19:19:10 +03:00
scripts fix: refresh game art without breaking live asset serving 2026-10-26 00:03:08 +03:00
src fix: compact resource HUD and use Unity XP icon 2026-10-26 08:29:03 +03:00
tests feat: enlarge field and move inventory to dialog 2026-10-26 00:58:20 +03:00
.gitignore fix: refresh game art without breaking live asset serving 2026-10-26 00:03:08 +03:00
index.html feat: mirror game resource HUD and tweak cheats 2026-10-26 08:23:53 +03:00
package-lock.json chore: bootstrap standalone Rare Finds lab and repair source paths 2026-10-25 19:19:10 +03:00
package.json feat: import local balance workbook with source-matched runtime diff 2026-10-25 19:33:52 +03:00
playwright.config.ts chore: bootstrap standalone Rare Finds lab and repair source paths 2026-10-25 19:19:10 +03:00
README.md docs: update parity limits and validation results 2026-10-26 00:27:51 +03:00
tsconfig.app.json chore: bootstrap standalone Rare Finds lab and repair source paths 2026-10-25 19:19:10 +03:00
tsconfig.browser.json chore: bootstrap standalone Rare Finds lab and repair source paths 2026-10-25 19:19:10 +03:00
tsconfig.json chore: bootstrap standalone Rare Finds lab and repair source paths 2026-10-25 19:19:10 +03:00
tsconfig.worker.json chore: bootstrap standalone Rare Finds lab and repair source paths 2026-10-25 19:19:10 +03:00
vite.config.ts chore: bootstrap standalone Rare Finds lab and repair source paths 2026-10-25 19:19:10 +03:00

Rare Finds Lab

Локальная лаборатория баланса и генерации AutoTasks для Rare Finds. Цель — воспроизвести игровую прогрессию и механики на том же балансе, что использует выбранная версия игры, и дать удобный цикл эксперимента: изменить параметры → проверить на поле → сравнить прогонами → сохранить результат.

Сейчас реализованы поле 7×9, merge, эмиттеры, фиксированные и автоматические задачи, ресурсы, уровни, декор и естественный переход от последнего декора к циклу endless-сундуков, редактор Tier1–Tier5, ручные инструменты и автоматические прогоны. Состояние сундукового цикла и таймеры сохраняются и восстанавливаются. Проверка соответствия строится по исходникам Unity и тестам; Unity runtime не запускался, поэтому runtime parity не заявляется. Проект не подключён к аккаунту игрока или live Remote Config.

Быстрый запуск

Нужны Node.js, совместимый с Vite 8, и npm. В текущем окружении проверено на Node 26.12.0.

npm ci
npm run dev -- --host 127.0.0.1

Сборка и проверки:

npm test
npm run typecheck
npm run typecheck:app
npm run build:app
npm run test:e2e

Playwright использует /usr/bin/chromium, если он установлен. Другой путь задаётся переменной PLAYWRIGHT_CHROMIUM_EXECUTABLE. При отсутствии системного браузера установите его через npx playwright install chromium.

Источники баланса

  • balance/Rare Find Game Balance.xlsx — копия предоставленного файла. Локальный CLI-импорт создаёт отдельный кандидат и отчёт различий, не меняя рабочий баланс.
  • src/config/default-config.json — поставляемый снимок модели, включающий импортированный runtime-контент и настройки лаборатории.
  • src/config/autotask-tiers.json — копии Unity Tier1–Tier5, не live Remote Config.
  • balance/runtime-baseline.json и его manifest — зафиксированные runtime JSON Unity для офлайн-сравнения. balance/source-manifest.json сохраняет первоначальную опись источников аудита.

Штатный импортёр игры в rf/res/scripts/import-balance читает Google Sheets. Нельзя автоматически считать локальную книгу, сохранённые Unity JSON и реально загруженные игрой настройки одной версией баланса. Текущий порядок импорта описан в BALANCE-PIPELINE.md; первоначальные выводы — в аудите.

Локальный импорт книги без Google API:

npm run balance:import -- --out /tmp/rf-candidate

Вход по умолчанию — предоставленный XLSX; baseline — balance/runtime-baseline.json. Выход: candidate-config.json, report.json, manifest.json и runtime/. Папка назначения должна быть новой. Для сравнения с другим checkout используйте --game-root ../rf. Откройте report.json и проверьте расхождения; candidate-config.json можно загрузить через полный JSON-импорт в «Инструментах». Кандидат не заменяет исходную конфигурацию автоматически.

Для обновления снимка нужен Unity-репозиторий с _MTH2_proj/Assets/GameData. По умолчанию скрипты ищут соседнюю папку ../rf, затем старую ../restored-repo. Можно явно указать путь:

RF_GAME_ROOT=/absolute/path/to/rf npm run refresh:config
RF_GAME_ROOT=/absolute/path/to/rf npm run prepare:game-art

refresh:config меняет встроенные конфиги: просмотрите diff перед коммитом. Остальные настройки берутся из существующего шаблона; команда ещё не гарантирует полный импорт всех поведенческих параметров. Опись source-manifest.json относится к дате аудита и не обновляется этой командой.

Графика включена в репозиторий. Без Unity-исходников запуск и сборка используют поставляемые WebP. При наличии исходников prepare:game-art извлекает их заново. В текущем снимке отсутствует атлас raider1; это фиксируется предупреждением. Поле использует исходные иконки, синтетической может быть визуализация раскрашивания полотна при сохранении расходов, XP и наград игры.

Рабочие сценарии

  1. Ручная игра: поле, эмиттеры, merge, сдача задач, награды и прогресс. Тестовые ресурсы и синтетические профили применяются инструментами игрока.
  2. Настройка AutoTasks: выбрать Tier, изменить параметры, сохранить вариант, сравнить на одинаковом снимке и seed. Сброс восстанавливает поставляемый Tier.
  3. Автоматические прогоны: генерация серии задач и симуляция прохождения. Результат зависит от сценария и поведения автоматического игрока.
  4. Проверка механик: source-derived тесты повторяют проверяемые правила C# исходников. Runtime fixture import остаётся дополнительным инструментом: Unity не запускается и его доступность не требуется для разработки.

Рабочее пространство состоит из четырёх режимов:

  • Игра: поле, активные задания, ресурсы, выбранный предмет и прогресс полотна. Кнопка «Инструменты тестирования» открывает выдачу золота/алмазов/энергии, уровень, часы и сохранение состояния.
  • AutoTasks: настройки открываются рядом с игрой на desktop. При вводе пересчитываются цели; изменения применяются к следующим заданиям, текущая очередь сохраняется. «Проверить на поле» использует текущую игровую сессию. Пока фиксированные задания не пройдены, действует их очередь; оценочный профиль «После скриптов» доступен в инструментах тестирования.
  • Прогоны: сравнение AutoTasks на общих seed и полное прохождение поля. История и экспорт находятся рядом с результатами; низкоуровневые метрики — в раскрываемом разделе.
  • Инструменты: снимок и полный конфиг JSON, RNG, fixture-сверка, trace и справка.

После успешного прогона панель «Сохранить и повторить» позволяет скачать эксперимент с балансом, снимком, параметрами и результатом. «Загрузить эксперимент» проверяет файл, «Повторить эксперимент» пересчитывает его в worker и сравнивает с сохранённым результатом. Это воспроизведение лаборатории; оно не заявляет runtime-сверку Unity и не сбрасывает текущее игровое поле. Для полных прохождений сохраняется часовой пояс дневного сброса; повторение требует такого же пояса.

Длительные прогоны можно остановить. Изменение параметров отменяет устаревший расчёт, чтобы его ответ не заменил актуальный результат.

На мобильном экране игра и редактор показываются по очереди, сохраняя одну сессию. Синтетическое полотно служит представлением стадий; расходы и XP вычисляет игровое ядро. Восстановлена исходная кожа доски и графика предметов.

Структура

Путь Назначение
src/core/ Генерация, поле, RNG, экономика, награды и прогрессия
src/app.ts, index.html, src/style.css, src/ui/ Интерфейс, навигация и стили компонентов
src/worker/, src/platform/ Автоматические прогоны вне основного потока
src/config/ Поставляемые конфиги
scripts/ Обновление runtime-контента и извлечение графики
tests/, e2e/ Модульные и браузерные проверки
balance/ Предоставленная книга и опись источников
docs/ Аудиты, справка и план реализации

Результаты ревизии

Текущий статус и очередь работ — в плане. Реализованные правила: source-derived проверки, импорт, эксперименты, интерфейс, результаты проверок.

Известные границы: Unity runtime не запускался; ставки наград endless-сундуков используют обычный rate без RC-модификатора; стадии полотна пока последовательны, без выбора внутри открытой группы; вложенная энергетическая стоимость временных emitter-chain покрыта синтетическим тестом по Unity, поскольку предоставленная книга содержит только постоянные эмиттеры; время их многостадийной сборки не моделируется. Полные replay-прохождения требуют сохранённого часового пояса. Итоговые проверки: VALIDATION.md.

Сохранённые варианты в браузере не удаляются при обновлении приложения. Если нужен текущий baseline, выберите Tier и нажмите «Сбросить Tier»; старый локальный вариант остаётся экспериментом и может содержать прежние параметры.