123 Commits

Author SHA1 Message Date
min
63937a7dc5 fix(skin): валидация скина в карточках игроков (legacy bacon → y-bot)
All checks were successful
CI / Lint (pull_request) Successful in 56s
CI / Build (pull_request) Successful in 1m38s
CI / Secret scan (pull_request) Successful in 22s
CI / PR size check (pull_request) Successful in 7s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
В меню «На сервере» аватарка бралась по player.skin. Если в БД legacy
skin_bacon-hair (которого нет) — показывался бекон. Теперь невалидный
скин (не в MIXAMO_SKINS) → аватар skin_y-bot, как и 3D-модель в игре.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-15 00:53:53 +03:00
min
71139def77 fix(skin): валидация скина из БД — fallback на y-bot для legacy
All checks were successful
CI / Lint (pull_request) Successful in 57s
CI / Build (pull_request) Successful in 1m28s
CI / Secret scan (pull_request) Successful in 19s
CI / PR size check (pull_request) Successful in 5s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Бэкенд отдаёт skin_bacon-hair как дефолт (22+ юзеров в БД с legacy R15),
которого больше нет. Теперь если скин не в MIXAMO_SKINS (80 валидных) и
не customskin: → fallback на skin_y-bot. Персонаж всегда загружается.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-15 00:19:36 +03:00
min
2294981597 feat(player): вертикальная лестница ladder_vertical + лазание
- перенос из студии: ladder-mode, climb_up/climb_down, climb_to_top
- предзагрузка climb-анимаций (нет дёрга 180° при входе)
- заморозка позы на месте без исчезания скина
- гистерезис выхода, толщина лестницы 0.12
- climb_to_top вылезание на площадку 4с с заморозкой физики

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-14 23:57:19 +03:00
min
42b3c26382 feat(anim): падение с края (fall_off) + coyote-фильтр спуска по лестнице
- fall_off_air/fall_off_land при сходе с возвышенности без Space
- coyote-фильтр по высоте падения (<1.3 блока → walk, не jump_air)
  убирает мигание анимаций при спуске по лестнице из блоков
- jump_fwd_land / jump_run_land speedRatio 0.5 (присед виден)
- land короче при движении (без скольжения), полный при остановке
- компенсация Hips drop в land-фазах (ступни не уходят под пол)

Все типы прыжка работают: in_place / forward / run / fall_off
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-14 21:49:37 +03:00
min
6782a42ba3 feat(anim): прыжок в беге (jump_run 3 фазы, Shift+движение)
- jump_run_anticipate/air/land из Mixamo Running Jump
- _jumpKind=run когда Shift+WASD в момент Space
- speedRatio=0.71 для jump_run_air (синхрон 0.73с)
- три типа: in_place / forward (шаг) / run (бег)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-14 21:07:44 +03:00
min
4db93592d2 feat(anim): прыжок вперёд при движении (jump_fwd 3 фазы)
- jump_fwd_anticipate/air/land из Mixamo Jump (прыжок с разбега)
- _jumpKind=forward когда нажата WASD в момент Space
- speedRatio=0.59 для jump_fwd_air (синхрон с физикой 0.73с, без велосипеда)
- in_place вариант остаётся для прыжка на месте

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-14 20:34:56 +03:00
min
eef7008416 feat(anim): 3-фазная анимация прыжка на месте (anticipate + air + land)
- jump_anticipate (0.375с): присед перед прыжком, физика заблокирована,
  Hips опускается визуально
- jump_air (0.975с): полёт без Hips.Y подъёма (физика управляет _modelRoot)
- jump_land (0.56с): амортизация при приземлении, Hips опускается
  относительно maxY (никогда не выше bind — иначе ноги повиснут в воздухе)
- Mixamo Jumping разрезан на 3 GLB через scripts/split_clip.js
- Blender pipeline для FBX→GLB через scripts/fbx2glb_blender.py + strip_anim_channels.js
- GameLoadingScreen убран при старте плеера (по умолчанию игра открывается сразу)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-14 20:25:30 +03:00
min
308b183db1 fix(skin): cache-bust character-assets URLs (#30)
All checks were successful
CI / Lint (push) Successful in 54s
CI / Build (push) Successful in 1m29s
CI / Secret scan (push) Successful in 1m21s
CI / PR size check (push) Has been skipped
CI / Deploy to S1 + S2 (push) Successful in 2m55s
2026-06-14 13:43:18 +00:00
min
fc45d819e0 fix(skin): cache-bust query ?v=20260614 for character-assets URLs
All checks were successful
CI / Lint (pull_request) Successful in 55s
CI / Build (pull_request) Successful in 1m29s
CI / Secret scan (pull_request) Successful in 1m36s
CI / PR size check (pull_request) Successful in 10s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
After backend CORS rollout users had stale CORS-failure cached for
Mixamo GLB. Adding a query suffix forces browsers to re-fetch the URL
instead of replaying the cached failure.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-14 16:34:31 +03:00
min
6c07a9f679 Merge pull request 'feat(player): crouch animations + fullscreen + skin from DB' (#29) from feat/crouch-animations-fullscreen-2026-06-14 into main
All checks were successful
CI / Lint (push) Successful in 54s
CI / Build (push) Successful in 1m35s
CI / Secret scan (push) Successful in 20s
CI / PR size check (push) Has been skipped
CI / Deploy to S1 + S2 (push) Successful in 3m0s
2026-06-14 12:40:42 +00:00
min
ca1ce23205 feat(player): crouch animation system + fullscreen + skin from DB
All checks were successful
CI / Lint (pull_request) Successful in 57s
CI / Build (pull_request) Successful in 1m33s
CI / Secret scan (pull_request) Successful in 44s
CI / PR size check (pull_request) Successful in 6s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Этап 1 плана анимаций (ANIMATIONS_PLAN.md):

CROUCH (Ctrl):
- При зажатии Ctrl персонаж приседает, AABB → 0.45
- Скорость в crouch = 0.45×walk, crouch имеет приоритет над sprint
- Анимации: crouch_enter (one-shot) → crouch_idle / crouch_walk
- При вставании: crouch_to_stand (one-shot, если не движется)
- Y-drop для разных Mixamo-клипов (crouch_idle: -0.45, walk: -0.25)
- Anti-flicker debounce 120ms в MixamoAnimator

FULLSCREEN + СТАРТ-ЭКРАН:
- При запуске игры показывается оверлей "Нажми чтобы играть"
- Клик → requestFullscreen() → Chrome блокирует Ctrl+W/D/T/R/S и др.
- В fullscreen Esc отдаётся браузеру (выход), меню открывается на Tab
- Без fullscreen — Esc открывает меню как обычно
- BottomBar динамически показывает Esc/Tab в зависимости от режима

СКИН ЮЗЕРА:
- Приоритет: URL #skin=<id> → БД (rublox_equipped_skin) → localStorage → skin_y-bot
- В Esc-меню "Участники" Mixamo-скины грузят PNG с /character-assets/skins/

MIXAMO ANIMATOR:
- Полный класс с lazy-loading 35 состояний
- AnimationGroup loop=true через onAnimationGroupEnd safety-net
- crossFadeFrom для плавных переходов
- Жёсткий stop всех не-current групп → нет фантомных анимаций
2026-06-14 15:29:13 +03:00
min
831b525cfc Merge pull request 'restore: Mixamo + dev-skin через URL #skin=' (#28) from restore/mixamo-skin-2026-06-14 into main
All checks were successful
CI / Lint (push) Successful in 54s
CI / Build (push) Successful in 1m31s
CI / Secret scan (push) Successful in 19s
CI / PR size check (push) Has been skipped
CI / Deploy to S1 + S2 (push) Successful in 3m3s
2026-06-14 08:11:26 +00:00
min
dbdd61b4d6 feat(player): dev-skin через URL #skin= + убран beforeunload
All checks were successful
CI / Lint (pull_request) Successful in 55s
CI / Build (pull_request) Successful in 1m34s
CI / Secret scan (pull_request) Successful in 27s
CI / PR size check (pull_request) Successful in 10s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
LOCAL DEV: при запуске на localhost плеер берёт скин из:
1) hash-параметра #skin=<id> (сайт 3000 передаёт его при play-ticket
   через buildPlayerUrl(gameId, ticket, selectedSkin))
2) localStorage самого плеера (rublox_selected_skin)
3) дефолт skin_y-bot

Это нужно потому что:
- localStorage на :5173 (плеер) и :3000 (сайт) — РАЗНЫЕ хранилища
- В прод-БД пока legacy-скины (skin_sigma-labubu и др.), пока feature-flag
  RUBLOX_NEW_SKINS_AVAILABLE=false плеер не должен в неё лезть локально

PROD: только БД (rublox_equipped_skin) — поведение не меняется.

Также убран beforeunload-prompt: системное окно браузера невозможно
стилизовать (Chrome игнорирует кастомный текст с 2017), а уродливое
окно мешало. Случайное закрытие вкладки теперь без подтверждения.
2026-06-14 11:02:47 +03:00
min
8047cd366c Revert "Merge pull request 'revert: ����� Mixamo skin support' (#27) from revert/mixamo-skin-2026-06-13 into main"
This reverts commit 62ff0b01007684ed9ffdf6e550f7d257f58c3f9e, reversing
changes made to 830f4b8f4a2055e5e596a95b3268e30619c34724.
2026-06-14 11:02:25 +03:00
min
62ff0b0100 Merge pull request 'revert: ����� Mixamo skin support' (#27) from revert/mixamo-skin-2026-06-13 into main
All checks were successful
CI / Lint (push) Successful in 56s
CI / Build (push) Successful in 1m32s
CI / Secret scan (push) Successful in 20s
CI / PR size check (push) Has been skipped
CI / Deploy to S1 + S2 (push) Successful in 2m57s
2026-06-13 09:56:56 +00:00
min
91870d7a09 Revert "feat(skin): Mixamo 80 + fallback �� legacy R15 (#26)"
All checks were successful
CI / Lint (pull_request) Successful in 55s
CI / Build (pull_request) Successful in 1m41s
CI / Secret scan (pull_request) Successful in 21s
CI / PR size check (pull_request) Successful in 6s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
This reverts commit 830f4b8f4a2055e5e596a95b3268e30619c34724, reversing
changes made to 7d6e14a08fe2fcf0709a846f9a5efba536dd7184.
2026-06-13 12:50:26 +03:00
min
830f4b8f4a feat(skin): Mixamo 80 + fallback �� legacy R15 (#26)
All checks were successful
CI / Lint (push) Successful in 57s
CI / Build (push) Successful in 1m31s
CI / Secret scan (push) Successful in 20s
CI / PR size check (push) Has been skipped
CI / Deploy to S1 + S2 (push) Successful in 3m3s
2026-06-13 07:38:22 +00:00
min
94da0e1409 feat(skin): Mixamo-палитра 80 скинов + fallback на legacy R15
All checks were successful
CI / Lint (pull_request) Successful in 56s
CI / Build (pull_request) Successful in 1m38s
CI / Secret scan (pull_request) Successful in 25s
CI / PR size check (pull_request) Successful in 8s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Что:
- _resolveModelSource:
  * Mixamo (skin_y-bot/x-bot/eve/...) → /character-assets/skins/<id>.glb
    (с rublox-site, non-humanoid-rigged kind)
  * Legacy R15 (skin_bacon-hair, skin_sigma-labubu и др.) — сохранена
    старая ветка через manifest + /kubikon-assets/. Это нужно пока
    бэк storys работает в legacy-режиме (RUBLOX_NEW_SKINS_AVAILABLE != true).
- skinFolderRef.current default: skin_bacon-hair → skin_y-bot
- BabylonScene._playerModelType default + миграция character-* → skin_y-bot
- PlayerController._modelTypeId default → skin_y-bot
- MultiplayerSync: все дефолты → skin_y-bot

LOCAL DEV:
- На localhost плеер сначала пробует localStorage('rublox_selected_skin')
  (тот же ключ что в rublox-site), потом БД. Это позволяет тестить выбор
  скина в сайте без записи в прод-БД.

Зависит от:
- PR storys (новый бэк-резолв + feature-flag)
- PR user (endpoint /<id>/gender)
- Заливки 80 GLB на rublox.pro/character-assets/skins/ (отдельная инфра-задача)
2026-06-13 10:24:37 +03:00
min
7d6e14a08f Merge pull request '����: ����� let _lsMirror � worker ����� ���� ��������� ������' (#25) from fix/env-production-ci into main
All checks were successful
CI / Lint (push) Successful in 54s
CI / Build (push) Successful in 1m29s
CI / Secret scan (push) Successful in 26s
CI / PR size check (push) Has been skipped
CI / Deploy to S1 + S2 (push) Successful in 2m58s
2026-06-11 19:05:38 +00:00
min
494ccd2358 merge main (фикс дубля _lsMirror)
All checks were successful
CI / Lint (pull_request) Successful in 54s
CI / Build (pull_request) Successful in 1m28s
CI / Secret scan (pull_request) Successful in 21s
CI / PR size check (pull_request) Successful in 6s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
2026-06-11 21:56:37 +03:00
min
1d0be0fa6a fix(player): КРИТ — убрать дубль let _lsMirror/_achUnlocked/_lsChangeHandlers в worker (SyntaxError рушил весь скриптинг)
Из merge остались два блока объявлений задачи 20 → 'Identifier _lsMirror already declared' в Web Worker → ВСЕ игры запускались без скриптов. Убрал переобъявление во втором блоке.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 21:56:23 +03:00
min
c05ab68e6b Merge pull request '�������/������� (������� �� �������) + realtime �� game.rublox.pro' (#24) from fix/env-production-ci into main
All checks were successful
CI / Lint (push) Successful in 57s
CI / Build (push) Successful in 1m30s
CI / Secret scan (push) Successful in 19s
CI / PR size check (push) Has been skipped
CI / Deploy to S1 + S2 (push) Successful in 2m55s
2026-06-09 22:41:21 +00:00
min
39eae607e1 merge main (синхрон перед PR графики плеера)
All checks were successful
CI / Lint (pull_request) Successful in 57s
CI / Build (pull_request) Successful in 1m31s
CI / Secret scan (pull_request) Successful in 19s
CI / PR size check (pull_request) Successful in 6s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
2026-06-10 01:29:15 +03:00
min
ccf76d539b feat(player): графика/эффекты (фича-парность со студией) + realtime на game.rublox.pro
GraphicsManager (постобработка/материалы/API game.graphics) — паритет со студией,
применяется при загрузке игры если автор настроил. Новые материалы chrome/water/
iridescent. Realtime-эндпоинт переведён на game.rublox.pro (S1 NPM прямо, без
hop через S2 — чинит разрывы WebSocket). MultiplayerSync улучшен.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 01:29:00 +03:00
min
a5e1558c2d feat(player): ������������� �� ������� (Lua + JS-API + Roblox-������ + LoadingOverlay)
All checks were successful
CI / Lint (push) Successful in 54s
CI / Build (push) Successful in 1m30s
CI / Secret scan (push) Successful in 20s
CI / PR size check (push) Has been skipped
CI / Deploy to S1 + S2 (push) Successful in 2m56s
2026-06-09 22:01:51 +00:00
min
f5a96fbec0 fix(player): задача 05 — красивый экран загрузки ИГРЫ при входе (а не в студии)
Главное по задаче 05: переделан React loading-оверлей в KubikonPlayer (тот,
что игрок видит после клика «Играть» пока грузится игра). Новый компонент
GameLoadingScreen: Ken Burns фон + карточка-витрина + название места + автор
+ verified-галочка + прогресс-бар (реальный 0→100%) + спиннер. Данные:
project_data.scene.loadingScreen (настройки автора из студии) → мета игры
(title/thumbnail/автор) → дефолт. 0 ошибок, проверено headless.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 19:46:20 +03:00
min
247a5703c9 feat(player): задача 05 — экран загрузки (Ken Burns) — фича-парность со студией
Порт LoadingScreenOverlay (Ken-Burns/4 стиля/карточка/verified) + старт-экран
при входе в Play + API game.loading.setBackground/isVisible/onHide. Идентично
студии. worker SOURCE синтаксис проверен. Проверено headless в плеере (0 ошибок).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 19:34:55 +03:00
min
3330715781 Merge pull request 'fix(player): .env.production � git � CI ������� ��� VITE_API_BASE (����� ������� �� /app)' (#23) from fix/env-production-ci into main
All checks were successful
CI / Lint (push) Successful in 56s
CI / Build (push) Successful in 1m32s
CI / Secret scan (push) Successful in 24s
CI / PR size check (push) Has been skipped
CI / Deploy to S1 + S2 (push) Successful in 3m0s
2026-06-07 15:49:11 +00:00
min
f4a1feb41d merge main into fix/env-production-ci
All checks were successful
CI / Lint (pull_request) Successful in 1m4s
CI / Build (pull_request) Successful in 1m33s
CI / Secret scan (pull_request) Successful in 20s
CI / PR size check (pull_request) Successful in 6s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
2026-06-07 18:45:39 +03:00
min
71f9d4dd11 fix(player): закоммитить .env.production — CI собирал плеер без VITE_API_BASE
All checks were successful
CI / Lint (pull_request) Successful in 56s
CI / Build (pull_request) Successful in 1m31s
CI / Secret scan (pull_request) Successful in 20s
CI / PR size check (pull_request) Successful in 6s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Корень инцидента 2026-06-07: .env.production был в .gitignore → CI-сборка
без VITE_API_BASE → API base падал на window.location.origin (rublox.pro)
вместо minecraftia-school.ru. redeem-ticket уходил на rublox.pro/api-user
(нет такого) → плеер не получал JWT → выбивал на /app через секунду.
Файл содержит только публичные URL, секретов нет.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 18:41:27 +03:00
min
84fd2d996e Merge pull request 'ci: redeploy player (deploy S2)' (#21) from ci/redeploy-player into main
All checks were successful
CI / Lint (push) Successful in 54s
CI / Build (push) Successful in 1m31s
CI / Secret scan (push) Successful in 20s
CI / PR size check (push) Has been skipped
CI / Deploy to S1 + S2 (push) Successful in 2m57s
2026-06-07 15:11:36 +00:00
min
5a6a222c78 ci: redeploy player (deploy-key + build perms S2)
All checks were successful
CI / Lint (pull_request) Successful in 56s
CI / Build (pull_request) Successful in 1m31s
CI / Secret scan (pull_request) Successful in 20s
CI / PR size check (pull_request) Successful in 6s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 18:06:49 +03:00
min
66d74b823f ������ 14/16/20/40/44: vehicle, ����, ����������, floaters, ��������� (#20)
Some checks failed
CI / Lint (push) Successful in 56s
CI / Build (push) Successful in 1m30s
CI / Secret scan (push) Successful in 51s
CI / PR size check (push) Has been skipped
CI / Deploy to S1 + S2 (push) Failing after 2m33s
2026-06-07 14:09:57 +00:00
min
2847136819 ci: re-run (secret-scan упал на flaky GitHub 504 при install trufflehog)
All checks were successful
CI / Lint (pull_request) Successful in 54s
CI / Build (pull_request) Successful in 1m36s
CI / Secret scan (pull_request) Successful in 23s
CI / PR size check (pull_request) Successful in 6s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 17:01:37 +03:00
min
270478b133 merge main into feat/vehicle-task14 (sync для мержа PR)
Some checks failed
CI / Lint (pull_request) Successful in 55s
CI / Build (pull_request) Successful in 1m33s
CI / Secret scan (pull_request) Failing after 18s
CI / PR size check (pull_request) Successful in 6s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
2026-06-07 16:55:33 +03:00
min
fed48dd701 fix(player): убрать self-assign text=text в FloaterManager (lint error, блокировал CI)
All checks were successful
CI / Lint (pull_request) Successful in 56s
CI / Build (pull_request) Successful in 1m33s
CI / Secret scan (pull_request) Successful in 27s
CI / PR size check (pull_request) Successful in 8s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 16:48:19 +03:00
min
4364af6e4e ci: проверка после фикса раннера
Some checks failed
CI / Lint (pull_request) Failing after 59s
CI / Build (pull_request) Successful in 1m30s
CI / Secret scan (pull_request) Successful in 20s
CI / PR size check (pull_request) Successful in 6s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 16:42:18 +03:00
min
f452e3794e ci: перезапуск после фикса раннера
Some checks failed
CI / Lint (pull_request) Failing after 38s
CI / Build (pull_request) Failing after 42s
CI / Secret scan (pull_request) Failing after 39s
CI / PR size check (pull_request) Failing after 29s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 15:28:07 +03:00
min
37d1acbba1 fix(player): порт — self.delete снимает interact-подсказку
Some checks failed
CI / Lint (pull_request) Failing after 35s
CI / Build (pull_request) Failing after 29s
CI / Secret scan (pull_request) Failing after 32s
CI / PR size check (pull_request) Failing after 33s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 14:59:26 +03:00
min
5f789764a6 fix(player): порт — инвентарь hotbar-first + поднят над подсказкой
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 14:51:28 +03:00
min
4cc33daa1a feat(player): порт задачи 44 — drag-drop инвентарь
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 14:45:26 +03:00
min
d36059e5ce fix(player): порт — бластер от 3-го лица стреляет в точку клика
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 14:01:15 +03:00
min
909af7a5d8 fix(player): порт — NPC pickable+npcId для попаданий оружия (авто-floater)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 13:49:07 +03:00
min
08143b837c feat(player): порт — авто-floater над мобами + урон NPC от оружия (задача 40 доп)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 13:41:45 +03:00
min
8f229e2cfb feat(player): порт задачи 40 — damage floaters (game.fx.damageFloater)
FloaterManager + fx.damageFloater API/обработчик. Прогон 2676: стек -25×10,
мана -50, 0 ошибок.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 11:05:28 +03:00
min
3eee24ff48 fix(player): mainMenu.show подхватывает opts.onPlay/onShow/onHide (кнопка ИГРАТЬ не запускала игру)
show() игнорировал колбэки из опций — onPlay из mainMenu.show({onPlay}) не
регистрировался, кнопка ИГРАТЬ ничего не делала. Теперь опции-колбэки пушатся
в _onPlay/_onShow/_onHide.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 12:17:42 +03:00
min
d08497ef3b fix(player): scene.setLabel — import LabelManager вместо require (require крашит в браузере)
ReferenceError: require is not defined при game.self.setLabel/scene.setLabel
в плеере. Заменён require('./LabelManager') на статический import (как в студии).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 11:56:34 +03:00
min
b87d1e2525 feat(player): порт задачи 20 — лидерборды + достижения
LeaderstatsManager + AchievementsManager скопированы в плеер, интегрированы
в BabylonScene/worker/GameRuntime (те же точки, что в студии): HUD-таблица,
toast, кубок+страница, bindToStat, сохранение прогресса в БД (savegame, JWT),
мост onChange→worker. Прогон 2616 в плеере: таблица в DOM, 0 ошибок. Полная
фича-парность задачи 20.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 10:48:05 +03:00
min
192e721ba2 fix(player): SkyboxManager.hexToRgb короткий хекс #fff (порт)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 09:49:02 +03:00
min
88f4307308 fix(player): порт — анимация атаки NPC (setAttacking, R15 attack), scene.setVisible по ref
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 20:26:26 +03:00