e75121cb3d
docs(40) + feat(g41): «Платформер-приключение»
...
g40 docs: CodeBoth g40_main.
g41 паритет:
- Heartbeat py<-3 → LoadCharacter + lose
- BindableEvents CoinCollected/CheckpointReached/TreasureFound
- 5 g41_coin_N (id 10..14): Touched → CoinCollected:Fire + Destroy
- g41_cp: Touched → CheckpointReached:Fire → setSpawn(-0.5,7,28)
- g41_finish: Touched → TreasureFound:Fire → 'Победа! Сокровище и N монет!' + confetti
2026-06-09 22:49:14 +03:00
cce9d2e293
docs(39) + feat(g40): «Выживание от волн»
...
g39 docs: CodeBoth main+spot_1.
g40 паритет:
- WAVES=3, count=wave+2 (3,4,5 врагов)
- Враги по кругу radius=10 (cos/sin), npc.follow('player')
- BindableEvent EnemyClicked(ref)
- __rbxl_npc_on_click(ref, fn) — каждый враг шлёт ref в общий event
- Главный проверяет dist<5, npc.remove + explosion + aliveInWave--
- 0 живых → task.delay 2 startWave (forward-decl)
- 3 волны → 'Победа!' + confetti
2026-06-09 22:46:21 +03:00
b42685521c
docs(38) + feat(g39): «Башня — стройка»
...
g38 docs: CodeBoth main+tile_1.
g39 паритет:
- STEPS=8, placed counter
- BindableEvent BlockPlaced(n)
- 8 g39_spot_N: Heartbeat distance(4) → '[E] Поставить блок'
E → CanCollide=true, Transparency=0, Color коричневый,
BlockPlaced:Fire(n)
- Главный: n=placed+1? placed++; иначе 'Сначала поставь ниже!'
- 8 → 'Победа!' + confetti
2026-06-09 22:41:55 +03:00
0fcc5b85d0
docs(37) + feat(g38): «Музыкальная игра»
...
g37 docs: CodeBoth main+spike_1+cp+finish.
g38 паритет:
- SOUNDS [coin,jump,click,hit], SEQ [1,3,2,4,1]
- task.delay 1 + i*0.8 → play sound + 'Нота N из 5'
- После последней task.delay → canPress=true + 'Повтори!'
- BindableEvent NotePressed(n)
- 4 g38_tile_N: Heartbeat distance(3) → '[E] Сыграть ноту'
E → tileSound + sparks + NotePressed:Fire(n)
- Правильная → playerStep++, при #SEQ → win + confetti
- Ошибка → playerStep=0 + lose + 'Слушай снова'
2026-06-09 22:35:40 +03:00
f0025f0dad
docs(36) + feat(g37): «Полоса препятствий»
...
g36 docs: CodeBoth main+box_1.
g37 паритет:
- task.delay 0.2 ДвижПлатформа yoyo loop (x: -0.5 ↔ 3, 2с)
- Heartbeat: py<-3 → LoadCharacter + lose
- BindableEvents CheckpointReached/FinishReached
- 6 g37_spike_N: Touched → damage(25) + hit sound (i-frames 0.5с)
- g37_cp: Touched → CheckpointReached:Fire → setSpawn(-0.5,1,24)
- g37_finish: Touched → FinishReached:Fire → win + confetti
Shim: __rbxl_set_spawn(x,y,z).
2026-06-09 22:32:55 +03:00
b0bdfb6e29
docs(35) + feat(g36): «Головоломка с ящиками»
...
g35 docs: CodeBoth g35_main.
g36 паритет:
- onPlate[3] флаги, при всех true → win
- BindableEvent BoxMoved(i, on)
- g36_box_N: Heartbeat distance-check(3) → '[E] Двинуть ящик',
E: cell++ (wrap), TweenService Position.Z=ROW[cell], 0.4с,
Fire(i, newZ == 6)
2026-06-09 22:29:36 +03:00
92a9ef220d
docs(34) + feat(g35): «Прятки от NPC»
...
g34 docs: CodeBoth main+plant_1.
g35 паритет:
- SURVIVE=40c, NPC 'Искатель' speed=3 follow('player')
- __rbxl_timer_set каждый кадр
- dist<1.7 → LoadCharacter + 'Найден!' + lose (с throttle 2с)
- time>=40 → npc.stop + 'Победа!' + confetti + win
2026-06-09 22:25:20 +03:00
3e572e1136
docs(33) + feat(g34): «Сбор урожая»
...
g33 docs: CodeBoth g33_main.
g34 паритет:
- BindableEvent Harvested → score++ + coin sound, 6 → win + confetti
- 6 g34_plant_N: TweenService 5с растёт (Size+Position),
Completed → ripe=true + Color жёлтый
- Heartbeat distance-check (3) → __rbxl_hud_set '[E] Собрать'
- E: не ripe → 'Ещё не выросло!'; ripe → Harvested:Fire + Destroy
2026-06-09 22:22:03 +03:00
f3b0cabdbd
docs(32) + feat(g33): «Платформер с боссом»
...
g32 docs: CodeBoth main+cp_1.
g33 паритет:
- Heartbeat: py<-3 → LoadCharacter + lose
- При pz>24 + py>5 (на арене) — spawnNpc 'БОСС' hp=120 speed=2
- task.delay npc.follow('player') + setLabel 'БОСС HP: 120'
- __rbxl_npc_on_click(bossRef, onBossHit):
dist<5 → bossHp -= 20 + npc.damage + setLabel + sparks + hit
- __rbxl_npc_on_death → clear_label + 'Победа!' + confetti + win
2026-06-09 22:18:18 +03:00
4ca3800e49
docs(31) + feat(g32): «Гонка с кругами»
...
g31 docs: CodeBoth для g31_main.
g32 паритет:
- LAPS=2, CP_COUNT=4, nextCp/lap/time/won
- __rbxl_timer_set — паритет с game.ui.timer=N (формат mm:ss)
- __rbxl_hud_set 'race' — постоянная надпись 'Круг N/2 • чекпоинт M/4'
- Heartbeat: time += dt → timer update
- BindableEvent CheckpointReached(num)
- 4 g32_cp_N: Touched → CheckpointReached:Fire(N)
- При 2 кругах → 'ФИНИШ! Xc' + showText + confetti + win
Shim: __rbxl_timer_set(seconds).
2026-06-09 22:15:16 +03:00
901c249c29
docs(29) + feat(g31): «Защита базы»
...
g30 docs CodeBoth 4 скрипта.
g31:
- killed counter (GOAL=12) + leaked (MAX_LEAK=5)
- Heartbeat spawn враг каждые 2с в (random(-8,8), 1, 38),
spawn 'character-b' speed 2.5
- task.delay 0.3 npc.moveTo(0, 2) — к базе
- __rbxl_npc_on_click(ref, fn) → шлёт ref в общий BindableEvent
- При клике главный скрипт проверяет dist<5, наносит урон
- Каждые 0.4с проверка прорыва (z<4) → leaked++ + lose sound
- 12 убитых → 'Победа!' + confetti
- 5 прорывов → 'База разрушена!'
Shim: __rbxl_npc_moveto/__rbxl_npc_remove.
2026-06-09 22:11:15 +03:00
f69df55e3b
docs: CodeBoth урока 29 + feat(g30): полный паритет «Квест с заданиями»
...
g29 docs: 5 скриптов под CodeBoth (main, coin_1, shop, door, finish).
g30 паритет:
- stage 0→1→2→3→4 (talk/coin/flag/talk)
- setObjective через __rbxl_hud_set 50,8 цвет/размер
- NPC 'Старейшина' spawnNpc + npc_say на этапах
- BindableEvents Talk/CoinDone/FlagDone
- g30_npc: Heartbeat distance-check (4) + '[E] Поговорить' + InputBegan E
- g30_coin: Touched → CoinDone:Fire + Destroy (taken-флаг)
- g30_flag: Touched → FlagDone:Fire (fired-флаг)
- На stage 3: showText + confetti + win sound
2026-06-09 22:06:27 +03:00
ed23ec782c
docs: CodeBoth для урока 28 «Призрачные стены» (main+wall+finish)
2026-06-09 21:58:44 +03:00
b9473cca50
docs: CodeBoth для урока 27 «Двойной прыжок» (main+finish)
2026-06-09 21:51:37 +03:00
19c475f132
docs: CodeBoth для урока 26 «Магнит монет» (main+coin)
2026-06-09 21:48:31 +03:00
bc1214e600
docs: CodeBoth для урока 25 «Камера-облёт» (main+finish)
2026-06-09 21:45:14 +03:00
2a39fc2b99
docs: CodeBoth для урока 24 «Падающий мост» (main+plank+finish)
2026-06-09 21:38:24 +03:00
745e50703d
docs: CodeBoth для урока 23 «Переключатели» (main+lever+finish)
2026-06-09 21:34:59 +03:00
791cf2cde5
docs: CodeBoth для урока 22 «Зона опасности» (main+zone+heal+finish)
2026-06-09 21:31:22 +03:00
cbc4b87643
docs: CodeBoth для урока 21 «Преследователь» (main+finish)
2026-06-09 21:25:52 +03:00
d7478fe311
docs: CodeBoth для урока 20 «Имена над врагами» (g20_main)
2026-06-09 21:20:38 +03:00
3cdbbc5049
docs: CodeBoth для урока 19 «Лифт» (main+finish)
2026-06-09 20:28:37 +03:00
98e92b23a7
docs: CodeBoth для урока 18 «Качели» (main+finish)
2026-06-09 20:24:48 +03:00
b5ba62cca8
docs: CodeBoth для урока 17 «Ключ и сундук» (main+key+chest)
2026-06-09 20:15:54 +03:00
1a6a92b431
docs: CodeBoth для урока 16 «Лава-пол» (main+lava+finish)
2026-06-09 20:11:16 +03:00
662d0d06e4
docs: CodeBoth для урока 15 «Тир» (main+target)
2026-06-09 20:01:00 +03:00
2e1ee87ed6
docs: CodeBoth для урока 14 «Собери по тегам» (main+star)
2026-06-09 19:47:55 +03:00
1a3c8e66e6
docs: CodeBoth для урока 13 «Торговец» (main+counter+door+finish)
2026-06-09 19:37:05 +03:00
e0a457bd7a
docs: CodeBoth для урока 12 «Дверь по коду» (main+btn+finish)
2026-06-09 18:55:09 +03:00
b2f6b084df
docs: CodeBoth для урока 11 «Эхо-комната» (main+tile+finish)
2026-06-09 18:51:40 +03:00
3be10c3cf7
docs: CodeBoth для урока 10 «Прыжок-пружина» (main+tramp+finish)
2026-06-09 18:46:08 +03:00
4186b49be4
docs: CodeBoth для урока 9 «Светофор» (g9_main + g9_finish)
2026-06-09 18:42:14 +03:00
41e0f7b6a4
feat(wiki): добавил CodeBoth с Lua-параллелью к скриптам игр 1-8
...
Создан хелпер CodeBoth в docsLessons.jsx: оборачивает <Code> в
<LangTabs js={JS-код} lua={Lua-код из LUA_OVERRIDES}>. Юзер
переключает JS↔Lua вверху урока — код в статье меняется тоже.
Заменены 17 блоков <Code> в уроках игр 1-8 на <CodeBoth>:
- collect-coins (g1_main, g1_coin_1)
- platform-jump (g2_main, g2_finish)
- dont-fall (g3_main, g3_tile_1)
- button-door (g4_main, g4_button, g4_finish)
- maze (g5_main, g5_finish)
- color-tiles (g6_main, g6_tile_1)
- catch-falling (g7_main)
- run-to-finish (g8_main, g8_finish)
Для остальных игр (9-50) остался JS-only Code — заменим
по мере прохождения.
2026-06-09 18:24:16 +03:00
min
cb41ea0062
docs(studio): вики статья guide-loadingscreen + карточка #66 (задача 05, восстановление)
...
Восстановлена полная ветка работ (задачи 16/17/20/40/44 + UX) из c8a9618 +
применена задача 05 (Ken Burns экран загрузки). Карточки g5: skybox/leaderstats/
floaters/inventory/loadingscreen. Ошибки 'items.define/autoMobFloaters/setSkybox
is not a function' были из-за работы на служебной CI-ветке без задач 40/44.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 20:02:57 +03:00
min
9f2cca1a49
docs(studio): вики задача 44 — карточка #65 + статья «Сбор и сортировка (инвентарь drag-drop)»
...
Карточка g5 #65 guide-inventory (openProjectId 2685) + статья: items.define,
inventory.give/take, окно по I (сетка 8×5 + хотбар 9), drag-drop, стаки,
редкости, ПКМ-меню, tooltip, сортировка. 2 скрина (scene окно / play сбор).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 15:07:42 +03:00
min
48e2e83ef7
docs(studio): вики задача 40 — превью/скрин = кадр с облачками урона над зомби
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 14:22:11 +03:00
min
c20ac56895
docs(studio): вики задача 40 — обновлена под зомби-арену (бластер + autoMobFloaters + волны)
...
Карточка #64 «Зомби-арена — бластер и цифры урона» + статья переписана:
giveTool бластер, autoMobFloaters (авто-облачко над мобами), spawnNpc+follow
волны зомби, прицел в точку клика, ручной damageFloater (типы/стек/комикс).
Новые скрины scene/play (зомби-шутер).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 14:18:53 +03:00
min
c93070170b
docs(studio): вики задача 40 — карточка #64 + статья «Тренировочный полигон (цифры урона)»
...
Карточка g5 #64 guide-floaters (openProjectId 2676) + статья: game.fx.
damageFloater, типы (damage/crit/heal/mana/miss), стек stackKey, comicStyle,
object pool. 2 скрина (scene/play) в public/wiki.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 11:08:28 +03:00
min
1c976ee870
docs(studio): вики задача 20 — скрины (scene/play), page заменён на текст
...
Скриншоты сцены (редактор) и геймплея (таблица лидеров) в public/wiki.
Страница достижений описана текстом (отдельного скрина пока нет).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 10:09:43 +03:00
min
7bb789f1af
docs(studio): вики задача 20 — карточка #63 + статья «Сбор монет (лидерборды и достижения)»
...
Карточка g5 #63 guide-leaderstats (openProjectId 2616) + статья в docsLessons:
что получится, API leaderstats/achievements, 2 шага (таблица/достижения),
bindToStat, сохранение в БД. 3 скрина (scene/play/page) — донести вручную
(headless-студия не пускает после взлома, попрошу у пользователя).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 10:04:57 +03:00
min
8a7ab9aadf
docs(studio): вики задача 16 — карточка #62 + статья «Небесная демка»
...
Карточка g5 #62 guide-skybox (preview guide-skybox-scene.png, openProjectId
2541) + статья в docsLessons (что получится, API setSkybox/setClouds/setFog/
fadeTo, 3 шага, 4 скриншота день/ночь/космос) + иконка cloud в docsIcons.
Скрины в public/wiki (вне git) — на прод донести вручную при возврате CI.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 00:56:50 +03:00
min
2fda576e11
feat(14): Vehicle System V1+V2 — машины, на которых можно ездить
...
CI / Lint (pull_request) Successful in 1m9s
CI / Build (pull_request) Successful in 2m2s
CI / Secret scan (pull_request) Successful in 2m36s
CI / PR size check (pull_request) Successful in 8s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Система транспорта для Рублокс-студии (задача 14 Недели 4):
- VehicleManager — аркадная физика (газ/руль/тормоз/реверс), коллизия
через physics.moveAABB; GLB-кузов Kenney car-kit (колёса в модели).
- VehicleHud — графический спидометр-стрелка (SVG, 270° дуга) + передача D/R/N.
- Вход hold-F / выход E; камера follow/капот/кинематографичная (V циклит).
- game.scene.spawn(vehicle:car, opts) + onVehicleEnter/onVehicleExit.
- Звук мотора: низкочастотный рокот (бас-пила + шум + LFO-пульсация тактов),
pitch/громкость ∝ скорости — не воющий тон.
- Авто оседает на землю при спавне (_settle + повторы при поздней готовности
физики) — не висит/не тонет.
- Водитель скрывается за рулём; падение в бездну → выход + респавн.
- Производительность: addShadowCaster фильтрует мелкие/тонкие/огромный пол меши;
InstancedMesh без receiveShadows (фикс тормозов 5→50 FPS).
- Вики: карточка #61 «Такси-симулятор» + статья + 2 скриншота.
- incrementPlay(id, userId) — передаём user_id для self/user-cooldown.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@
2026-06-03 02:24:43 +03:00
min
f0e284878e
feat(13): главное меню игры (game.mainMenu)
...
CI / Lint (pull_request) Successful in 1m19s
CI / Build (pull_request) Successful in 2m6s
CI / Secret scan (pull_request) Successful in 2m36s
CI / PR size check (pull_request) Successful in 8s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Живое 3D-меню как в топ-играх Roblox: cinematic-камера облетает витрину,
патч-ноуты, логотип, кнопка ИГРАТЬ, музыка, блок управления.
- game.mainMenu.show/hide/setCamera/setPatchNotes/onShow/onPlay/onHide
- 4 режима камеры: cinematic(waypoints)/orbit/static/preset-cuts поверх camera.cutscene
- зацикливание облёта через onCutsceneDone (камера не вылетает за сцену)
- game.player.setInputBlocked экспортирован в worker + handler в runtime
- passthrough scene.mainMenu в toJSON/load
- вики g5 #60 guide-garage, тест-игра «Гараж Босса» id 2434 (GLB-машина Kenney)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 00:07:33 +03:00
min
ef29c11473
docs(12): финал вики Такси-босс (3 локации) + короткие описания карточек
...
CI / Lint (pull_request) Successful in 1m10s
CI / Build (pull_request) Successful in 2m7s
CI / Secret scan (pull_request) Successful in 2m37s
CI / PR size check (pull_request) Successful in 7s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Карточка guide-taxi: упоминание 3 локаций (гараж/город/магазин), описание
сжато до 1-2 предложений (как у соседних). Статья: триггер через GUI-кнопку,
интерьер магазина, Try на 4-ю локацию. Заодно сжато описание guide-zavod.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 22:53:51 +03:00
min
34060c90c3
feat(12): внутриигровой Loading Screen (game.loading)
...
CI / Lint (pull_request) Successful in 1m13s
CI / Build (pull_request) Successful in 2m3s
CI / Secret scan (pull_request) Successful in 2m35s
CI / PR size check (pull_request) Successful in 8s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Программный экран загрузки для перехода между мирами:
- game.loading.show(opts) → хэндл (setProgress/setText/setCover/close/onSkip/onComplete)
- game.loading.transition(opts) → Promise (фейковый прогресс за duration)
- cover sceneSnapshot, прогресс-бар+процент, спиннер, кнопка Пропустить, логотип
- blockInput + пауза симуляции, fadeIn/Out; tick независим от paused
- настройки проекта «Экран загрузки» (логотип/акцент/дефолты) + 3 сниппета
- LoadingScreenOverlay.js (новый DOM-оверлей), worker namespace loading,
cmd loading.* + _ensureLoadingScreen, serialize/load конфига в scene
- вики g5 #59 guide-taxi (карточка + урок), тест-игра «Такси-босс» id 2427
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 22:00:26 +03:00
min
ee1b7352b7
feat(11): placement mode — расстановка предметов (tycoon)
...
CI / Lint (pull_request) Successful in 1m15s
CI / Build (pull_request) Successful in 1m58s
CI / Secret scan (pull_request) Failing after 9s
CI / PR size check (pull_request) Successful in 6s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Движок: PlacementManager (тень-превью формой воксельной модели за курсором,
снап к сетке, стопка, проверка зоны и баланса, поворот R/колесо, ПКМ/Esc),
ShopInventoryUi (магазин-слоты, авто-серые при нехватке валюты); проводка
game.placement.* и game.inventoryUi.* в worker/GameRuntime/BabylonScene.
Попутные фиксы:
- TerrainManager: backFaceCulling=false — воксели не просвечивают (видна была
задняя грань сквозь переднюю);
- KubikonEditor: guard от потери userModels/scripts при частичной загрузке
(terrain догрузился, модели/скрипт нет → автосейв затирал) — критичный
фикс защиты данных для ВСЕХ игр;
- Hotbar: пустой инвентарь не показывает панель (глобальное правило);
- MinimapOverlay: миникарта только по флагу игры (не авто на больших картах);
- cleanup usermodel-инстансов при Stop.
Вики: карточка #58 + статья-урок «Мой завод» (g5 Разбор готовых игр),
openProjectId=2345, скриншоты залиты на прод.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 19:06:03 +03:00
76b2afd312
feat(10): живые 3D-надписи (attachFace) + витрина-лутбокс + вики
...
CI / Lint (pull_request) Failing after 5s
CI / PR size check (pull_request) Successful in 12s
CI / Secret scan (pull_request) Failing after 14m51s
CI / Build (pull_request) Failing after 14m52s
CI / Deploy to S1 + S2 (pull_request) Has been cancelled
Движок: LabelManager attachFace (текст плоско на грань примитива, FRONTSIDE
без зеркала), tilt, 5 пресетов, richText; GameRuntime scene.move/scene.rotate
для моделей и примитивов; ScriptSandboxWorker obj.move/obj.rotate в Instance-
proxy; InspectorPanel настройки label. Вики: карточка #57 guide-dynamic-label
(Часовая башня) + полная статья-урок с разбором attachFace/obj.move/format.money.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-01 21:15:54 +03:00
65aa26996d
feat(09): материал studs + окрашиваемый блок studs-block + лего-сет
...
Задача 09 «Studs материал» (лего-кружки):
- PrimitiveManager: material 'studs' — diffuse-текстура (серые кружки) × цвет
меша + normal map (выпуклость). Тайлинг _studsTiling по размеру меша
(STUD_UNIT=1, GRID=4), пересчёт в _recreateMesh при ресайзе. _studsDims на меше.
- InspectorPanel: «Studs» 5-й материал в палитре примитивов.
- BlockTypes: studs-block ('Окрашиваемые', colorable:true, normal, defaultColor).
- BlockManager: per-instance color через ThinInstance color buffer
(thinInstanceSetBuffer('color'), useVertexColors) — тысячи блоков любых цветов
один draw call. addBlock(x,y,z,type,color), _setBlockColorAt/setBlockColor,
serialize/loadFromArray с color, batch flush.
- GameRuntime: scene.setColor для блока (ref 'block:x,y,z'), spawn block с color.
- ScriptSandboxWorker: spawn блока прокидывает color.
- ModelTypes: лего-сет 19 compound-моделей (кирпичи/плиты/скаты/дерево/куст/
дом/машина/ступеньки/человечек) — все части material:'studs'.
- Вики: карточка g5 #56 «Лего-полигон» + урок guide-lego.
Текстуры: public/kubikon-assets/materials/studs_{diffuse,normal}.png (в .gitignore,
доставить на S2 build/ вручную). Проверено визуально: куб 6×6 кружков, 2×2 блока
разных цветов, лего-дом/дерево/машина.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 11:10:58 +03:00
97295c6c0d
docs(wiki): скриншоты в урок «Туториал — собери монетки»
...
CI / Lint (pull_request) Successful in 1m7s
CI / Build (pull_request) Successful in 1m59s
CI / Secret scan (pull_request) Successful in 2m30s
CI / PR size check (pull_request) Successful in 7s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Добавлены два <Shot> в урок guide-strelka:
- guide-strelka-play.png (геймплей со стрелкой-указателем) после «Что получится»
- guide-strelka-scene.png (сцена в редакторе) в начале «Шаг 1. Сцена»
Картинки лежат в public/wiki/ (исключён из git, доставляется отдельным
каналом ассетов), уже залиты на S2 build/wiki/.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 06:55:13 +03:00
d9a3cd73df
feat(wiki): урок «Туториал — собери монетки» (стрелка-указатель) в Разбор готовых игр
...
CI / Lint (pull_request) Successful in 1m6s
CI / Build (pull_request) Successful in 1m55s
CI / Secret scan (pull_request) Successful in 2m31s
CI / PR size check (pull_request) Successful in 7s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
- docsLessons.jsx: полный урок guide-strelka (game.fx.pointer, presets,
setTarget/update, onTouch) → hasLesson=true → карточка #55 активна.
- KubikonDocs.jsx: onError-фолбэк на превью карточки (нет скрина → иконка,
не битый img); .gameCard__noimg absolute-фон под img.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 05:09:24 +03:00