- палитра целиком (индиго, пурпур, ледяная бирюза): SOLID/NEON, SURFACES/GLOWS, туман, ambient, свет запекания, ворота, полосы, надписи; новое небо
- запекание 384 сэмпла + огни у подножия башни
- вентилятор: VENT_MAX_RISE 16, VENT_ACCEL 80; шахта-лифт без знака и без столба/света (hidden)
- музыка Race 2: Poloz «On My Way to Hell» с 1:40
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- maps/race2/: сцена, race2.gd (ворота со световыми столбами, лазеры, вентиляторы, полосы, срыв, дождь, гул), данные и модель из Blender models/race_02
(раскладка layout.py -> build_race.py -> bake.py; свет пока запечён грубо, небо и музыка — копии Race)
- objects/vent.gd, objects/boost_strip.gd + хуки apply_vent()/apply_boost() в player/player.gd (MAX_SPEED и остальная физика не тронуты)
- race_rules.gd берёт данные у карты (общий код правил для Race и Race 2)
- портал RACE 2 в хабе, пресет экспорта Race2 + export_all.sh, Net.TIMED_MAPS/MAP_TITLES для race2 (RPC не менялись; серверу нужен deploy_server.sh)
- тесты: race_game_test.sh с MAP=race2 (бот проводит игроков телепортами), race2_check.txt
- README: раздел «Карта Race 2», результаты ботов по веткам
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Карта Metro и всё, что с ней связано, удалены по решению владельца (в git она не попадала)
- Из net.gd убраны id «metro» (TIMED_MAPS, MAP_TITLES), из README/тестов — упоминания
- README: исправлен блок «Структура проекта» (branding/, core/, player/character), запись в журнале
о Metro и вынесенных уроках
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WxZo3ekR5m1af437Qzqwc1
- branding/splash.png, branding/icon.svg; project.godot: config/name, boot_splash, config/icon
- user:// остаётся прежним (custom_user_dir_name="world2"), чтобы не потерять профиль и рекорды
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WxZo3ekR5m1af437Qzqwc1
- Ники: профиль user://profile.cfg (client_id + ник), панель при первом запуске и по N;
Net.nick_of(id); ники над призраками, в HUD/итогах гонки и таблицах
- Рейтинг на сервере: лучшее время каждого игрока по картам race/parkour/metro, топ-10,
user://leaderboard.json (атомарная запись, лимиты, проверка карты/комнаты/времени)
- Таблица лидеров по Tab, доски топ-3 над порталами в хабе, итоги гонки с общим рейтингом
- Гонка: сдача (G, удержание 1,5 с), RACE_GIVEUP; Parkour: таймер, финиш на вершине, R — перезапуск
- Новые RPC (submit_profile, recv_nick, submit_record, recv_record_result, request_leaderboard,
recv_leaderboard): клиент и сервер выкладываются вместе
- Тесты: nicks_lb_test, race_giveup_test, parkour_run_test, nick_ui_test, ui_tour; README обновлён
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WxZo3ekR5m1af437Qzqwc1
- maps/race: трасса 633 м из Blender (три развилки: срез по контейнерам, каньон со стенами
против нижней дороги, труба с лазерами против коридора), запечённый свет, небо, дождь, гул;
фоновая песня (Ogg Vorbis, ~0,6 МБ) включается на «СТАРТ!»
- Правила (race_rules.gd): R — готов; когда готовы все — отсчёт 6 с, заморозка в слотах,
ворота строго по порядку, сплиты, место, итоги, личный рекорд (user://race_best.cfg)
- Сеть: Net.submit_race / recv_race / race_event (RACE_READY, START, CP, FINISH, STATE).
ВНИМАНИЕ: набор RPC изменён — клиент и сервер выкладываются вместе, старый клиент
с новым сервером не работает (rpc node checksum failed)
- player.gd: input_frozen и place() для режимов карт; project.godot: действие ready (R)
- Портал RACE в хабе, пресет экспорта Race (include_filter для ресурсов, грузимых строкой)
- tools/test: двухклиентный тест гонки на локальном сервере, бот, облёт, проверка пакета
- README: правила гонки, события, проверки, заметки
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WxZo3ekR5m1af437Qzqwc1
- Договорённости с владельцем, замеры мувсета (стенами высоту не набрать), исправление
подтягивания, конвейер Parkour и его грабли, ловушка с ресурсами, загружаемыми по строке
- tools/test: measure_movement, mantle_test, parkour_gaps, parkour_tour, parkour_check.txt
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WxZo3ekR5m1af437Qzqwc1
- Добавлена фоновая песня (Ogg Vorbis, моно 32 кГц, ~1 МБ вместо 8 МБ MP3), играет по кругу
поверх шума дождя; оригинальный MP3 удалён
- Исправлен пресет экспорта Parkour: ресурсы, которые скрипт грузит по строке (sky.png,
baked.gdshader, parkour_data.gd, audio/*), не попадали в parkour.pck — на сайте карта
оставалась без неба, шейдера и данных раскладки. Теперь они включены (пакет 3,1 -> 7,4 МБ)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WxZo3ekR5m1af437Qzqwc1
- Новая карта maps/parkour: ~700 м, 9 чекпоинтов (светящиеся ворота), секции под
мувсет: крыши, каньон из стен для бега, башня из уступов (двойной прыжок +
подтягивание), лазерный зал (подкат, прыжок, тайминг), пропасть из контейнеров
(зазоры 16–24 м), спираль вокруг ядра, вершина с порталом в хаб
- Атмосфера: антиутопия — дождь, дымный туман, мокрый бетон с отражением неба,
натриевый/красный свет, надписи-приказы, шум дождя и гул; освещение запечено
в цвета вершин (Blender, Cycles), шейдер baked.gdshader без динамического света
- Модель, раскладка и скрипты сборки лежат в «Blender models/parkour_02»
(layout, build_parkour, bake, build_sky); parkour_data.gd генерируется
- Пресет экспорта Parkour и строка в export_all.sh; карта исключена из основного пакета
- Портал PARKOUR в хабе; README: карта, пересборка, замеры мувсета
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WxZo3ekR5m1af437Qzqwc1
- Подтягивание на уступы выше ~2 м не работало: цель ставила центр капсулы
на уровень поверхности, тело оказывалось наполовину в уступе, и физика
выталкивала назад. Теперь центр на полвысоты капсулы выше поверхности
(проверено ботом: уступы 1,2–2,7 м, тонкие и сплошные, коробка и меш,
ходьба и спринт — везде успешно; раньше от 2,0 м не работало)
- Откачено сальто камеры при двойном прыжке (тошнит, не видно куда прыгать)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WxZo3ekR5m1af437Qzqwc1
- Камера вынесена в узел CameraPivot на уровне глаз; им крутим оборот за
AIR_JUMP_FLIP_TIME (0,6 с, как у анимации air_jump), взгляд мышью не мешает
- Рывок берёт направление без учёта сальто, смерть сбрасывает его
- README: строка про сальто в таблице управления
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WxZo3ekR5m1af437Qzqwc1
- player/character/character.glb: 752 треугольника, 17 костей, 14 анимаций
(idle, walk, run, crouch, slide, jump, fall, air_jump, dash, wallrun L/R,
mantle, death); ноги на IK, исходник и скрипт сборки в Blender models
- Ghost: выбор анимации по флагам и скорости, подгонка speed_scale,
голова повторяет взгляд, свечение красится в цвет игрока от его id
- Net: флаги FLAG_WALL_RIGHT и FLAG_AIR (RPC не менялись, сервер
перевыкладывать не нужно)
- Игрок: капсула в player.tscn заменена моделью, спрятанной от своей камеры
- Модель в ghost.gd грузится через load, чтобы не ломать сервер без неё
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WxZo3ekR5m1af437Qzqwc1
- Перенос: Net→net, Player→player, World/*→maps/{hub,sandbox,backrooms}, core, objects,
models/*→chasers/{rock,verity} и maps/*/models. Имена внутри папок с .glb не менялись
(рядом лежат извлечённые текстуры). Все пути, пресеты экспорта и автолоады обновлены.
- Преследователи: rock-follow.gd → chasers/chaser.gd; камень в песочнице теперь инстанс
chasers/rock/rock.tscn (как Верити).
- Удалён мусор: неиспользуемое небо sunflowers, Tree_01.glb, rock-path.gd, старая
модель Верити, unwrap_cache (теперь в .gitignore).
- Основной пакет игры 70 КБ (камень и Верити уехали в пакеты карт).
- tools/: export_all.sh, serve_web.py (nginx-подобный dev-сервер), deploy_server.sh,
test/ (боты, временный проект и сервер). Net: флаг --client для headless-клиента.
- deploy/: боевые nginx.conf и my-world.service, project.godot выделенного сервера.
- README переписан: что есть и чего нет, структура, карты, преследователи, сеть, пакеты,
деплой, грабли, дорожная карта (телефон).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
W/A/S/D и стрелки, Пробел, Shift, C, Q — действия InputMap (move_*, jump, sprint,
crouch, dash). Игрок использует их вместо is_key_pressed(KEY_*): на русской раскладке
символ на клавише другой, а физическая клавиша та же. Сенсорные кнопки смогут
нажимать те же действия.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- models/verity: модель verity2, звук из видео (verity.ogg), сцена с тем же
мозгом, что у камня. В Backrooms вместо камня — Верити; в песочнице — Верити и камень.
- Сеть: синхронизация любого числа преследователей по имени (Net.chasers,
submit_chasers/recv_chasers) вместо одного камня.
- rock-follow.gd: chaser_id, model_scale, emission_energy (чисто светящийся материал).
- Экспорт: models/verity только в пакетах карт.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- World/Hub: маленькая стартовая комната (код, без ассетов) с порталами на карты;
новые карты добавляются записью в PORTALS (влезает 6 порталов).
- Песочница (main.tscn) вынесена в world.pck и качается при входе в портал;
основной пакет игры вместо 19.7 МБ стал 2.1 МБ. Выходы из карт ведут в хаб.
- Экспорт: три пресета (Web — движок и хаб, World, Backrooms).
- Присед: удерживать C (на бегу Shift+C по-прежнему подкат), скорость 3.5.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
HTTPRequest в браузере пытался второй раз распаковать уже распакованный gzip
(код 8), а download_file в вебе не создаёт файл. Теперь accept_gzip=false, тело
берём в память и пишем в user:// сами; в сообщении об ошибке показываем причину.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Backrooms на готовой модели (CC-BY, VTX): отдельный пакет backrooms.pck,
качается при первом входе в портал (World/map_loader.gd), навмеш запечён заранее.
- Порталы между картами (World/portal.gd); выход из Backrooms возвращает в мир.
- Мультиплеер: игроки и общий камень делятся на комнаты по картам (Net/net.gd).
- Камень видит игрока только вблизи или в поле зрения, может потерять и бродит
по навмешу (sight_limited); в мире и в Backrooms включено.
- Экспорт: пресет Backrooms для пакета карты, основной пресет без неё.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Камень считает один клиент (владелец, назначает сервер), остальные повторяют его позицию.
Цель — ближайший живой игрок; события смерти/возрождения пересылаются через сервер.
Сервер передаёт камень другому, если владелец вышел или замолчал.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>