fix(game): small reconciliation fixes (science, generation, dismantle, report) #81

Merged
developer merged 1 commits from feature/game-small-fixes into development 2026-05-31 07:35:59 +00:00
Owner

Что

Этап 6 (финальный) — пакет мелких правок сверки Правил и движка.

  • Наука: проверка суммы долей теперь с допуском (|sum-1| < 1e-9) вместо точного != 1, чтобы ввод вроде 0.1+0.2+0.3+0.4 (равно 1 лишь с точностью float) не отвергался. В правилах пример «First Step» переформулирован: доли задаются в долях единицы (сумма = 1).
  • Генерация: ресурс «супербольших» планет строго больше 0 (минимум 0.001 вместо жёсткого 0.1). В правилах: таблица «просто больших» исправлена на 1-10; убрано неверное утверждение «диапазон 0.1–20, среднее 1.5» (фактически из таблицы выходит до 25, у астероидов 0).
  • Демонтаж: над ничейной планетой колонисты выгружаются и заселяют её (планета становится игрока); над чужой — теряются; над своей — выгружаются. Раздел правил уточнён.
  • Отчёт: записи ShipProduction пишутся по компактному индексу [i], а не по индексу планеты [pi] (последний мог писать за пределы среза и паниковать); «оставшееся расстояние» входящих групп считается от текущей позиции в гиперпространстве, а не от планеты-источника (как уже корректно делает OtherGroup).
  • Валидатор (pkg/calc): ошибка значения трюма теперь несёт значение трюма (c), а не щитов (s).

Документация

game/rules.txt: точечно поправлены разделы «Науки», таблица планет, абзац про сырьё и «Демонтаж кораблей». FUNCTIONAL.md/ARCHITECTURE.md эти механики не описывают (только перечень разделов отчёта) — правок не требуют.

Тесты

go test ./game/... ./pkg/calc/ зелёный. Новые: TestScienceCreateFloatTolerance, TestShipGroupDismantleColonizesNeutralPlanet, TestReportShipProductionIndex, TestReportIncomingGroupRemainingDistance. Диапазон ресурсов «супербольших» уже проверяется существующим generator_test (через s.MinResource).

## Что Этап 6 (финальный) — пакет мелких правок сверки Правил и движка. - **Наука**: проверка суммы долей теперь с допуском (`|sum-1| < 1e-9`) вместо точного `!= 1`, чтобы ввод вроде `0.1+0.2+0.3+0.4` (равно 1 лишь с точностью float) не отвергался. В правилах пример «First Step» переформулирован: доли задаются в долях единицы (сумма = 1). - **Генерация**: ресурс «супербольших» планет строго больше 0 (минимум `0.001` вместо жёсткого `0.1`). В правилах: таблица «просто больших» исправлена на `1-10`; убрано неверное утверждение «диапазон 0.1–20, среднее 1.5» (фактически из таблицы выходит до 25, у астероидов 0). - **Демонтаж**: над ничейной планетой колонисты выгружаются и заселяют её (планета становится игрока); над чужой — теряются; над своей — выгружаются. Раздел правил уточнён. - **Отчёт**: записи `ShipProduction` пишутся по компактному индексу `[i]`, а не по индексу планеты `[pi]` (последний мог писать за пределы среза и паниковать); «оставшееся расстояние» входящих групп считается от текущей позиции в гиперпространстве, а не от планеты-источника (как уже корректно делает `OtherGroup`). - **Валидатор** (`pkg/calc`): ошибка значения трюма теперь несёт значение трюма (`c`), а не щитов (`s`). ## Документация `game/rules.txt`: точечно поправлены разделы «Науки», таблица планет, абзац про сырьё и «Демонтаж кораблей». `FUNCTIONAL.md`/`ARCHITECTURE.md` эти механики не описывают (только перечень разделов отчёта) — правок не требуют. ## Тесты `go test ./game/... ./pkg/calc/` зелёный. Новые: `TestScienceCreateFloatTolerance`, `TestShipGroupDismantleColonizesNeutralPlanet`, `TestReportShipProductionIndex`, `TestReportIncomingGroupRemainingDistance`. Диапазон ресурсов «супербольших» уже проверяется существующим `generator_test` (через `s.MinResource`).
developer added 1 commit 2026-05-31 07:31:41 +00:00
fix(game): small reconciliation fixes (science, generation, dismantle, report)
Tests · Go / test (push) Successful in 1m58s
Tests · Integration / integration (pull_request) Successful in 1m47s
Tests · Go / test (pull_request) Successful in 2m1s
dc621cc715
A bundle of small rules-vs-engine corrections:

- Science proportions: accept a sum that equals 1 only up to float
  rounding (was an exact != 1 comparison); the rules example is reworded
  so it is unambiguous that proportions are fractions summing to 1.
- Generation: super-big planets get a resource strictly above 0 (minimum
  0.001, was a hard 0.1); the rules table is fixed for big planets (1-10,
  not 0.1-10) and the false "0.1-20 / average 1.5" resource claim removed.
- Dismantle over a neutral planet now unloads the colonists and settles
  it (the planet becomes the race's); over a foreign planet they are
  still lost. The rules clause is clarified for own / neutral / foreign.
- Report: ship-production entries are written at the compacted report
  index (was the planet's map index, which could write past the grown
  slice and panic); the incoming-group "remaining distance" is measured
  from the group's current hyperspace position, not its origin planet
  (matching OtherGroup).
- validator: the cargo-value error now carries the cargo value, not the
  shields value.

Tests added for each behavioural fix; rules.txt updated in the same patch.
owner approved these changes 2026-05-31 07:35:44 +00:00
developer merged commit 9dce15c7bb into development 2026-05-31 07:35:59 +00:00
developer deleted branch feature/game-small-fixes 2026-05-31 07:35:59 +00:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: developer/galaxy-game#81