docs: прогресс M2/M3/M7 (netchan, игрок, модели, скайбокс, HUD, меню, Lua)
- PLAN.md: отмечено сделанное по M3 v1 (ходьба, энтити-модели, 3D-скайбокс, HUD, меню) и M7 v0 (LuaJIT-рантайм, препроцессор, автозагрузка аддонов) - net: диагностические env-переключатели (keepalive, задержки connect, флаги) - RECON §11: формат GMod netchan и открытый вопрос кика
This commit is contained in:
parent
b7a63d9a83
commit
a92da38a1d
1 changed files with 44 additions and 3 deletions
47
docs/PLAN.md
47
docs/PLAN.md
|
|
@ -135,13 +135,54 @@ Source RS — клиент Garry's Mod, написанный с нуля на Ru
|
|||
- [x] Версия клиента в connect берётся из A2S-версии сервера (иначе
|
||||
`#GameUI_ServerRejectNewVersion`)
|
||||
- [x] CLI: `net info <addr>`, `net connect <addr>`
|
||||
- [ ] Подканалы/фрагменты надёжного потока (первый reliable-пакет содержит
|
||||
subchannel-данные — их разбор откроет доступ к SVC_ServerInfo и signon)
|
||||
- [x] Подканалы/фрагменты надёжного потока: `NetChan` (single/fragments, сжатие,
|
||||
varint, сборка потоков, разбор сообщений); GMod-флаги (Challenge=0x20,
|
||||
subchannel 4 бита) сверены с трафиком ClassicBox
|
||||
- [x] Steam-тикет: клиент живёт всю сессию, ждём `AuthSessionTicketResponse`,
|
||||
свежий тикет при повторных connect (challenge одноразовый)
|
||||
- [ ] **Нерешённое**: сервер после `S2C.Connection` шлёт challenge-пакеты и через
|
||||
~1.5 с отключает (`NET_Disconnect: Client dropped by server`); кик не зависит
|
||||
от наших пакетов (подробности и все проверенные гипотезы — в docs/RECON.md §11)
|
||||
- [ ] Полный signon: stringtables, datatables, baselines, снапшоты
|
||||
- [ ] Packet dump/replay стенд
|
||||
- [ ] Workshop через ISteamUGC (подписка/скачивание/монтирование)
|
||||
|
||||
Приёмка v0 достигнута: хендшейк и Steam-вход работают на живом ClassicBox.
|
||||
Приёмка v0 достигнута: хендшейк и Steam-вход работают на живом ClassicBox
|
||||
(до кика сервером; причина кика исследуется).
|
||||
|
||||
### M3 — Рендер мира + interest-система (v1)
|
||||
|
||||
**Сделано (v0/v1, 2026-10-11/12):**
|
||||
- [x] `engine::world`: браш-грани, displacement'ы (ориентация по startPosition +
|
||||
порядок обхода, нормали наружу), лайтмапы в вершинах, VMT/VTF-материалы,
|
||||
pakfile карты, скайбокс 2D (`skyname`)
|
||||
- [x] `render::WorldRenderer`: батчи по материалам, depth, PNG-захват (BGRA-фикс),
|
||||
debug-материалы, `--only-material`, `--dump-textures`
|
||||
- [x] Камера + ходьба: `engine::player` — AABB против брашей (BSP v20) и
|
||||
displacement-треугольников (SAT + сетка), гравитация/прыжок/присед/noclip
|
||||
- [x] Энтити-модели: `engine::model` (MDL+VVD+VTX, bind pose), prop_static/
|
||||
prop_dynamic/prop_physics в общий меш мира
|
||||
- [x] 3D-скайбокс: выделение скайбокс-граней (AABB sky_camera), сжатие 1/scale,
|
||||
отдельный пайплайн; 2D-скайбокс в незакрытых пикселях
|
||||
- [x] HUD: 2D-текст (bitmap 8x8, `render::text`), FPS/позиция/режим/лог
|
||||
- [x] Меню: `menu` (выбор карты из VFS, Enter — запуск)
|
||||
- [ ] Куллинг/инстансинг, атлас лайтмапов, прозрачность/вода (SURF_WARP)
|
||||
- [ ] Анимации моделей (парсинг seqdesc/animdesc начат; форматы RLE/raw сверяются)
|
||||
- [ ] Звук, частицы, декали, оверлеи
|
||||
|
||||
### M7 — Lua: машинерия + HUD/UI (частично, 2026-10-12)
|
||||
|
||||
**Сделано (v0):**
|
||||
- [x] `glua`: LuaJIT (mlua vendored), print/Msg, hook.Add/Remove/Call,
|
||||
timer.Simple, concommand.Add, CreateConVar/GetConVar, util/engine/game
|
||||
заглушки, FCVAR_*
|
||||
- [x] Препроцессор GMod-синтаксиса: `!` → `not`, `!=` → `~=`, `&&` → `and`,
|
||||
`||` → `or` (вне строк/комментариев) — оригинальные клиентские скрипты GMod
|
||||
(demo_recording.lua, gm_demo.lua) грузятся
|
||||
- [x] Автозагрузка `lua/autorun/client/*.lua` из VFS, Think-хук и таймеры в кадре,
|
||||
вывод в HUD-лог; `lua run <file>`, `lua list`
|
||||
- [ ] surface/draw/render-таргеты, Derma, Entity/Player API, серверный Lua
|
||||
- [ ] Загрузка lua с сервера (download-кэш), safe mode
|
||||
|
||||
### M3 — Рендер мира + interest-система (v1)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue