/**
 * docsGames.js — каталог 50 мини-игр-уроков вики Рублокса.
 *
 * Раздел K вики. Каждая игра — карточка: { id, num, title, stars, icon,
 * desc, mechanics, ready }.
 *  - num     — порядковый номер 1..50
 *  - stars   — сложность 1..3
 *  - icon    — имя SVG-иконки из docsIcons.jsx (НЕ эмодзи)
 *  - desc    — что получится в игре, 1-2 предложения
 *  - mechanics — список механик, которым учит игра
 *  - previewShot — (необязательно) имя файла из public/wiki/ для
 *                  превью на карточке. По умолчанию берётся
 *                  lessonN-result.png; задаётся, когда другой кадр
 *                  урока смотрится на карточке лучше.
 *  - ready   — есть ли подробный урок (пока у всех false — наполним позже)
 *
 * Группы:
 *   1-12  — самые простые
 *   13-28 — простые с механиками
 *   29-40 — средние
 *   41-50 — сложные
 */

export const GAME_GROUPS = [
    { id: 'g1', title: 'Группа 1 — Самые простые', stars: 1,
      hint: 'Постановка объектов, базовые скрипты, события, простые твины.' },
    { id: 'g2', title: 'Группа 2 — Простые с механиками', stars: 2,
      hint: 'NPC, инвентарь, теги, billboard, камера, констрейнты.' },
    { id: 'g3', title: 'Группа 3 — Средние', stars: 2,
      hint: 'Комбинации механик, GUI, состояние игры, NPC-логика.' },
    { id: 'g4', title: 'Группа 4 — Сложные', stars: 3,
      hint: 'Полные игры, мультиплеер, продвинутые системы.' },
    { id: 'g5', title: 'Разбор готовых игр', stars: 2,
      hint: 'Настоящие игры из студии по косточкам: камера и таблички, анимации интерфейса, модальные сцены и кастомные скины. У каждой — кнопка «Открыть оригинал в редакторе».' },
];

export const GAMES = [
    // ── Группа 1 — Самые простые ──────────────────────────────────
    { id: 'collect-coins', num: 1, group: 'g1', stars: 1, icon: 'coin',
      title: 'Собери монетки',
      desc: 'Ходишь по уровню и собираешь жёлтые сферы, счёт растёт.',
      mechanics: ['события касания', 'счётчик очков', 'удаление объектов'],
      ready: false },
    { id: 'platform-jump', num: 2, group: 'g1', stars: 1, icon: 'jump',
      title: 'Прыгай по платформам',
      desc: 'Паркур из примитивов — допрыгай до финиша, не упав вниз.',
      mechanics: ['примитивы-платформы', 'точка спавна', 'финиш'],
      ready: false },
    { id: 'dont-fall', num: 3, group: 'g1', stars: 1, icon: 'hole',
      title: 'Не упади',
      desc: 'Платформы исчезают под ногами — нужно всё время убегать.',
      mechanics: ['таймеры', 'исчезновение объектов', 'onTouch'],
      ready: false },
    { id: 'button-door', num: 4, group: 'g1', stars: 1, icon: 'door',
      title: 'Кнопка-открывашка',
      desc: 'Нажми кнопку клавишей E — и откроется дверь в следующую комнату.',
      mechanics: ['ProximityPrompt (E)', 'твины', 'перемещение объектов'],
      ready: false },
    { id: 'maze', num: 5, group: 'g1', stars: 1, icon: 'maze',
      title: 'Лабиринт',
      desc: 'Найди путь из стен-кубов от старта к выходу из лабиринта.',
      mechanics: ['постройка из блоков', 'спавн', 'триггер-финиш'],
      // на карточке лучше виден лабиринт сверху — берём второй скрин урока
      previewShot: 'lesson5-scene.png',
      ready: false },
    { id: 'color-tiles', num: 6, group: 'g1', stars: 1, icon: 'palette',
      title: 'Цветные плитки',
      desc: 'Наступаешь на плитки на полу — и они меняют свой цвет.',
      mechanics: ['onTouch', 'setColor', 'примитивы-плитки'],
      ready: false },
    { id: 'catch-falling', num: 7, group: 'g1', stars: 1, icon: 'box',
      title: 'Поймай падающее',
      desc: 'С неба падают кубы — лови их, пока не упали на землю.',
      mechanics: ['спавн с таймером', 'физика падения', 'счёт'],
      ready: false },
    { id: 'run-to-finish', num: 8, group: 'g1', stars: 1, icon: 'flag',
      title: 'Беги к финишу',
      desc: 'Гонка на время: добеги до финишной черты как можно быстрее.',
      mechanics: ['таймер', 'триггер-финиш', 'game.ui'],
      ready: false },
    { id: 'traffic-light', num: 9, group: 'g1', stars: 1, icon: 'light',
      title: 'Светофор',
      desc: 'Стой на красный, беги на зелёный — успей дойти до конца.',
      mechanics: ['лампы', 'таймеры', 'проверка движения'],
      ready: false },
    { id: 'spring-jump', num: 10, group: 'g1', stars: 1, icon: 'spring',
      title: 'Прыжок-пружина',
      desc: 'Батуты подбрасывают тебя всё выше — допрыгни до верхней площадки.',
      mechanics: ['пружины (spring)', 'boostJump', 'onTouch'],
      ready: false },
    { id: 'echo-room', num: 11, group: 'g1', stars: 1, icon: 'sound',
      title: 'Эхо-комната',
      desc: 'Наступаешь на плитку — играет звук. Собери мелодию из шагов.',
      mechanics: ['game.sound', 'onTouch', '3D-звук'],
      ready: false },
    { id: 'code-door', num: 12, group: 'g1', stars: 1, icon: 'keypad',
      title: 'Дверь по коду',
      desc: 'Введи правильное число в поле ввода — и дверь откроется.',
      mechanics: ['GUI-поле ввода', 'onSubmit', 'твины'],
      ready: false },

    // ── Группа 2 — Простые с механиками ───────────────────────────
    { id: 'trader', num: 13, group: 'g2', stars: 2, icon: 'trader',
      title: 'Торговец',
      desc: 'Поговори с NPC-торговцем по клавише E и получи от него предмет.',
      mechanics: ['NPC', 'диалоги', 'инвентарь'],
      ready: false },
    { id: 'collect-by-tag', num: 14, group: 'g2', stars: 2, icon: 'star',
      title: 'Собери по тегам',
      desc: 'Собери все объекты, помеченные тегом «звезда», на уровне.',
      mechanics: ['теги', 'getTagged', 'счётчик'],
      ready: false },
    { id: 'shooting-range', num: 15, group: 'g2', stars: 2, icon: 'crosshair',
      title: 'Тир',
      desc: 'Стреляй по мишеням лучом-raycast и считай выбитые очки.',
      mechanics: ['raycast', 'onClick', 'счёт'],
      ready: false },
    { id: 'lava-floor', num: 16, group: 'g2', stars: 2, icon: 'lava',
      title: 'Лава-пол',
      desc: 'Пол наносит урон — прыгай только по безопасным островкам.',
      mechanics: ['урон по касанию', 'HP', 'платформы'],
      ready: false },
    { id: 'key-chest', num: 17, group: 'g2', stars: 2, icon: 'key',
      title: 'Ключ и сундук',
      desc: 'Найди ключ на уровне, подбери его и открой запертый сундук.',
      mechanics: ['инвентарь', 'has()', 'ProximityPrompt'],
      ready: false },
    { id: 'swing', num: 18, group: 'g2', stars: 2, icon: 'swing',
      title: 'Качели',
      desc: 'Запрыгни на качели-констрейнт и катайся туда-сюда.',
      mechanics: ['констрейнт-петля (hinge)', 'физика'],
      ready: false },
    { id: 'elevator', num: 19, group: 'g2', stars: 2, icon: 'elevator',
      title: 'Лифт',
      desc: 'Платформа-лифт возит тебя между этажами здания.',
      mechanics: ['твины', 'движущаяся платформа', 'триггеры'],
      ready: false },
    { id: 'enemy-names', num: 20, group: 'g2', stars: 2, icon: 'tag',
      title: 'Имена над врагами',
      desc: 'У каждого врага над головой висит метка с именем и его HP.',
      mechanics: ['billboard-метки', 'NPC', 'HP'],
      ready: false },
    { id: 'chaser', num: 21, group: 'g2', stars: 2, icon: 'chase',
      title: 'Преследователь',
      desc: 'NPC гонится за тобой по всему уровню — убегай и прячься.',
      mechanics: ['NPC follow', 'distance', 'onTick'],
      ready: false },
    { id: 'danger-zone', num: 22, group: 'g2', stars: 2, icon: 'warning',
      title: 'Зона опасности',
      desc: 'Войдёшь в триггер-зону — начинаешь терять здоровье.',
      mechanics: ['триггер-зона', 'onTouch/onUntouch', 'урон'],
      ready: false },
    { id: 'switches', num: 23, group: 'g2', stars: 2, icon: 'lever',
      title: 'Переключатели',
      desc: 'Активируй три рычага в правильном порядке, чтобы пройти дальше.',
      mechanics: ['ProximityPrompt', 'состояние', 'проверка порядка'],
      ready: false },
    { id: 'falling-bridge', num: 24, group: 'g2', stars: 2, icon: 'bridge',
      title: 'Падающий мост',
      desc: 'Мост собран из исчезающих платформ — беги, пока он не рухнул.',
      mechanics: ['таймеры', 'исчезновение', 'onTouch'],
      ready: false },
    { id: 'flyby-camera', num: 25, group: 'g2', stars: 2, icon: 'camera',
      title: 'Камера-облёт',
      desc: 'При старте игры камера красиво облетает весь уровень.',
      mechanics: ['game.camera.cutscene', 'onCutsceneDone'],
      ready: false },
    { id: 'coin-magnet', num: 26, group: 'g2', stars: 2, icon: 'magnet',
      title: 'Магнит монет',
      desc: 'Монеты сами летят к игроку, когда он подходит близко.',
      mechanics: ['твин к позиции', 'distance', 'onTick'],
      ready: false },
    { id: 'double-jump', num: 27, group: 'g2', stars: 2, icon: 'doubleArrow',
      title: 'Двойной прыжок',
      desc: 'Паркур, где не пройти без двойного прыжка в воздухе.',
      mechanics: ['setDoubleJump', 'платформы', 'финиш'],
      ready: false },
    { id: 'ghost-walls', num: 28, group: 'g2', stars: 2, icon: 'ghost',
      title: 'Призрачные стены',
      desc: 'Некоторые стены становятся проходимыми — найди секретный путь.',
      mechanics: ['passThrough', 'триггеры', 'секреты'],
      ready: false },

    // ── Группа 3 — Средние ────────────────────────────────────────
    { id: 'shop', num: 29, group: 'g3', stars: 2, icon: 'cart',
      title: 'Магазин',
      desc: 'GUI-список товаров — покупай предметы за собранные монеты.',
      mechanics: ['GUI-список', 'экономика', 'инвентарь'],
      ready: false },
    { id: 'quest-tasks', num: 30, group: 'g3', stars: 2, icon: 'scroll',
      title: 'Квест с заданиями',
      desc: 'NPC выдаёт цепочку заданий — выполни их все по очереди.',
      mechanics: ['NPC-диалоги', 'состояние квеста', 'события'],
      ready: false },
    { id: 'base-defense', num: 31, group: 'g3', stars: 2, icon: 'shield',
      title: 'Защита базы',
      desc: 'Враги идут к твоей базе — останавливай их, пока не дошли.',
      mechanics: ['NPC-волны', 'raycast', 'HP базы'],
      ready: false },
    { id: 'lap-race', num: 32, group: 'g3', stars: 2, icon: 'car',
      title: 'Гонка с кругами',
      desc: 'Проедь несколько кругов через чекпоинты на время.',
      mechanics: ['чекпоинты', 'таймер', 'счётчик кругов'],
      ready: false },
    { id: 'boss-platformer', num: 33, group: 'g3', stars: 2, icon: 'boss',
      title: 'Платформер с боссом',
      desc: 'Пройди паркур до NPC-босса и победи его в конце уровня.',
      mechanics: ['паркур', 'NPC-босс', 'бой'],
      ready: false },
    { id: 'harvest', num: 34, group: 'g3', stars: 2, icon: 'plant',
      title: 'Сбор урожая',
      desc: 'Растения растут на грядках — собирай их вовремя, пока спелые.',
      mechanics: ['твины роста', 'таймеры', 'счёт'],
      ready: false },
    { id: 'hide-from-npc', num: 35, group: 'g3', stars: 2, icon: 'hide',
      title: 'Прятки от NPC',
      desc: 'NPC ищет тебя по уровню — прячься за объектами, чтобы не нашёл.',
      mechanics: ['NPC-логика', 'raycast видимости', 'distance'],
      ready: false },
    { id: 'box-puzzle', num: 36, group: 'g3', stars: 2, icon: 'puzzle',
      title: 'Головоломка с ящиками',
      desc: 'Двигай ящики на кнопки-плиты, чтобы открыть запертую дверь.',
      mechanics: ['физика толкания', 'кнопки-плиты', 'логика'],
      ready: false },
    { id: 'obstacle-course', num: 37, group: 'g3', stars: 2, icon: 'obstacle',
      title: 'Полоса препятствий',
      desc: 'Шипы, ямы и движущиеся платформы — пройди всё без смерти.',
      mechanics: ['шипы', 'движущиеся платформы', 'чекпоинты'],
      ready: false },
    { id: 'music-game', num: 38, group: 'g3', stars: 2, icon: 'music',
      title: 'Музыкальная игра',
      desc: 'Запомни и повтори последовательность звуков, которую сыграла игра.',
      mechanics: ['game.sound', 'массивы', 'проверка ответа'],
      ready: false },
    { id: 'tower-build', num: 39, group: 'g3', stars: 2, icon: 'tower',
      title: 'Башня — стройка',
      desc: 'Ставь блоки по подсказкам скрипта и построй высокую башню.',
      mechanics: ['спавн блоков', 'GUI-подсказки', 'счётчик'],
      ready: false },
    { id: 'wave-survival', num: 40, group: 'g3', stars: 2, icon: 'zombie',
      title: 'Выживание от волн',
      desc: 'Волны врагов нападают одна за другой — продержись N секунд.',
      mechanics: ['NPC-волны', 'таймеры', 'HP'],
      ready: false },

    // ── Группа 4 — Сложные ────────────────────────────────────────
    { id: 'adventure-platformer', num: 41, group: 'g4', stars: 3, icon: 'map',
      title: 'Платформер-приключение',
      desc: 'Большой уровень с чекпоинтами, врагами и финишем-сокровищем.',
      mechanics: ['большой уровень', 'чекпоинты', 'враги', 'финиш'],
      ready: false },
    { id: 'rpg-village', num: 42, group: 'g4', stars: 3, icon: 'village',
      title: 'RPG-деревня',
      desc: 'Деревня с NPC, диалогами, квестами, инвентарём и торговлей.',
      mechanics: ['NPC', 'квесты', 'инвентарь', 'экономика'],
      ready: false },
    { id: 'obstacle-race', num: 43, group: 'g4', stars: 3, icon: 'car',
      title: 'Гонка с препятствиями',
      desc: 'Трасса с бустами скорости и ловушками — приди первым к финишу.',
      mechanics: ['бусты', 'ловушки', 'таймер', 'чекпоинты'],
      ready: false },
    { id: 'tower-defense', num: 44, group: 'g4', stars: 3, icon: 'castle',
      title: 'Tower Defense',
      desc: 'Ставь башни вдоль дороги и отбивай волны наступающих врагов.',
      mechanics: ['GUI-меню', 'NPC-волны', 'башни', 'экономика'],
      ready: false },
    { id: 'arena-shooter', num: 45, group: 'g4', stars: 3, icon: 'gun',
      title: 'Стрелялка-арена',
      desc: 'Оружие, враги, очки и GUI-счёт — выживай на боевой арене.',
      mechanics: ['оружие (Tool)', 'raycast', 'NPC', 'GUI-счёт'],
      ready: false },
    { id: 'clicker', num: 46, group: 'g4', stars: 3, icon: 'click',
      title: 'Кликер',
      desc: 'GUI-игра: кликай по кнопке, копи очки и покупай улучшения.',
      mechanics: ['GUI', 'game.save', 'экономика улучшений'],
      ready: false },
    { id: 'escape-quest', num: 47, group: 'g4', stars: 3, icon: 'door',
      title: 'Квест-побег',
      desc: 'Комната-головоломка: реши все загадки и найди выход.',
      mechanics: ['головоломки', 'инвентарь', 'состояние', 'триггеры'],
      ready: false },
    { id: 'mp-tag', num: 48, group: 'g4', stars: 3, icon: 'chase',
      title: 'Мультиплеер: Салки',
      desc: 'Несколько игроков, один водящий — догони и осаль остальных.',
      mechanics: ['мультиплеер', 'команды', 'game.room'],
      ready: false },
    { id: 'mp-race', num: 49, group: 'g4', stars: 3, icon: 'trophy',
      title: 'Мультиплеер: Гонка',
      desc: 'Соревнование игроков на трассе с общим счётом комнаты.',
      mechanics: ['мультиплеер', 'game.room', 'чекпоинты'],
      ready: false },
    { id: 'make-your-own', num: 50, group: 'g4', stars: 3, icon: 'sparkles',
      title: 'Своя игра',
      desc: 'Гайд: как придумать и собрать собственную игру с нуля.',
      mechanics: ['проектирование игры', 'все механики вместе'],
      ready: false },

    // ── Группа 5 — Разбор готовых игр ─────────────────────────────
    // Это НАСТОЯЩИЕ игры из студии. У карточек есть openProjectId —
    // кнопка открывает оригинал игры в редакторе (а не строит из билдера).
    { id: 'guide-dvor', num: 51, group: 'g5', stars: 1, icon: 'camera',
      title: 'Двор с табличкой',
      desc: 'Учимся крутить камеру мышкой как в Roblox и нажимать на 3D-таблички прямо в мире.',
      mechanics: ['камера и мышь', 'ПКМ-orbit и зум', 'Shift-Lock (L)', '3D-таблички'],
      previewShot: 'guide-dvor-scene.png', openProjectId: 1991, ready: true },
    { id: 'guide-vitrina', num: 52, group: 'g5', stars: 2, icon: 'palette',
      title: 'Витрина GUI',
      desc: 'Живые кнопки магазина: градиенты, пульсация, поворот и плавные твины при нажатии.',
      mechanics: ['GUI-кнопки', 'анимации (pulse/rotate)', 'твины', 'счётчик монет'],
      previewShot: 'guide-vitrina-scene.png', openProjectId: 1995, ready: true },
    { id: 'guide-sunduk', num: 53, group: 'g5', stars: 2, icon: 'scroll',
      title: 'Тайна старого сундука',
      desc: 'Кат-сцены и диалоги: затемнение, прожектор на сундуке, выбор приза и финальная победа.',
      mechanics: ['game.modal', 'диалог по строкам', 'прожектор + камера', 'лутбокс'],
      previewShot: 'guide-sunduk-scene.png', openProjectId: 2037, ready: true },
    { id: 'guide-zoo', num: 54, group: 'g5', stars: 2, icon: 'gamepad',
      title: 'Парк животных',
      desc: 'Кастомные скины: герой превращается в пончик, машину, пришельца. Магазин скинов на B.',
      mechanics: ['game.player.setSkin', 'non-humanoid скины', 'магазин скинов', 'таблички'],
      previewShot: 'guide-zoo-scene.png', openProjectId: 2046, ready: true },
    { id: 'guide-strelka', num: 55, group: 'g5', stars: 1, icon: 'gamepad',
      title: 'Туториал — собери монетки',
      desc: '3D-стрелка-указатель «иди сюда»: дорожка из бегущих шевронов + парящий маркер над целью. Дошёл — стрелка прыгает на следующую.',
      mechanics: ['game.fx.pointer', 'preset стрелки', 'setTarget/update', 'onTouch цели'],
      previewShot: 'guide-strelka-scene.png', openProjectId: 333, ready: true },
    { id: 'guide-lego', num: 56, group: 'g5', stars: 1, icon: 'cube',
      title: 'Лего-полигон — studs материал',
      desc: 'Лего-кружки (studs) на блоках и примитивах любого цвета: зелёный пол, оранжевая стена, разноцветные кубы + готовый лего-сет (дерево, дом, машина).',
      mechanics: ['material: studs', 'studs-block (цвет на блок)', 'тайлинг по размеру', 'лего-сет моделей'],
      previewShot: 'guide-lego-scene.png', openProjectId: 2217, ready: true },
    { id: 'guide-dynamic-label', num: 57, group: 'g5', stars: 2, icon: 'clock',
      title: 'Часовая башня — живые 3D-надписи',
      desc: 'Живые 3D-надписи + витрина-лутбокс: таймер над башней, ряд подиумов с вращающимися предметами и наклонными табличками-ценниками, счётчик монет (клик +10), HP над зомби. Текст крепится плоско к грани наклонного примитива.',
      mechanics: ['scene.bindLabel', 'scene.bindTimer', 'attachFace (текст на грани)', '5 пресетов (gameui/boss-hp/reward…)', 'richText <color>', 'game.format.money', 'obj.move/rotate', 'onClick объекта'],
      previewShot: 'guide-dynamic-label-scene.png', openProjectId: 2261, ready: true },
    { id: 'guide-zavod', num: 58, group: 'g5', stars: 2, icon: 'cart',
      title: 'Мой завод — расстановка предметов (placement)',
      desc: 'Tycoon-механика «купи → поставь»: магазин-инвентарь снизу, тень предмета за курсором, ЛКМ ставит на участок (можно стопкой), нет денег → слот серый.',
      mechanics: ['game.placement.start', 'game.inventoryUi (магазин-слоты)', 'onPlace/onCancel/onMove', 'тень-превью формой модели', 'снап к сетке + стопка', 'проверка баланса (не в минус)', 'воксельные модели + ландшафт'],
      previewShot: 'guide-zavod-scene.png', openProjectId: 2345, ready: true },
    { id: 'guide-taxi', num: 59, group: 'g5', stars: 2, icon: 'loader',
      title: 'Такси-босс — экран загрузки между мирами',
      desc: 'Три локации (гараж · город · магазин), между ними — красивый экран загрузки с прогресс-баром, спиннером и кнопкой «Пропустить», как в Roblox при телепорте.',
      mechanics: ['game.loading.transition (Promise)', 'game.loading.show (хэндл setProgress/close)', 'cover: sceneSnapshot (снимок сцены)', 'прогресс-бар + процент + спиннер', 'кнопка «Пропустить» (onSkip)', 'blockInput + пауза симуляции', '3 локации = телепорт + смена окружения', 'воксельный город + интерьер магазина'],
      previewShot: 'guide-taxi-scene.png', openProjectId: 2427, ready: true },
    { id: 'guide-garage', num: 60, group: 'g5', stars: 2, icon: 'camera',
      title: 'Гараж Босса — главное меню с облётом камеры',
      desc: 'Живое 3D-меню как в топ-играх: камера кинематографично облетает премиум-машину в гараже, справа патч-ноуты, снизу кнопка ИГРАТЬ → переход в саму игру.',
      mechanics: ['game.mainMenu.show / hide', 'cinematic-камера (waypoints/orbit)', 'патч-ноуты + логотип + кнопка ИГРАТЬ', 'блок управления + фоновая музыка', 'onPlay → loading.transition → gameplay', 'GLB-модель машины (Kenney car-kit)'],
      previewShot: 'guide-garage-scene.png', openProjectId: 2434, ready: true },
    { id: 'guide-taxisim', num: 61, group: 'g5', stars: 3, icon: 'car',
      title: 'Такси-симулятор — садись за руль',
      desc: 'Полноценные машины: подходишь, держишь F — садишься за руль, WASD рулят, камера следует за авто, спидометр снизу. E — выйти. Готовые 3D-модели машин.',
      mechanics: ['game.scene.spawn(\'vehicle:car\')', 'аркадная физика (газ/руль/тормоз)', 'hold-F вход / E выход', 'камера за машиной (V меняет)', 'HUD водителя (спидометр+передача)', 'onVehicleEnter/onVehicleExit'],
      previewShot: 'guide-taxisim-scene.png', openProjectId: 2436, ready: true },
    { id: 'guide-skybox', num: 62, group: 'g5', stars: 2, icon: 'cloud',
      title: 'Небесная демка — кастомное небо',
      desc: 'Одной строкой меняешь небо: голубой день, закат, звёздная ночь, космос. Облака, туман, далёкие горы и плавные переходы между пресетами.',
      mechanics: ['game.scene.setSkybox({ preset })', 'game.scene.setClouds / setFog', 'skybox.fadeTo(opts, сек) — плавный переход', '6 пресетов: день/lowpoly/закат/ночь/космос', 'небо = единый источник света сцены', 'облака-дрейф + дымка горизонта'],
      previewShot: 'guide-skybox-scene.png', openProjectId: 2541, ready: true },
    { id: 'guide-leaderstats', num: 63, group: 'g5', stars: 2, icon: 'trophy',
      title: 'Сбор монет — лидерборды и достижения',
      desc: 'Таблица лидеров справа-сверху (монеты/время/уровень) + всплывающие достижения с редкостью и звуком. Прогресс сохраняется в БД между сессиями.',
      mechanics: ['game.leaderstats.define / me.add', 'HUD-таблица топ-10 (сортировка по primary)', 'game.achievements.define / unlock', 'bindToStat — авто-награда по статy', 'toast 4 редкости + очередь', 'кубок → страница достижений', 'сохранение в БД (savegame)'],
      previewShot: 'guide-leaderstats-scene.png', openProjectId: 2616, ready: true },
    { id: 'guide-floaters', num: 64, group: 'g5', stars: 2, icon: 'sparkles',
      title: 'Зомби-арена — бластер и цифры урона',
      desc: 'Шутер: волны зомби бегут к игроку, бластер их отстреливает, над целью всплывают облачка урона. Авто-floater над любым мобом одной строкой + ручной game.fx.damageFloater (крит/хил/мана/промах/стек/комикс).',
      mechanics: ['game.fx.damageFloater(pos, value, opts)', 'game.fx.autoMobFloaters(true) — облачко над NPC при уроне', 'game.player.giveTool(\'blaster-...\') — бластер', 'бластер от 3-го лица — в точку клика', 'spawnNpc + follow(\'player\') — зомби-волны', 'isCrit/isHeal/isMana/isMiss, стек ×N, комикс', 'object pool 30 планов (без лагов)'],
      previewShot: 'guide-floaters-scene.png', openProjectId: 2676, ready: true },
    { id: 'guide-inventory', num: 65, group: 'g5', stars: 2, icon: 'box',
      title: 'Сбор и сортировка — инвентарь с drag-drop',
      desc: 'Полный инвентарь как в Minecraft/RPG: сетка 8×5 + хотбар 9, стаки, 5 редкостей (цвет рамки), перетаскивание мышью, ПКМ-меню, tooltip, сортировка. Собираешь предметы — стаки растут.',
      mechanics: ['game.items.define([...]) — предметы (редкость/стак/иконка)', 'game.inventory.give / take', 'окно по I — сетка 8×5 + хотбар 9 (1-9)', 'drag-drop между слотами (swap + merge)', 'стаки с maxStack, 5 редкостей', 'ПКМ-меню: использовать / разделить / выбросить', 'tooltip + сортировка по редкости'],
      previewShot: 'guide-inventory-scene.png', openProjectId: 2685, ready: true },
    { id: 'guide-loadingscreen', num: 66, group: 'g5', stars: 2, icon: 'loader',
      title: 'Экран загрузки — Ken Burns и название места',
      desc: 'Что видит игрок при входе в игру: размытый фон с медленным движением (Ken Burns), карточка-витрина по центру, название места и автор с verified-галочкой — как в Roblox. Автор настраивает экран во вкладке «Стартовый экран».',
      mechanics: ['красивый экран загрузки игры в плеере (GameLoadingScreen)', 'Ken Burns / static / parallax / particles', 'карточка-витрина + название места + автор + verified', 'настройка во вкладке «Стартовый экран» (свойства проекта)', 'game.loading.show({ style, placeName, studioName, duration }) — переходы', 'game.loading.onHide() — продолжить после загрузки', 'game.loading.setBackground / setText / setProgress'],
      previewShot: 'guide-loadingscreen-scene.png', openProjectId: 2713, ready: true },
];
