Документация: границы движка, работа через модель, дизайн игры до лейтгейма
18-engine.md границы Tile2D, проекции 2D, формат проекта, второй проект
19-agent.md инструменты --tool, скиллы, терминал в редакторе
20-gdd.md акты, петли, рост отряда, закон масштаба, бюджет 200 часов
21-damage.md семь стихий, статусы, десять реакций, формулы, триггеры
22-loot.md редкости, аффиксы, артефакты, зачарования, материалы
23-endgame.md Бездна, мутации, лидерборды, 262 ачивки
Плюс правки 01/02/07/15/16/17 под переехавшие пути и новые правила забега.
Дизайнерская часть держится на одном законе: угроза растёт квадратично, сила
отряда — линейно с затуханием, разрыв закрывается ЗНАНИЕМ, а не числами. Из
него выведены и экономика опыта (41 млн против 44 млн дохода), и то, почему
реакции считаются от глубины, а не от урона оружия, и почему в Бездне
множитель HP разрешён, а во всём авторском контенте запрещён.
.claude/commands: скиллы /tile2d, /room, /floor — правила этого движка,
которые нельзя вывести из кода. Главное записано первым: не отчитываться об
успехе без прохода --tool validate.
Числа в этих документах — вход для инструментов, а не украшение. Расхождение
между таблицей и выводом инструмента означает, что неправ документ.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 01:07:45 +07:00
|
|
|
|
# 22 — Добыча: редкости, аффиксы, артефакты, зачарования
|
|
|
|
|
|
|
|
|
|
|
|
Продолжение [20-gdd.md](20-gdd.md). Боевые формулы — [21-damage.md](21-damage.md).
|
|
|
|
|
|
|
|
|
|
|
|
Правило, из которого всё растёт: **находка должна быть решением, а не
|
|
|
|
|
|
прибавкой**. Предмет, который просто «лучше на 7%», не стоит того, чтобы за ним
|
|
|
|
|
|
идти в темноту, — а идти в темноту и есть игра.
|
|
|
|
|
|
|
|
|
|
|
|
## 1. Редкости
|
|
|
|
|
|
|
Редкости и аффиксы: находка стала решением (M25)
Предмет перестал быть строкой каталога. ItemInstance несёт редкость и до
шести аффиксов, и «карабин» с первого этажа больше не равен «карабину» с
сорокового. Четыре редкости, десять тегов, тир и бюджет от глубины.
Аффиксы не заводят новых каналов влияния: каждый тег ложится в то, что уже
есть — урон оружия, смесь стихий, пробитие, четыре числа бойца, ресурсы
вылазки. У предмета по-прежнему нет ручки к правилу «не бить своих», и
появиться ей неоткуда.
ItemInstance неявно приводится к ItemId, поэтому полторы сотни мест,
которым нужен ВИД вещи, остались как были. Цена решения — присваивание в
ItemId молча теряет рулоны; таких мест три (подбор, схрон, запись
профиля), и все они работают с экземпляром целиком.
Замеры поймали три расхождения дизайн-документа с самим собой:
* формула редкости противоречила таблице рядом с ней: 2.7% находок с
аффиксами на первом этаже против 22%. Выбрана формула, наклон поднят
до схождения с таблицей на дне (12% обычных на сотом);
* бюджет пускал восемь высших аффиксов вместо обещанных шести;
* предельная вещь собиралась к семидесятому этажу вместо сотого.
Числа пересчитаны, документ исправлен: 6·cost(9) = 294 <= B(100) = 295 <
7·cost(9) = 343. Предельная вещь существует ровно на дне и ровно одна.
Проверка в --descend меряет не бросок, а ПРОВОДКУ до бойца — там, где
дважды умирали вес и стихии:
аффиксы: урон 12.0 -> 18.0, здоровье 100 -> 140, броня 0.10 -> 0.25,
пробитие 0.20, KIN 1.00 -> 0.60, CRY 0.40, сумма долей 1.000
Последнее число не украшение: конверсия обязана переводить урон, а не
добавлять седьмую долю сверх единицы.
Попутно, на глубине 30 и только там:
* «зачистка поля» в проверках не держалась — у твари есть откат
воскрешения, и с нулевым таймером она оживала тем же шагом. Лечение
вне схватки и расход света на стоянке молча мерили бой. На восьмом
этаже тварей мало, и проверка проходила по удаче;
* порог «стоянка бесплатна» стоял в единицах заряда, а тот же шаг стоит
дороже с глубиной. Переведён в тайлы — и сразу показал, что отряд в
строю проходит 0.8 тайла за две секунды «стоянки». Свет теперь
списывается только в ADVANCING: топтание и драка бесплатны, тратит
РАЗВЕДКА. Без этого таймер возвращался через чёрный ход.
Формат профиля 4: токен предмета вида rifle@relic+dmg7,0:0.63. Миграции
не требует — у старых токенов нет хвоста после '@'.
--accept PASS без изменений: в песочнице находок нет вовсе.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-16 06:35:00 +07:00
|
|
|
|
Сделано в M25. Числа ниже — **замеренные** (`--tool drops 1 100`, по 10000
|
|
|
|
|
|
бросков на глубину), а не задуманные:
|
|
|
|
|
|
|
|
|
|
|
|
| Редкость | Аффиксов | D1 | D28 | D55 | D100 |
|
|
|
|
|
|
|---|---|---|---|---|---|
|
|
|
|
|
|
| Обычное | 0 | 96.9% | 67.5% | 38.4% | 12.3% |
|
|
|
|
|
|
| Меченое | 1–2 | 2.9% | 21.3% | 23.5% | 21.9% |
|
|
|
|
|
|
| Разработка | 3–4 | 0.1% | 7.1% | 25.1% | 39.6% |
|
|
|
|
|
|
| Реликт | 5–6 | ~0.01% | 4.1% | 13.1% | 26.2% |
|
|
|
|
|
|
| **Артефакт** | уникальное правило + 2 | — | — | — | — |
|
Документация: границы движка, работа через модель, дизайн игры до лейтгейма
18-engine.md границы Tile2D, проекции 2D, формат проекта, второй проект
19-agent.md инструменты --tool, скиллы, терминал в редакторе
20-gdd.md акты, петли, рост отряда, закон масштаба, бюджет 200 часов
21-damage.md семь стихий, статусы, десять реакций, формулы, триггеры
22-loot.md редкости, аффиксы, артефакты, зачарования, материалы
23-endgame.md Бездна, мутации, лидерборды, 262 ачивки
Плюс правки 01/02/07/15/16/17 под переехавшие пути и новые правила забега.
Дизайнерская часть держится на одном законе: угроза растёт квадратично, сила
отряда — линейно с затуханием, разрыв закрывается ЗНАНИЕМ, а не числами. Из
него выведены и экономика опыта (41 млн против 44 млн дохода), и то, почему
реакции считаются от глубины, а не от урона оружия, и почему в Бездне
множитель HP разрешён, а во всём авторском контенте запрещён.
.claude/commands: скиллы /tile2d, /room, /floor — правила этого движка,
которые нельзя вывести из кода. Главное записано первым: не отчитываться об
успехе без прохода --tool validate.
Числа в этих документах — вход для инструментов, а не украшение. Расхождение
между таблицей и выводом инструмента означает, что неправ документ.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 01:07:45 +07:00
|
|
|
|
|
|
|
|
|
|
Кривая редкости:
|
|
|
|
|
|
```
|
Редкости и аффиксы: находка стала решением (M25)
Предмет перестал быть строкой каталога. ItemInstance несёт редкость и до
шести аффиксов, и «карабин» с первого этажа больше не равен «карабину» с
сорокового. Четыре редкости, десять тегов, тир и бюджет от глубины.
Аффиксы не заводят новых каналов влияния: каждый тег ложится в то, что уже
есть — урон оружия, смесь стихий, пробитие, четыре числа бойца, ресурсы
вылазки. У предмета по-прежнему нет ручки к правилу «не бить своих», и
появиться ей неоткуда.
ItemInstance неявно приводится к ItemId, поэтому полторы сотни мест,
которым нужен ВИД вещи, остались как были. Цена решения — присваивание в
ItemId молча теряет рулоны; таких мест три (подбор, схрон, запись
профиля), и все они работают с экземпляром целиком.
Замеры поймали три расхождения дизайн-документа с самим собой:
* формула редкости противоречила таблице рядом с ней: 2.7% находок с
аффиксами на первом этаже против 22%. Выбрана формула, наклон поднят
до схождения с таблицей на дне (12% обычных на сотом);
* бюджет пускал восемь высших аффиксов вместо обещанных шести;
* предельная вещь собиралась к семидесятому этажу вместо сотого.
Числа пересчитаны, документ исправлен: 6·cost(9) = 294 <= B(100) = 295 <
7·cost(9) = 343. Предельная вещь существует ровно на дне и ровно одна.
Проверка в --descend меряет не бросок, а ПРОВОДКУ до бойца — там, где
дважды умирали вес и стихии:
аффиксы: урон 12.0 -> 18.0, здоровье 100 -> 140, броня 0.10 -> 0.25,
пробитие 0.20, KIN 1.00 -> 0.60, CRY 0.40, сумма долей 1.000
Последнее число не украшение: конверсия обязана переводить урон, а не
добавлять седьмую долю сверх единицы.
Попутно, на глубине 30 и только там:
* «зачистка поля» в проверках не держалась — у твари есть откат
воскрешения, и с нулевым таймером она оживала тем же шагом. Лечение
вне схватки и расход света на стоянке молча мерили бой. На восьмом
этаже тварей мало, и проверка проходила по удаче;
* порог «стоянка бесплатна» стоял в единицах заряда, а тот же шаг стоит
дороже с глубиной. Переведён в тайлы — и сразу показал, что отряд в
строю проходит 0.8 тайла за две секунды «стоянки». Свет теперь
списывается только в ADVANCING: топтание и драка бесплатны, тратит
РАЗВЕДКА. Без этого таймер возвращался через чёрный ход.
Формат профиля 4: токен предмета вида rifle@relic+dmg7,0:0.63. Миграции
не требует — у старых токенов нет хвоста после '@'.
--accept PASS без изменений: в песочнице находок нет вовсе.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-16 06:35:00 +07:00
|
|
|
|
P(не обычное) = 0.02 + 0.011·d (до 0.88)
|
Документация: границы движка, работа через модель, дизайн игры до лейтгейма
18-engine.md границы Tile2D, проекции 2D, формат проекта, второй проект
19-agent.md инструменты --tool, скиллы, терминал в редакторе
20-gdd.md акты, петли, рост отряда, закон масштаба, бюджет 200 часов
21-damage.md семь стихий, статусы, десять реакций, формулы, триггеры
22-loot.md редкости, аффиксы, артефакты, зачарования, материалы
23-endgame.md Бездна, мутации, лидерборды, 262 ачивки
Плюс правки 01/02/07/15/16/17 под переехавшие пути и новые правила забега.
Дизайнерская часть держится на одном законе: угроза растёт квадратично, сила
отряда — линейно с затуханием, разрыв закрывается ЗНАНИЕМ, а не числами. Из
него выведены и экономика опыта (41 млн против 44 млн дохода), и то, почему
реакции считаются от глубины, а не от урона оружия, и почему в Бездне
множитель HP разрешён, а во всём авторском контенте запрещён.
.claude/commands: скиллы /tile2d, /room, /floor — правила этого движка,
которые нельзя вывести из кода. Главное записано первым: не отчитываться об
успехе без прохода --tool validate.
Числа в этих документах — вход для инструментов, а не украшение. Расхождение
между таблицей и выводом инструмента означает, что неправ документ.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 01:07:45 +07:00
|
|
|
|
```
|
|
|
|
|
|
|
Редкости и аффиксы: находка стала решением (M25)
Предмет перестал быть строкой каталога. ItemInstance несёт редкость и до
шести аффиксов, и «карабин» с первого этажа больше не равен «карабину» с
сорокового. Четыре редкости, десять тегов, тир и бюджет от глубины.
Аффиксы не заводят новых каналов влияния: каждый тег ложится в то, что уже
есть — урон оружия, смесь стихий, пробитие, четыре числа бойца, ресурсы
вылазки. У предмета по-прежнему нет ручки к правилу «не бить своих», и
появиться ей неоткуда.
ItemInstance неявно приводится к ItemId, поэтому полторы сотни мест,
которым нужен ВИД вещи, остались как были. Цена решения — присваивание в
ItemId молча теряет рулоны; таких мест три (подбор, схрон, запись
профиля), и все они работают с экземпляром целиком.
Замеры поймали три расхождения дизайн-документа с самим собой:
* формула редкости противоречила таблице рядом с ней: 2.7% находок с
аффиксами на первом этаже против 22%. Выбрана формула, наклон поднят
до схождения с таблицей на дне (12% обычных на сотом);
* бюджет пускал восемь высших аффиксов вместо обещанных шести;
* предельная вещь собиралась к семидесятому этажу вместо сотого.
Числа пересчитаны, документ исправлен: 6·cost(9) = 294 <= B(100) = 295 <
7·cost(9) = 343. Предельная вещь существует ровно на дне и ровно одна.
Проверка в --descend меряет не бросок, а ПРОВОДКУ до бойца — там, где
дважды умирали вес и стихии:
аффиксы: урон 12.0 -> 18.0, здоровье 100 -> 140, броня 0.10 -> 0.25,
пробитие 0.20, KIN 1.00 -> 0.60, CRY 0.40, сумма долей 1.000
Последнее число не украшение: конверсия обязана переводить урон, а не
добавлять седьмую долю сверх единицы.
Попутно, на глубине 30 и только там:
* «зачистка поля» в проверках не держалась — у твари есть откат
воскрешения, и с нулевым таймером она оживала тем же шагом. Лечение
вне схватки и расход света на стоянке молча мерили бой. На восьмом
этаже тварей мало, и проверка проходила по удаче;
* порог «стоянка бесплатна» стоял в единицах заряда, а тот же шаг стоит
дороже с глубиной. Переведён в тайлы — и сразу показал, что отряд в
строю проходит 0.8 тайла за две секунды «стоянки». Свет теперь
списывается только в ADVANCING: топтание и драка бесплатны, тратит
РАЗВЕДКА. Без этого таймер возвращался через чёрный ход.
Формат профиля 4: токен предмета вида rifle@relic+dmg7,0:0.63. Миграции
не требует — у старых токенов нет хвоста после '@'.
--accept PASS без изменений: в песочнице находок нет вовсе.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-16 06:35:00 +07:00
|
|
|
|
**Наклон 0.011, а не 0.0075.** В первой редакции этого документа формула и
|
|
|
|
|
|
таблица рядом с ней противоречили друг другу: формула давала на первом этаже
|
|
|
|
|
|
2.7% находок с аффиксами, таблица — 22%. Выбрана формула (первый этаж обязан
|
|
|
|
|
|
быть скучным, [20-gdd.md](20-gdd.md) §1), а наклон поднят так, чтобы сойтись с
|
|
|
|
|
|
таблицей на дне: 12% обычных на сотом этаже. Проверяется инструментом.
|
|
|
|
|
|
|
|
|
|
|
|
Реликт на первом этаже возможен — примерно один на восемь тысяч находок. Это
|
|
|
|
|
|
намеренно не запрещено: тир там всё равно первый, то есть пять рулонов по пять
|
|
|
|
|
|
процентов. Лотерейный выигрыш, а не сломанное начало.
|
|
|
|
|
|
|
|
|
|
|
|
**Артефактов пока нет** — они не «ещё не выкачены», а следующая веха: артефакт
|
|
|
|
|
|
даёт ПРАВИЛО, а не число, и для этого нужны триггеры (on-hit, on-kill), которых
|
|
|
|
|
|
в игре ещё нет.
|
|
|
|
|
|
|
Документация: границы движка, работа через модель, дизайн игры до лейтгейма
18-engine.md границы Tile2D, проекции 2D, формат проекта, второй проект
19-agent.md инструменты --tool, скиллы, терминал в редакторе
20-gdd.md акты, петли, рост отряда, закон масштаба, бюджет 200 часов
21-damage.md семь стихий, статусы, десять реакций, формулы, триггеры
22-loot.md редкости, аффиксы, артефакты, зачарования, материалы
23-endgame.md Бездна, мутации, лидерборды, 262 ачивки
Плюс правки 01/02/07/15/16/17 под переехавшие пути и новые правила забега.
Дизайнерская часть держится на одном законе: угроза растёт квадратично, сила
отряда — линейно с затуханием, разрыв закрывается ЗНАНИЕМ, а не числами. Из
него выведены и экономика опыта (41 млн против 44 млн дохода), и то, почему
реакции считаются от глубины, а не от урона оружия, и почему в Бездне
множитель HP разрешён, а во всём авторском контенте запрещён.
.claude/commands: скиллы /tile2d, /room, /floor — правила этого движка,
которые нельзя вывести из кода. Главное записано первым: не отчитываться об
успехе без прохода --tool validate.
Числа в этих документах — вход для инструментов, а не украшение. Расхождение
между таблицей и выводом инструмента означает, что неправ документ.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 01:07:45 +07:00
|
|
|
|
**Пити на артефакт:** 60 этажей без артефакта → следующий гарантирован. Без
|
|
|
|
|
|
пити распределение даёт игроку без артефакта на восьмидесятом этаже, и это не
|
|
|
|
|
|
«не повезло», а сломанная сессия на двадцать часов.
|
|
|
|
|
|
|
|
|
|
|
|
## 2. Слоты и что в них лежит
|
|
|
|
|
|
|
|
|
|
|
|
| Слот | Что | Личное/общее |
|
|
|
|
|
|
|---|---|---|
|
|
|
|
|
|
| Руки | ствол или клинок | личное |
|
|
|
|
|
|
| Броня | костюм | личное |
|
|
|
|
|
|
| Карман | оберег/фонарь/модуль | личное |
|
|
|
|
|
|
| Сумка | всё остальное | **общее на отряд** |
|
|
|
|
|
|
| Гнёзда артефактов | 1 → 3 по глубине рекорда | общее на отряд |
|
|
|
|
|
|
|
|
|
|
|
|
Гнёзда артефактов открываются рекордом: первое сразу, второе на D40, третье на
|
|
|
|
|
|
D75. Артефакты общие намеренно — они правила, а не снаряжение, и делить их по
|
|
|
|
|
|
бойцам значило бы прятать главное решение сборки в подменю.
|
|
|
|
|
|
|
|
|
|
|
|
## 3. Аффиксы
|
|
|
|
|
|
|
|
|
|
|
|
Аффикс = `тег + тир + рулон`. Тег определяет, ЧТО он даёт; тир — насколько
|
|
|
|
|
|
сильный доступен; рулон — конкретное число в диапазоне тира.
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
доступный тир на глубине: T_max(d) = 1 + floor(d / 12) (до 9)
|
|
|
|
|
|
диапазон тира T: [lo·T^1.35, hi·T^1.35]
|
Редкости и аффиксы: находка стала решением (M25)
Предмет перестал быть строкой каталога. ItemInstance несёт редкость и до
шести аффиксов, и «карабин» с первого этажа больше не равен «карабину» с
сорокового. Четыре редкости, десять тегов, тир и бюджет от глубины.
Аффиксы не заводят новых каналов влияния: каждый тег ложится в то, что уже
есть — урон оружия, смесь стихий, пробитие, четыре числа бойца, ресурсы
вылазки. У предмета по-прежнему нет ручки к правилу «не бить своих», и
появиться ей неоткуда.
ItemInstance неявно приводится к ItemId, поэтому полторы сотни мест,
которым нужен ВИД вещи, остались как были. Цена решения — присваивание в
ItemId молча теряет рулоны; таких мест три (подбор, схрон, запись
профиля), и все они работают с экземпляром целиком.
Замеры поймали три расхождения дизайн-документа с самим собой:
* формула редкости противоречила таблице рядом с ней: 2.7% находок с
аффиксами на первом этаже против 22%. Выбрана формула, наклон поднят
до схождения с таблицей на дне (12% обычных на сотом);
* бюджет пускал восемь высших аффиксов вместо обещанных шести;
* предельная вещь собиралась к семидесятому этажу вместо сотого.
Числа пересчитаны, документ исправлен: 6·cost(9) = 294 <= B(100) = 295 <
7·cost(9) = 343. Предельная вещь существует ровно на дне и ровно одна.
Проверка в --descend меряет не бросок, а ПРОВОДКУ до бойца — там, где
дважды умирали вес и стихии:
аффиксы: урон 12.0 -> 18.0, здоровье 100 -> 140, броня 0.10 -> 0.25,
пробитие 0.20, KIN 1.00 -> 0.60, CRY 0.40, сумма долей 1.000
Последнее число не украшение: конверсия обязана переводить урон, а не
добавлять седьмую долю сверх единицы.
Попутно, на глубине 30 и только там:
* «зачистка поля» в проверках не держалась — у твари есть откат
воскрешения, и с нулевым таймером она оживала тем же шагом. Лечение
вне схватки и расход света на стоянке молча мерили бой. На восьмом
этаже тварей мало, и проверка проходила по удаче;
* порог «стоянка бесплатна» стоял в единицах заряда, а тот же шаг стоит
дороже с глубиной. Переведён в тайлы — и сразу показал, что отряд в
строю проходит 0.8 тайла за две секунды «стоянки». Свет теперь
списывается только в ADVANCING: топтание и драка бесплатны, тратит
РАЗВЕДКА. Без этого таймер возвращался через чёрный ход.
Формат профиля 4: токен предмета вида rifle@relic+dmg7,0:0.63. Миграции
не требует — у старых токенов нет хвоста после '@'.
--accept PASS без изменений: в песочнице находок нет вовсе.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-16 06:35:00 +07:00
|
|
|
|
цена аффикса в бюджете: cost(T) = 4 + 5·T
|
|
|
|
|
|
бюджет предмета: B(ilvl) = 45 + 2.5·ilvl
|
Документация: границы движка, работа через модель, дизайн игры до лейтгейма
18-engine.md границы Tile2D, проекции 2D, формат проекта, второй проект
19-agent.md инструменты --tool, скиллы, терминал в редакторе
20-gdd.md акты, петли, рост отряда, закон масштаба, бюджет 200 часов
21-damage.md семь стихий, статусы, десять реакций, формулы, триггеры
22-loot.md редкости, аффиксы, артефакты, зачарования, материалы
23-endgame.md Бездна, мутации, лидерборды, 262 ачивки
Плюс правки 01/02/07/15/16/17 под переехавшие пути и новые правила забега.
Дизайнерская часть держится на одном законе: угроза растёт квадратично, сила
отряда — линейно с затуханием, разрыв закрывается ЗНАНИЕМ, а не числами. Из
него выведены и экономика опыта (41 млн против 44 млн дохода), и то, почему
реакции считаются от глубины, а не от урона оружия, и почему в Бездне
множитель HP разрешён, а во всём авторском контенте запрещён.
.claude/commands: скиллы /tile2d, /room, /floor — правила этого движка,
которые нельзя вывести из кода. Главное записано первым: не отчитываться об
успехе без прохода --tool validate.
Числа в этих документах — вход для инструментов, а не украшение. Расхождение
между таблицей и выводом инструмента означает, что неправ документ.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 01:07:45 +07:00
|
|
|
|
```
|
|
|
|
|
|
|
Редкости и аффиксы: находка стала решением (M25)
Предмет перестал быть строкой каталога. ItemInstance несёт редкость и до
шести аффиксов, и «карабин» с первого этажа больше не равен «карабину» с
сорокового. Четыре редкости, десять тегов, тир и бюджет от глубины.
Аффиксы не заводят новых каналов влияния: каждый тег ложится в то, что уже
есть — урон оружия, смесь стихий, пробитие, четыре числа бойца, ресурсы
вылазки. У предмета по-прежнему нет ручки к правилу «не бить своих», и
появиться ей неоткуда.
ItemInstance неявно приводится к ItemId, поэтому полторы сотни мест,
которым нужен ВИД вещи, остались как были. Цена решения — присваивание в
ItemId молча теряет рулоны; таких мест три (подбор, схрон, запись
профиля), и все они работают с экземпляром целиком.
Замеры поймали три расхождения дизайн-документа с самим собой:
* формула редкости противоречила таблице рядом с ней: 2.7% находок с
аффиксами на первом этаже против 22%. Выбрана формула, наклон поднят
до схождения с таблицей на дне (12% обычных на сотом);
* бюджет пускал восемь высших аффиксов вместо обещанных шести;
* предельная вещь собиралась к семидесятому этажу вместо сотого.
Числа пересчитаны, документ исправлен: 6·cost(9) = 294 <= B(100) = 295 <
7·cost(9) = 343. Предельная вещь существует ровно на дне и ровно одна.
Проверка в --descend меряет не бросок, а ПРОВОДКУ до бойца — там, где
дважды умирали вес и стихии:
аффиксы: урон 12.0 -> 18.0, здоровье 100 -> 140, броня 0.10 -> 0.25,
пробитие 0.20, KIN 1.00 -> 0.60, CRY 0.40, сумма долей 1.000
Последнее число не украшение: конверсия обязана переводить урон, а не
добавлять седьмую долю сверх единицы.
Попутно, на глубине 30 и только там:
* «зачистка поля» в проверках не держалась — у твари есть откат
воскрешения, и с нулевым таймером она оживала тем же шагом. Лечение
вне схватки и расход света на стоянке молча мерили бой. На восьмом
этаже тварей мало, и проверка проходила по удаче;
* порог «стоянка бесплатна» стоял в единицах заряда, а тот же шаг стоит
дороже с глубиной. Переведён в тайлы — и сразу показал, что отряд в
строю проходит 0.8 тайла за две секунды «стоянки». Свет теперь
списывается только в ADVANCING: топтание и драка бесплатны, тратит
РАЗВЕДКА. Без этого таймер возвращался через чёрный ход.
Формат профиля 4: токен предмета вида rifle@relic+dmg7,0:0.63. Миграции
не требует — у старых токенов нет хвоста после '@'.
--accept PASS без изменений: в песочнице находок нет вовсе.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-16 06:35:00 +07:00
|
|
|
|
Из этого следует потолок: на предмете с ilvl 100 бюджет 295, шесть аффиксов
|
|
|
|
|
|
девятого тира стоят 294, седьмой — уже 343. То есть предельная вещь существует
|
|
|
|
|
|
ровно на дне и ровно одна.
|
|
|
|
|
|
|
|
|
|
|
|
**Цифры пересчитаны против первой редакции.** Там стояло `cost = 6 + 4·T` при
|
|
|
|
|
|
`B = 40 + 3·ilvl` и утверждалось то же самое — «шесть и ни одним больше». На
|
|
|
|
|
|
деле влезало восемь (340 / 42 = 8.1), а предельная вещь собиралась уже к
|
|
|
|
|
|
семидесятому этажу. Обещание документа не выполнялось его же арифметикой; это
|
|
|
|
|
|
нашёл `--tool affix`, а не чтение.
|
|
|
|
|
|
|
|
|
|
|
|
Выше по глубине потолок держит бюджет, ниже — счётчик аффиксов: на сороковом
|
|
|
|
|
|
этаже доступен только четвёртый тир, шесть таких стоят 144 при бюджете 145.
|
|
|
|
|
|
Это нормально и не является поломкой: редкость там и обещает не больше шести.
|
Документация: границы движка, работа через модель, дизайн игры до лейтгейма
18-engine.md границы Tile2D, проекции 2D, формат проекта, второй проект
19-agent.md инструменты --tool, скиллы, терминал в редакторе
20-gdd.md акты, петли, рост отряда, закон масштаба, бюджет 200 часов
21-damage.md семь стихий, статусы, десять реакций, формулы, триггеры
22-loot.md редкости, аффиксы, артефакты, зачарования, материалы
23-endgame.md Бездна, мутации, лидерборды, 262 ачивки
Плюс правки 01/02/07/15/16/17 под переехавшие пути и новые правила забега.
Дизайнерская часть держится на одном законе: угроза растёт квадратично, сила
отряда — линейно с затуханием, разрыв закрывается ЗНАНИЕМ, а не числами. Из
него выведены и экономика опыта (41 млн против 44 млн дохода), и то, почему
реакции считаются от глубины, а не от урона оружия, и почему в Бездне
множитель HP разрешён, а во всём авторском контенте запрещён.
.claude/commands: скиллы /tile2d, /room, /floor — правила этого движка,
которые нельзя вывести из кода. Главное записано первым: не отчитываться об
успехе без прохода --tool validate.
Числа в этих документах — вход для инструментов, а не украшение. Расхождение
между таблицей и выводом инструмента означает, что неправ документ.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 01:07:45 +07:00
|
|
|
|
|
|
|
|
|
|
### 3.1. Группы аффиксов
|
|
|
|
|
|
|
|
|
|
|
|
| Группа | Примеры | На чём |
|
|
|
|
|
|
|---|---|---|
|
|
|
|
|
|
| Урон | +% урона, +% стихии, +крит, +критмножитель | оружие |
|
|
|
|
|
|
| Пробитие | +PEN стихии, −сопротивление цели | оружие, карман |
|
|
|
|
|
|
| Стихия | конверсия X% урона в стихию | оружие |
|
|
|
|
|
|
| Статус | +стаки, +длительность, +шанс наложения | оружие, карман |
|
|
|
|
|
|
| Реакция | +% силы реакций, −ICD реакции | карман, артефакт |
|
|
|
|
|
|
| Защита | +HP, +броня, +сопротивление, +уклонение | броня |
|
|
|
|
|
|
| Снабжение | +патроны, −вес, +ёмкость, +заряд фонаря | броня, сумка |
|
|
|
|
|
|
| Триггер | on-hit / on-kill / on-hurt эффекты | любое, дорого |
|
|
|
|
|
|
|
|
|
|
|
|
**Правило одной группы.** На предмете не может быть двух аффиксов одной группы
|
|
|
|
|
|
с одинаковым тегом. Иначе «+урон» шесть раз становится единственной правильной
|
|
|
|
|
|
сборкой, и весь остальной список превращается в мусор.
|
|
|
|
|
|
|
|
|
|
|
|
### 3.2. Конверсия стихий
|
|
|
|
|
|
|
|
|
|
|
|
Конверсия — самый важный аффикс в игре, потому что он превращает оружие в
|
|
|
|
|
|
инструмент против конкретного врага:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
share(KIN) = 1 − Σ конверсий, Σ конверсий ≤ 0.85
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Полностью убрать кинетику нельзя: оружие без физического урона перестало бы
|
|
|
|
|
|
работать по целям, у которых нет сопротивлений вовсе.
|
|
|
|
|
|
|
|
|
|
|
|
## 4. Артефакты
|
|
|
|
|
|
|
|
|
|
|
|
Артефакт не даёт процентов. Он даёт **правило**, которое меняет то, как отряд
|
|
|
|
|
|
играет. Их около 60 к моменту выхода акта VI; ниже — восемь, задающих диапазон.
|
|
|
|
|
|
|
|
|
|
|
|
| Артефакт | Правило | Цена правила |
|
|
|
|
|
|
|---|---|---|
|
|
|
|
|
|
| **Стеклянный кулак** | +140% урона | −60% макс. HP всему отряду |
|
|
|
|
|
|
| **Двойное сердце** | реакции срабатывают дважды | −35% силы реакции |
|
|
|
|
|
|
| **Пепельный ход** | убийство даёт +12% скорости, стак 8 | вне боя стаки сгорают за 2 с |
|
|
|
|
|
|
| **Долг** | павший оперативник встаёт через 20 с | каждое воскрешение −5 макс. HP навсегда |
|
|
|
|
|
|
| **Счётчик Гейгера** | RAD не тратит стаки на реакции | весь отряд получает 3 RAD/сек на этаже |
|
|
|
|
|
|
| **Тихий шаг** | твари замечают на 45% ближе | фонарь садится вдвое быстрее |
|
|
|
|
|
|
| **Заём** | +1 гнездо артефакта | −25% опыта за вылазку |
|
|
|
|
|
|
| **Пустая рука** | оперативник без брони: +90% урона и +50% скорости | без брони |
|
|
|
|
|
|
|
|
|
|
|
|
Каждый артефакт — **сделка**, и ни один не является чистым улучшением. Артефакт
|
|
|
|
|
|
без цены превращается в обязательный предмет: его надевают все и всегда, и одно
|
|
|
|
|
|
гнездо сборки выпадает из игры навсегда.
|
|
|
|
|
|
|
|
|
|
|
|
## 5. Материалы и зачарование
|
|
|
|
|
|
|
|
|
|
|
|
### 5.1. Материалы
|
|
|
|
|
|
|
|
|
|
|
|
| Материал | Откуда | Куда |
|
|
|
|
|
|
|---|---|---|
|
|
|
|
|
|
| Лом | разбитая обстановка, D1+ | базовый крафт, ремонт |
|
|
|
|
|
|
| Био-ядро | твари FLESH, D21+ | статусные аффиксы |
|
|
|
|
|
|
| Крио-ядро | твари FROST, D36+ | защитные аффиксы |
|
|
|
|
|
|
| Осколок реактора | аномалии, D53+ | стихийные и реакционные |
|
|
|
|
|
|
| Пустотный шлак | Бездна, D73+ | залом, перековка тира |
|
|
|
|
|
|
|
|
|
|
|
|
Материал добывается только в своей полосе — это и есть причина возвращаться на
|
|
|
|
|
|
средние глубины после того, как рекорд ушёл вниз. Без этого весь контент, кроме
|
|
|
|
|
|
последнего акта, умирает.
|
|
|
|
|
|
|
|
|
|
|
|
### 5.2. Операции
|
|
|
|
|
|
|
|
|
|
|
|
| Операция | Что делает | Цена | Риск |
|
|
|
|
|
|
|---|---|---|---|
|
|
|
|
|
|
| Перековка | заново бросает ВСЕ рулоны | 4 лома × тир | — |
|
|
|
|
|
|
| Прививка | добавляет аффикс, если есть бюджет | 2 ядра × тир | — |
|
|
|
|
|
|
| Отсечение | убирает выбранный аффикс | 1 ядро × тир | — |
|
|
|
|
|
|
| Возвышение | +1 тир случайному аффиксу | 6 ядер + осколок | — |
|
|
|
|
|
|
| **Залом** | +2 тира и −1 бюджет ко всему | 3 шлака | **12%: предмет рассыпается** |
|
|
|
|
|
|
|
|
|
|
|
|
Залом — единственная операция с риском, и он настоящий: предмет исчезает.
|
|
|
|
|
|
Именно поэтому лучшая вещь в игре всегда чуть хуже, чем могла бы быть, — почти
|
|
|
|
|
|
никто не заламывает то, что собирал двадцать часов. Это и задумано: разрыв между
|
|
|
|
|
|
«хорошей сборкой» и «идеальной» держит лейтгейм живым.
|
|
|
|
|
|
|
|
|
|
|
|
### 5.3. Стоимость полной сборки
|
|
|
|
|
|
|
|
|
|
|
|
Одна вещь тира 9 со всеми операциями ≈ 340 ломов, 90 ядер, 22 осколка, 6 шлаков.
|
|
|
|
|
|
За вылазку на D80 добывается ≈ 40 ломов, 12 ядер, 4 осколка, 1 шлак — то есть
|
|
|
|
|
|
**около 8 вылазок на один предмет**. Слотов девять, предметов в сборке — пять
|
|
|
|
|
|
ключевых. Экономика материалов рассчитана на 60–80 часов лейтгейма, и это ровно
|
|
|
|
|
|
акт VI из бюджета времени ([20-gdd.md](20-gdd.md) §5).
|
|
|
|
|
|
|
|
|
|
|
|
## 6. Как это не превращается в кашу
|
|
|
|
|
|
|
|
|
|
|
|
Три правила, которые придётся защищать от самих себя при любом расширении:
|
|
|
|
|
|
|
|
|
|
|
|
1. **Ни одного чистого улучшения.** Каждый артефакт — сделка, каждый высокий
|
|
|
|
|
|
тир — вес или риск. Предмет без цены обязателен, а обязательный предмет — это
|
|
|
|
|
|
вырезанный слот.
|
|
|
|
|
|
2. **Бюджет вместо запретов.** Ограничивает арифметика, а не список исключений.
|
|
|
|
|
|
Список исключений разрастается и однажды противоречит сам себе.
|
|
|
|
|
|
3. **Находка — решение.** Если новая вещь не заставляет игрока хоть раз
|
|
|
|
|
|
задуматься «а что снять», её не должно быть в таблице дропа вообще.
|
|
|
|
|
|
|
|
|
|
|
|
## 7. Проверки
|
|
|
|
|
|
|
Редкости и аффиксы: находка стала решением (M25)
Предмет перестал быть строкой каталога. ItemInstance несёт редкость и до
шести аффиксов, и «карабин» с первого этажа больше не равен «карабину» с
сорокового. Четыре редкости, десять тегов, тир и бюджет от глубины.
Аффиксы не заводят новых каналов влияния: каждый тег ложится в то, что уже
есть — урон оружия, смесь стихий, пробитие, четыре числа бойца, ресурсы
вылазки. У предмета по-прежнему нет ручки к правилу «не бить своих», и
появиться ей неоткуда.
ItemInstance неявно приводится к ItemId, поэтому полторы сотни мест,
которым нужен ВИД вещи, остались как были. Цена решения — присваивание в
ItemId молча теряет рулоны; таких мест три (подбор, схрон, запись
профиля), и все они работают с экземпляром целиком.
Замеры поймали три расхождения дизайн-документа с самим собой:
* формула редкости противоречила таблице рядом с ней: 2.7% находок с
аффиксами на первом этаже против 22%. Выбрана формула, наклон поднят
до схождения с таблицей на дне (12% обычных на сотом);
* бюджет пускал восемь высших аффиксов вместо обещанных шести;
* предельная вещь собиралась к семидесятому этажу вместо сотого.
Числа пересчитаны, документ исправлен: 6·cost(9) = 294 <= B(100) = 295 <
7·cost(9) = 343. Предельная вещь существует ровно на дне и ровно одна.
Проверка в --descend меряет не бросок, а ПРОВОДКУ до бойца — там, где
дважды умирали вес и стихии:
аффиксы: урон 12.0 -> 18.0, здоровье 100 -> 140, броня 0.10 -> 0.25,
пробитие 0.20, KIN 1.00 -> 0.60, CRY 0.40, сумма долей 1.000
Последнее число не украшение: конверсия обязана переводить урон, а не
добавлять седьмую долю сверх единицы.
Попутно, на глубине 30 и только там:
* «зачистка поля» в проверках не держалась — у твари есть откат
воскрешения, и с нулевым таймером она оживала тем же шагом. Лечение
вне схватки и расход света на стоянке молча мерили бой. На восьмом
этаже тварей мало, и проверка проходила по удаче;
* порог «стоянка бесплатна» стоял в единицах заряда, а тот же шаг стоит
дороже с глубиной. Переведён в тайлы — и сразу показал, что отряд в
строю проходит 0.8 тайла за две секунды «стоянки». Свет теперь
списывается только в ADVANCING: топтание и драка бесплатны, тратит
РАЗВЕДКА. Без этого таймер возвращался через чёрный ход.
Формат профиля 4: токен предмета вида rifle@relic+dmg7,0:0.63. Миграции
не требует — у старых токенов нет хвоста после '@'.
--accept PASS без изменений: в песочнице находок нет вовсе.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-16 06:35:00 +07:00
|
|
|
|
| Утверждение | Инструмент | Статус |
|
|
|
|
|
|
|---|---|---|
|
|
|
|
|
|
| кривая редкости: первый этаж скучный, сотый щедрый | `--tool drops 1 100` | есть |
|
|
|
|
|
|
| бюджет пускает ровно шесть высших аффиксов и только на дне | `--tool affix <глубина>` | есть |
|
|
|
|
|
|
| выкатанное доезжает до бойца и до правил урона | `--descend` | есть |
|
|
|
|
|
|
| редкость и рулоны переживают запись профиля | `--descend`, круговой прогон | есть |
|
|
|
|
|
|
| материалов хватает на сборку за ~8 вылазок | `--tool economy` | материалов ещё нет |
|
|
|
|
|
|
| ни один артефакт не является чистым плюсом | ревью-чеклист | артефактов ещё нет |
|
|
|
|
|
|
| TTK не выходит из коридора с лучшими вещами | `--tool ttk --best` | нет |
|
|
|
|
|
|
|
|
|
|
|
|
Проверка «доезжает до бойца» — главная. Механика, которая есть в каталоге, но не
|
|
|
|
|
|
доходит до правил боя, выглядит снаружи как работающая, и на этом уже дважды
|
|
|
|
|
|
попадались вес и стихии ([07-milestones.md](07-milestones.md)). Поэтому в
|
|
|
|
|
|
`--descend` подкладывается карабин с известными рулонами и сверяется всё:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
аффиксы: урон 12.0 -> 18.0, здоровье 100 -> 140, броня 0.10 -> 0.25, пробитие 0.20
|
|
|
|
|
|
стихии карабина: KIN 1.00 -> 0.60, CRY 0.40, сумма долей 1.000
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Последнее число тут не украшение: конверсия обязана ПЕРЕВОДИТЬ урон, а не
|
|
|
|
|
|
добавлять седьмую долю сверх единицы. Иначе стихии стали бы каналом наращивания
|
|
|
|
|
|
чисел — ровно тем, чем они не должны быть ([21-damage.md](21-damage.md)).
|