TUNE-2: параметры стражей в CFG-файл (формат секций как у SDLPoP)
This commit is contained in:
@@ -230,8 +230,9 @@ fore-слоя, и клип (`clip_char`), и брызги; полоса HP и л
|
||||
| # | Задача | Что | Блокирует |
|
||||
|---|--------|-----|-----------|
|
||||
| — | [DRAW-COST](#draw-cost) | **кадр уложился в бюджет 2026-08-09**: 470 964 -> 425 600 тактов, период цикла 4 растровых кадра -> **3**. Дальнейшее — запас, не срочность | плавность на ВСЕХ уровнях |
|
||||
| — | [L1-SPEED](#l1-speed) | игра на ~39 % быстрее оригинала | ощущение от ВСЕХ уровней; берётся в любой момент |
|
||||
| ✔ | [L1-SPEED](#l1-speed) | **закрыта 2026-08-19** режимами скорости (NORMAL = 4/5 растров, как оригинал) | — |
|
||||
| — | [TUNE-1](#tune-1) | параметры движка → cfg-файл (сейчас `pop_tune.h`) | отладка таймингов и моды; берётся по мере надобности |
|
||||
| — | [TUNE-2](#tune-2) | параметры СТРАЖЕЙ (6 таблиц по 12 градаций мастерства + HP) → cfg-файл | подбор сложности боя без пересборки |
|
||||
| — | [MEM](#mem-next) | следующий шаг разгрузки W1/W2 | берётся по факту нехватки места |
|
||||
|
||||
Сделанное — в [`TASKS_CLOSED.md`](TASKS_CLOSED.md): L4-MIRROR, L3-CHOMP,
|
||||
@@ -1168,6 +1169,49 @@ HP/минуты, номера «особых» комнат и уровней (
|
||||
**Оговорка по памяти.** Парсер и таблица параметров — холодный код,
|
||||
исполняется один раз при старте: кандидат в банк, а не в резидент W1.
|
||||
|
||||
### <a id="tune-2"></a>TUNE-2. Параметры СТРАЖЕЙ — в CFG-файл
|
||||
|
||||
Частный, но самый востребованный срез [TUNE-1](#tune-1): сейчас весь ИИ
|
||||
стража зашит константами, и чтобы попробовать «а если он будет блокировать
|
||||
пореже» — надо пересобирать.
|
||||
|
||||
**Что настраивать.** Всё, что индексируется мастерством (12 градаций,
|
||||
`NUM_GUARD_SKILLS`), — таблицы в `guards.c`:
|
||||
|
||||
| таблица | что решает | дефолт для навыка 4 |
|
||||
|---|---|---:|
|
||||
| `STRIKEPROB` | вероятность удара | 61 |
|
||||
| `RESTRIKEPROB` | добить из своего парирования | 5 |
|
||||
| `BLOCKPROB` | заблокировать замах | 200 |
|
||||
| `IMPBLOCKPROB` | то же, когда Кид только что пробил блок | 100 |
|
||||
| `ADVPROB` | наступать | 255 |
|
||||
| `REFRACTIMER` | «отдышка» после ранения, кадров | 8 |
|
||||
| `extrastrength` | надбавка HP (сейчас зашита как `skill == 4 ? 1 : 0`, `pop_guard_cold.c`) | 1 |
|
||||
|
||||
Плюс не зависящее от навыка: `tbl_guard_hp[16]` (`pop_level_cold.c`) — база
|
||||
HP по уровню, и навык скелета (`SKEL_SKILL`) / тени (`SHADOW_SKILL`).
|
||||
|
||||
**Формат — как у SDLPoP**, чтобы правки переносились в обе стороны без
|
||||
перевода: секции `[Skill 0]`..`[Skill 11]`, внутри `strikeprob=`,
|
||||
`blockprob=` и т.д. (`options.c:439`, пример — `SDLPoP/SDLPoP.ini:562`).
|
||||
Имена ключей брать ЕГО, регистр игнорировать.
|
||||
|
||||
**Чего НЕ делать.** Навык конкретного стража живёт в данных уровня
|
||||
(`level.guards_skill[комната-1]`, читаем в `pop_level_guard`) — его в CFG
|
||||
не тащим, иначе разъедется с файлами уровней. Переопределение «в комнате
|
||||
N навык M» — отдельная надобность, если понадобится, то как явная секция
|
||||
`[Level N]`, а не подмена данных.
|
||||
|
||||
**Зачем это стоит сделать.** Прогон 2026-08-20 (11/22, навык 4) дал
|
||||
ощущение «страж тяжелее, чем в SDLPoP». Сверка кода расхождений не нашла
|
||||
(протокол — в `../docs/impl_diff.md` и в ответе сессии: дистанция,
|
||||
диспетчер, три ветки ИИ, шесть таблиц, `justblocked`, `check_hurting`,
|
||||
`parry`, `swordfight`, порядок тиков, откат seq_74 = −10 — всё совпало
|
||||
побайтно). Проверить такую гипотезу можно только подбором чисел на живом
|
||||
прогоне, а для этого их надо крутить без пересборки.
|
||||
|
||||
**Оговорка по памяти** — та же, что в TUNE-1: парсер холодный, в банк.
|
||||
|
||||
### <a id="mem-next"></a>MEM. Следующий шаг разгрузки W1/W2
|
||||
|
||||
`pop_ctrl.c` уехал в банк 5 ([MEM-BANK5](TASKS_CLOSED.md#mem-bank5), куча
|
||||
|
||||
Reference in New Issue
Block a user