Files
TheDeclineOfWarriors/docs/tasks/items/TASK-0006.md
T

4.6 KiB

id, title, summary, priority, area, owner, created, updated, execution_time, depends_on, canonical_docs, related_files
id title summary priority area owner created updated execution_time depends_on canonical_docs related_files
TASK-0006 Реализовать побитовую систему состояния врагов в чанке Сохранить состояние врагов чанка через int или расширяемую bitmask, где каждый бит соответствует конкретному deterministic enemy slot. Highest persistence unassigned 2026-03-30 2026-03-30 1d
TASK-0004
TASK-0005
docs/tasks/Index.md
Assets/Features/VoxelWorld/Runtime/VoxelWorldGenerator.cs

TASK-0006 - Реализовать побитовую систему состояния врагов в чанке

Status

Статус задачи ведется в docs/tasks/Index.md и является каноническим там.

Допустимые значения статуса:

  • BackLog
  • ToDo
  • InProgress
  • Review
  • Done

Why

Пользователь описал конкретную механику хранения enemy state через биты. Это позволяет сохранять большой мир компактно и воспроизводимо.

Expected Outcome

Для каждого чанка можно хранить compact mask, из которой однозначно определяется, какие deterministic slots еще живы, а какие уже убиты и не должны спавниться повторно.

Current Context

Enemy slot model должна прийти из TASK-0005, а общая схема world save из TASK-0004.

Source Of Truth

  • docs/tasks/items/TASK-0004.md
  • docs/tasks/items/TASK-0005.md
  • runtime code сохранений мира после внедрения

Read First

  • docs/tasks/items/TASK-0004.md
  • docs/tasks/items/TASK-0005.md
  • Assets/Features/VoxelWorld/Runtime/VoxelWorldGenerator.cs

Scope In

  • формат битовой маски для enemy slots
  • правила чтения и записи маски в world save
  • применение маски при загрузке и регенерации чанка
  • расширяемость на случай числа врагов больше емкости одного int

Scope Out

  • миграции формата сохранений между версиями
  • сложная аналитика по прогрессу зачистки мира

Constraints

  • индекс бита должен жестко соответствовать deterministic enemy slot
  • нельзя терять совместимость между спавном и сохранением

If You Find Drift

  • если реализация спавна не дает стабильного соответствия slot -> bit, нужно остановиться и исправить основу

Suggested Approach

  1. Определить каноническое значение бита: жив/мертв и правила инициализации.
  2. Описать сериализацию маски в world save.
  3. Применить маску при загрузке чанка до фактического spawn instantiate.

Acceptance Criteria

  • убийство врага меняет корректный бит в состоянии чанка
  • повторный вход в мир не возрождает уже убитых врагов
  • система поддерживает сценарий с несколькими врагами на чанк без потери детерминизма

Verification

  • ручной тест: убить часть врагов, сохранить мир, перезагрузить и проверить состав чанка
  • сверка битовой маски с фактически заспавненными слотами

Risks / Open Questions

  • нужно определить политику для чанков, где врагов больше, чем можно удобно хранить в одном int

Human Decisions Needed

  • none currently

Decision Log

  • 2026-03-30 - пользовательское требование о bitmask сохранено как отдельный канонический task.

Handoff Notes

Если реализация выберет не один int, а массив масок, нужно сохранить семантику user-facing идеи: состояние читается побитово и зависит от slot index.