Очередь: полноценные пропы и наполнение карты
Some checks are pending
CI / checks (push) Waiting to run

Просьба пользователя: «пропы полноценные, полные все элементы карты —
телепорты, пропы, текстурки, трава, деревья».

В список дефектов (docs/PARITY.md, часть A) добавлены три пункта с замером
текущего состояния:

A15 — полноценные пропы и модели. Уже есть: MDL читаются, статические меши
PropMesh строятся (9 экземпляров на gm_construct), рисуются, участвуют в
физике и в коллизии игрока. Нет: скелета и скиннинга, анимаций,
$bodygroup/$texturegroup, LOD, ragdoll, флексов — то есть полного studio-рендера
этапа M5.

A16 — наполнение карты: detail-спрайты ($detail, detailsprites — трава),
смешанные материалы (WorldVertexTransition и $basetexture2 — сейчас берётся
только первая текстура, отсюда пропажа перехода травы в песок), декали и
оверлеи (infodecal, info_overlay, decal-лумпы — не рисуются вовсе), деревья
(prop_static, появятся с A15).

A17 — сущности-механики: телепорты (trigger_teleport), лестницы (func_ladder),
двери и кнопки, звуки, источники света, env_fog_controller. Каркас энтити есть,
классы добавляются по очереди, начиная с влияющих на игру, каждый — с проверкой
по спецификации и замером.

Там же записан порядок: A15 → A16 (материалы, спрайты, декали) → A17,
параллельно A10 (свет на пиксель), A11–A13 (вода, туман), A14 (присед).
This commit is contained in:
Niko Marmeladkov 2026-10-16 20:50:11 +03:00
parent aa11713287
commit 77efaace3f

View file

@ -291,6 +291,45 @@ displacement-геометрия, у которой **не разрешилась
под низким потолком), но **не вслепую**: каждое число (скорость в приседе,
высота глаз, скорость приседа/вставания) проверять замером на нашей геометрии.
### A15. Полноценные пропы и модели (наполнение карты)
**Симптом** (пользователь): «пропы полноценные, полные все элементы карты».
**Что уже есть (замер на gm_construct):** у проп-сущностей (`prop_static`,
`prop_dynamic`, `prop_physics`, `item_*`) читаются MDL, строятся статические
меши `PropMesh` — 9 экземпляров, они рисуются, участвуют в физике и в коллизии
игрока (`collision.set_boxes`).
**Чего нет:** скелета и скиннинга, анимаций, `$bodygroup`/`$texturegroup`, LOD
моделей, ragdoll-физики, флексов и глаз. То есть «полноценная модель» в смысле
этапа **M5** плана: VVD/VTX, blend-граф, GPU-скиннинг, animation LOD,
материалы моделей.
### A16. Наполнение карты: трава, деревья, декали, оверлеи
- **Detail-спрайты** (`$detail` в VMT, `detailsprites` карты): трава на
травяных текстурах не рисуется вовсе — отсюда «плоская трава».
- **Смешанные материалы** (`WorldVertexTransition`, `$basetexture2`,
`$blendmodulatetexture`): берётся только первая текстура, поэтому переход
травы в песок и асфальт пропадает.
- **Трава и деревья** — обычно `prop_static`-модели: появятся вместе с A15;
отдельно у деревьев есть `$treeSway` (качание).
- **Декали и оверлеи** (`infodecal`, `info_overlay`, `decal`-лумпы) не
рисуются вовсе: отметины, надписи и метки на карте пропадают.
### A17. Сущности-механики карты
Телепорты (`trigger_teleport` + `info_teleport_destination`), лестницы
(`func_ladder`), двери и кнопки (`func_door`, `func_button`,
`func_movelinear`, `func_rotating`), звуки (`ambient_generic`), источники света
(`light`, `light_spot`, `env_projectedtexture`), `env_fog_controller` (см. A13),
`func_brush` с переключением.
**Решение:** каркас энтити уже есть; добавлять по классам, начиная с тех, что
влияют на игру (телепорты, лестницы, двери/кнопки), затем свет и звук. Каждый
класс — с проверкой поведения по спецификации и замером на карте.
**Порядок работ по наполнению:** A15 (модели) → A16 (смешанные материалы и
detail-спрайты) → A16 (декали/оверлеи) → A17 (механики), параллельно A10
(свет на пиксель), A11–A13 (вода, туман), A14 (присед).
---
## Часть B. Фундамент: система энтити