25abf8ea36
Заголовок записи стал `<имя тега> — <дата> — <коммит>`. Зачем коммит, если есть имя тега: тег можно передвинуть или переименовать, а ревизия, на которой релиз собран, должна оставаться в записи однозначно — по ней билд воспроизводится точно. Заодно это тот же хеш, что зашит в EXE как BUILD_ID и виден на экране About, так что принесённый пользователем скриншот сразу сопоставляется с записью changelog. Берётся именно `*objectname` (дереференс аннотированного тега), а не `objectname`: последний вернул бы хеш самого объекта тега, а не коммита. Команда целиком выписана и в шапке CHANGELOG, и в правиле в CLAUDE.md, чтобы не восстанавливать её каждый раз. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018T2k4VZrSyERwk6H97Sfi1
57 lines
4.3 KiB
Markdown
57 lines
4.3 KiB
Markdown
# SprPoP — CHANGELOG
|
||
|
||
Заметные изменения по релизам. **Версия, дата и коммит каждой записи
|
||
берутся из git** — из аннотированного тега, а не проставляются руками,
|
||
поэтому расходиться с историей они не могут:
|
||
|
||
git for-each-ref \
|
||
--format='%(refname:short) | %(creatordate:short) | %(*objectname:short)' \
|
||
refs/tags/<тег>
|
||
|
||
Заголовок записи = `<имя тега> — <дата тега> — <коммит тега>`. Коммит —
|
||
дереференс аннотированного тега (`*objectname`), то есть та ревизия, на
|
||
которой релиз собран: по ней воспроизводится ровно этот билд.
|
||
|
||
Здесь только то, что видно ИГРОКУ или меняет способ сборки/запуска.
|
||
Разбор причин живёт в сообщениях коммитов, открытые баги — в
|
||
`docs/BUGS_OPEN.md`, закрытые — в архиве roomtest.
|
||
|
||
Файл начат с релиза v0.9.6; более ранняя история — в `git log` и в
|
||
досках задач.
|
||
|
||
## v0.9.6-hang-sound-button — 2026-09-02 — `aaa480d`
|
||
|
||
Три бага, найденные в живой игре и проверенные в MAME после исправления.
|
||
|
||
- **Зацеп срывался на следующем кадре** (регресс, тянулся с 4e12aa5).
|
||
Кид цеплялся за кромку, поза зацепа рисовалась — и он тут же падал.
|
||
Ловилось на длинном прыжке уровня 3 (комната 7) и в attract-демо, где
|
||
Кид вместо подъёма на кромку (0,2) улетал на пики. Причина: страж
|
||
«падения сквозь стену» принимал кладку под кромкой за стену, в которую
|
||
персонаж влетел, и отменял только что состоявшийся захват. Теперь
|
||
удачный зацеп отменяет этого стража. `38fb3c0`
|
||
|
||
- **Непрерывный взмах клинка у безоружного Кида.** На подъёме шёл
|
||
нескончаемый свист меча, которого у Кида нет. Причина: в порт не
|
||
доехали два условия оригинала, включая гард, который автор SDLPoP
|
||
подписал прямым текстом как «фикс зацикленного звука взмаха». `cb995bf`
|
||
|
||
- **Кнопка под Кидом заливалась кладкой** на дворцовых уровнях. Кид
|
||
подтягивается на открывающую кнопку, и кромка, которая его прячет,
|
||
нарисована кирпичом (уровень 4, комната 18). Причина: подстановка
|
||
спрайта «кнопка без пола слева» действует только в подземелье, и это
|
||
условие было потеряно в перерисовке поверх персонажа — при том что в
|
||
статической отрисовке комнаты оно есть. `8548aa9`
|
||
|
||
Сопутствующее, для разработки:
|
||
|
||
- В доске исправлено толкование звука 11: это индикатор ПРОМАХА, а не
|
||
«любого укола». Прежняя запись описывала наш собственный код вместо
|
||
оригинала, и из-за неё в CLIMB-VS-GUARD зря отодвинули версию про порог
|
||
дистанции. `400f5cb`
|
||
- Новый набор host-тестов `t_hang`: мерит не «вис наступил», а «вис
|
||
ДЕРЖИТСЯ» — прежние наборы регресс зацепа не видели именно поэтому.
|
||
Входит в `38fb3c0`.
|
||
- В `CLAUDE.md` записан путь запуска на HDD-образе: игра лежит в
|
||
`D:\GAMES\SPRPOP`, а не в корне диска. `aaa480d`
|