README: состояние, память ~300 МБ, телефон не планируется, ближайшие идеи, журнал изменений
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WxZo3ekR5m1af437Qzqwc1
This commit is contained in:
@@ -15,7 +15,9 @@
|
||||
|
||||
| | Что |
|
||||
|---|---|
|
||||
| ✅ | Хаб с порталами; карты **Песочница**, **Backrooms** и **Parkour**; выход из карт обратно в хаб |
|
||||
| ✅ | Хаб с порталами; карты **Песочница**, **Backrooms**, **Parkour** и **Race**; выход из карт обратно в хаб |
|
||||
| ✅ | **Race** — гонка на ногах до 8 игроков (отсчёт, ворота по порядку, места, итоги, рекорд, песня на старте); **Parkour** — подъём по мегабашне с чекпоинтами, лазерами, дождём и песней; обе карты — мрачная киберпанк-антиутопия, свет запечён в Blender (см. «Карты и порталы», «Карта Race», «Заметки для будущего меня») |
|
||||
| ✅ | Вкладка в браузере занимает **~300 МБ** (замер владельца, окт 2026) |
|
||||
| ✅ | Карты качаются отдельными пакетами `.pck` при первом входе в портал (экран загрузки с прогрессом) |
|
||||
| ✅ | Мультиплеер: выделенный сервер, игроки видят друг друга, **комнаты по картам** (в разных картах не пересекаются) |
|
||||
| ✅ | Преследователи: **камень** и **Верити**; общие для всех игроков комнаты, ходят по навмешу, «видят» только вблизи или в поле зрения, могут потерять игрока |
|
||||
@@ -23,8 +25,9 @@
|
||||
| ✅ | Паркур: спринт, рывок, подкат, **присед (C)**, бег по стенам, прыжок от стены, двойной прыжок, подтягивание на уступ, зум (ЛКМ) |
|
||||
| ✅ | Управление **не зависит от раскладки** (русская и любая другая): действия `InputMap` на физические клавиши |
|
||||
| ✅ | Деплой: CI из `grid-world` на сайт; скрипты экспорта, dev-сервера, тестов без окна, выкладки сервера |
|
||||
| ⏳ | Телефон: **пока не поддерживается** (нет сенсорного управления, не проверена производительность) — план в разделе «Дорожная карта» |
|
||||
| ❌ | Чата, ников, настроек (чувствительность мыши, громкость), меню паузы |
|
||||
| ❌ | Телефон: **не планируется** (решение владельца, окт 2026). Сенсорного управления нет, мобильных текстур нет |
|
||||
| ⏳ | **Ники и текстовый чат** — следующая задача (см. «Дорожная карта») |
|
||||
| ❌ | Настроек (чувствительность мыши, громкость), меню паузы |
|
||||
| ❌ | Серверных проверок (антиспуфинг позиций, античит): сервер только пересылает |
|
||||
| ❌ | Сохранения прогресса, аккаунтов |
|
||||
| ❌ | Автоматических тестов в CI (есть боты для ручного прогона, см. «Тесты без окна») |
|
||||
@@ -314,7 +317,7 @@ ssh root@192.168.10.110 'journalctl -u my-world -f' # лог: «+ игрок
|
||||
|
||||
- **Окружение:** в рендерере Compatibility **объёмный туман не работает** (удалён из песочницы). SSAO и glow работают (неоновое свечение), оставлены.
|
||||
В Backrooms включён обычный туман (`Environment.fog_*`), он работает.
|
||||
- **Память:** вкладка в браузере показывала около **1,6 ГБ**, хотя на десктопе сцена занимает ~115 МБ. Причина не найдена (нужны данные Chrome: `Shift+Esc`).
|
||||
- **Память:** раньше вкладка показывала около 1,6 ГБ; в окт 2026 владелец замерил **~300 МБ** (после замены капсул на модель со скелетом, новых карт и всех правок этой сессии). Что именно помогло — неизвестно (гипотезы прежних замеров: несжатые текстуры, HDR-небо, `.ogg` целиком в памяти). Проблему считаем снятой; повторно измерять при добавлении тяжёлого контента (небо Parkour/Race ~6 МБ в видеопамяти каждое).
|
||||
Гипотезы: рост WASM-памяти, несжатые текстуры, HDR-небо 2k, `.ogg`, распаковываемый целиком. Измерения с тех пор не повторялись.
|
||||
- **Материал Верити** — две поверхности: жёлтая основа и диск с лицом (текстура свечения на белой основе). Белая основа на ярком свету даёт бледность,
|
||||
поэтому `emission_energy` делает материал чисто светящимся (чёрная основа).
|
||||
@@ -357,35 +360,23 @@ ssh root@192.168.10.110 'journalctl -u my-world -f' # лог: «+ игрок
|
||||
|
||||
## Дорожная карта
|
||||
|
||||
### Цель: играть с телефона
|
||||
### Телефон — не планируется
|
||||
|
||||
Сейчас игра рассчитана на клавиатуру и мышь. Что нужно сделать, по порядку:
|
||||
Владелец решил, что телефон не нужен (окт 2026). Если когда-нибудь вернёмся: нужны сенсорный стик и зона обзора (ввод уже сведён к действиям `InputMap`, достаточно `Input.action_press`), ориентация и полноэкранный режим по касанию,
|
||||
экран «Нажми, чтобы начать» (аудио в браузере без жеста не стартует), мобильные текстуры ETC2/ASTC (`vram_texture_compression/for_mobile`; удвоит пакеты — делать отдельными `*.mobile.pck`), отключение SSAO/glow и `scaling_3d_scale` 0,6–0,75,
|
||||
восстановление после ухода вкладки в фон (`submit_map` заново). Сначала измерить память и FPS на реальном устройстве.
|
||||
|
||||
1. **Сенсорное управление.** Основа уже есть: ввод игрока сведён к действиям `InputMap`, поэтому сенсорные кнопки просто вызывают
|
||||
`Input.action_press/release("move_forward", strength)` и т. д. Нужна сцена `ui/touch_controls.tscn` (CanvasLayer): виртуальный стик слева (движение),
|
||||
зона перетаскивания справа (обзор), кнопки прыжка, спринта (переключатель), приседа (удержание), рывка, зума. Показывать только на сенсорных устройствах
|
||||
(`DisplayServer.is_touchscreen_available()` и feature-теги `web_android`/`web_ios`). В `player/player.gd` обзор сейчас считается из `InputEventMouseMotion` при захваченной мыши —
|
||||
добавить обработку `InputEventScreenDrag`; зум по ЛКМ заменить действием `zoom`.
|
||||
2. **Ориентация и экран:** принудительно альбомная (`display/window/handheld/orientation`), полноэкранный режим по первому касанию (браузеры требуют жест),
|
||||
масштаб интерфейса (надписи «ПОЙМАЛ!», экран загрузки сейчас рассчитаны на десктоп), безопасные зоны.
|
||||
3. **Звук:** браузер не стартует `AudioContext` без касания. Добавить экран «Нажми, чтобы начать» перед хабом (заодно решает и предупреждение на десктопе).
|
||||
4. **Текстуры (главное узкое место):** мобильные GPU не поддерживают S3TC/BPTC, которыми сейчас сжаты текстуры (`vram_texture_compression/for_desktop=true`, `for_mobile=false`).
|
||||
Нужно включить `for_mobile` (ETC2/ASTC) — это **удваивает размер пакетов**, если держать оба формата в одном `.pck`. Варианты: отдельные пакеты `*.mobile.pck`,
|
||||
выбираемые по feature-тегу, и уменьшенные текстуры (27 текстур Backrooms по 2К — тяжёлые).
|
||||
5. **Производительность и память:** на телефоне отключить SSAO/glow (в Compatibility они дорогие), уменьшить `Viewport.scaling_3d_scale` (0,6–0,75),
|
||||
меньше деревьев и птиц, теней нет у деревьев уже сейчас. Мобильный Safari убивает вкладки около 1–1,5 ГБ, а на десктопе она уже занимала 1,6 ГБ — **сначала разобраться с памятью**
|
||||
(см. выше). Проверить размер `.wasm` и распаковку (на сотовой сети 40 МБ чувствительны; `index.wasm` уже жмётся gzip).
|
||||
6. **Сеть:** вкладка уходит в фон и замирает — владельца преследователей сервер уже передаёт другому через 3 с; клиенту при возвращении стоит
|
||||
показывать «переподключение» и заново входить в комнату (`submit_map`), если соединение сброшено.
|
||||
7. **Тестирование:** режим устройства в Chrome DevTools; на реальном телефоне — `tools/serve_web.py` по локальной сети (`http://<IP-компьютера>:8080`, привязать сервер к `0.0.0.0`).
|
||||
Минимальная планка: 30 FPS в хабе и песочнице на среднем Android.
|
||||
### Ближайшее
|
||||
|
||||
### Другое
|
||||
- **Ники и текстовый чат** (выбор владельца, окт 2026): ник игрока вместо «Игрок N» над призраком, в итогах гонки и в HUD; строка чата (физическая клавиша, работает на любой раскладке) в комнате карты. Потребует новых RPC → выкладка клиента и сервера вместе, Ctrl+F5 игрокам.
|
||||
|
||||
- Ники по выбору игрока, текстовый чат, анимация приземления, свои руки/тело от первого лица, настройки (чувствительность, громкость), меню паузы.
|
||||
### Идеи (оценка независимого консультанта, окт 2026; не обязательства)
|
||||
|
||||
- **Parkour/Race:** режим «время и призрак» (запись лучшего забега, показ призраком), старт гонки по таймеру при зависшем «готов» (сейчас один не нажавший R блокирует всех), развилки Race с большим выигрышем, спектейт для мёртвых, приватные комнаты по ссылке.
|
||||
- **Мувсет и ощущение:** анимация приземления, звуки шагов/приземления/подката/бега по стене/рывка (самый заметный эффект при малых затратах), настройки и меню паузы (чувствительность, громкость, FOV).
|
||||
- **Контент и социальное:** игрок в роли преследователя, голос по близости, подбираемые предметы/двери, гроза со вспышкой молнии на картах, кастомизация персонажа.
|
||||
- **Инструменты:** номер версии протокола (чтобы старый клиент получал «обнови страницу»), автопроверка пакетов в CI, одна команда «собрать карту», экран credits (CC-BY Backrooms VR).
|
||||
- Серверные проверки (антиспуфинг позиций), если игроков станет много.
|
||||
- Новые карты (добавляются по инструкции выше) и новые преследователи.
|
||||
- Автоматизировать прогон ботов в CI и проверку «пакет не пустой» после экспорта.
|
||||
|
||||
## Персонаж
|
||||
|
||||
@@ -400,6 +391,16 @@ ssh root@192.168.10.110 'journalctl -u my-world -f' # лог: «+ игрок
|
||||
- **Выкладка сервера:** `ghost.gd` лежит и на сервере, где модели нет, поэтому модель грузится `load()` внутри `setup()`, а не `preload`.
|
||||
- Изменить позы: правь функции анимаций в скрипте, перезапусти его в Blender, заново экспортируй GLB и импортируй в Godot.
|
||||
|
||||
## Журнал изменений (окт 2026)
|
||||
|
||||
Сделано одной серией работ (хронологически):
|
||||
1. **Персонаж:** модель киберниндзя со скелетом (752 треугольника, 14 анимаций, IK ног) вместо капсул; цвет свечения от id игрока; свой персонаж спрятан от своей камеры. Сальто камеры при двойном прыжке делалось и убрано по просьбе.
|
||||
2. **Подтягивание на уступы** починено (не работало от ~2 м на всех картах), замеры мувсета и тестовые сцены в `tools/test/`.
|
||||
3. **Parkour:** подъём по мегабашне (крыши, каньон, башня, лазерный зал, контейнеры, спираль, вершина), запечённый свет, панорама неба, мокрый блеск, дождь, туман, песня; мрачная антиутопия.
|
||||
4. **Race:** гонка на ногах (трасса 633 м из Blender, три развилки, 8 ворот), правила и HUD, новые сетевые события, песня на «СТАРТ!»; сделано агентами, проверено двухклиентным тестом на локальном сервере.
|
||||
5. **Инфраструктура:** пресеты экспорта карт (с `include_filter` для файлов, грузимых по строке), проверка пакетов «по существу», выкладка сайта и сервера по порядку из «Деплой».
|
||||
6. **Замеры:** вкладка в браузере ~300 МБ.
|
||||
|
||||
## Лицензии и авторство
|
||||
|
||||
- Модель карты Backrooms — «Backrooms VR», автор VTX (https://sketchfab.com/VTX_car), **CC-BY 4.0** (`maps/backrooms/model/CREDITS.md`).
|
||||
|
||||
Reference in New Issue
Block a user