Услуги по геймдизайну и проектированию механик

Наша компания по разработке видеоигр ведет независимые проекты, совместно с клиентом создает игры и оказывает дополнительные операционные услуги. Опыт нашей команды позволяет нам охватить все игровые платформы и разработать потрясающий продукт, соответствующий видению клиента и предпочтениям игроков.

От иммерсивных приложений до игровых миров и 3D-сцен

Наша выделенная команда для VR/AR/MR-разработки, Unity-продакшна и 3D-моделирования и анимации с собственными кейсами и презентациями.

Посетить персонализированный сайт
Показано 19 из 19 услугВсе 242 услуг
Сложная
от 1 недели до 3 месяцев
Сложная
от 1 недели до 2 месяцев
Сложная
от 3 рабочих дней до 3 недель
Средняя
от 1 недели до 1 месяца
Сложная
от 1 недели до 1 месяца
Сложная
от 1 недели до 1 месяца
Средняя
от 3 рабочих дней до 3 недель
Средняя
от 3 рабочих дней до 2 недель
Сложная
от 3 рабочих дней до 1 месяца
Сложная
от 1 недели до 3 месяцев
Сложная
от 1 недели до 3 месяцев
Сложная
от 1 недели до 2 месяцев
Сложная
от 3 рабочих дней до 2 недель
Сложная
от 1 недели до 2 месяцев
Часто задаваемые вопросы
Наши компетенции
Какие этапы разработки игры?
Последние работы
  • image_games_mortal_motors_495_0.webp
    Разработка игры для компании Mortal Motors
    671
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Пошаговая стратегия в фэнтези сеттинге With Fire And Sword
    860
  • image_games_second_team_604_0.webp
    Разработка игры для компании Second term
    490
  • image_games_phoenix_ii_606_0.webp
    3D-анимация — тизер для игры phoenix 2.
    533

Геймдизайн: проектирование механик

Прежде чем начать этот разговор, стоит зафиксировать одно разграничение: геймдизайн — это не «придумать идею игры». Придумать идею может любой. Геймдизайн — это спроектировать систему правил, которая при взаимодействии с игроком производит конкретный эмоциональный и поведенческий результат. Это инженерная дисциплина, только вместо компилятора — человеческий мозг.

Механики: что мы проектируем

Движение и управление

Character controller — первое, что игрок трогает, и последнее, к чему привыкает. Ощущение от движения задаётся не скоростью персонажа, а acceleration и deceleration curves. В Unity это кривые в AnimationCurve или параметры в CharacterController. Мы не ставим линейное ускорение: в большинстве жанров правильный feel достигается через ease-in на старте движения и резкое торможение при отпускании кнопки.

Coyote time (150–200 мс после схода с платформы, во время которых прыжок всё ещё срабатывает) и jump buffering (прыжок регистрируется за 100–150 мс до касания земли) — это не «фичи», это стандарт платформеров. Их отсутствие пользователь не формулирует словами, но чувствует как «управление дубовое».

Инвентарь

Система инвентаря с виду простая, на практике — источник бесконечных edge cases. Stackable/non-stackable предметы, ограничения по весу vs. по слотам, drag-and-drop с валидацией, сохранение состояния между сессиями, серверная верификация в мультиплеере.

Мы проектируем инвентарь через данные: каждый предмет — ScriptableObject с набором параметров, слоты инвентаря — контейнеры, которые принимают или отклоняют предмет по набору правил (тип, класс персонажа, количество). Это позволяет добавлять новые предметы без изменения кода.

Боевая система: глубокий разбор

Боевая система — это та часть геймдизайна, где разрыв между «выглядит просто» и «сделано правильно» максимален. Возьмём melee combat как пример.

Hit detection

Два основных подхода: hitbox-based и raycast/spherecast-based.

Hitbox — коллайдеры на оружии и персонажах, пересечение = попадание. Работает хорошо в замедленных играх. При быстрых атаках появляется tunneling: за один кадр оружие пролетает насквозь, не зафиксировав пересечение. Решается через sweep test или через включение Physics.CCD (Continuous Collision Detection) — но это дорого по производительности.

Raycast/spherecast — каждый кадр во время активного окна атаки кастуем лучи или сферы вдоль траектории оружия. Точнее, меньше зависит от framerate, легче контролировать зону поражения. Мы предпочитаем этот подход для большинства action-игр.

Окна атаки (Attack Windows)

Каждая атака разбита на фазы:

  • Startup — анимация замаха, персонаж уязвим, действие ещё не началось
  • Active — активное окно хита, попадания засчитываются
  • Recovery — анимация возврата, персонаж уязвим, отменить действие нельзя

Эти тайминги — не просто числа для аниматора. Они определяют ощущение боя. Длинный startup создаёт «тяжёлые» удары. Короткий recovery позволяет агрессивный стиль игры. В Souls-like длинный recovery — основной источник наказания за ошибку.

В Unity это реализуется через Animation Events: аниматор кидает событие в определённый кадр, код активирует/деактивирует hitbox или включает/выключает spherecast loop.

State Machine для персонажа

Боевой персонаж — это конечный автомат. В Unity мы используем Animator Controller как основу state machine, но бизнес-логику выносим в код, не в Animator. Animator управляет переходами анимаций, C#-код управляет переходами состояний персонажа.

Базовые состояния: Idle, Moving, Jumping, Falling, Attacking, Hurt, Dead, Blocking, Dodging. Каждый переход — явное условие. Переход из Attacking в Hurt происходит только если атака прерываема (некоторые атаки имеют iframes или super armor).

Иерархические state machines (через Override Animator Controller в Unity или Hierarchical State Machine в собственной реализации) позволяют делать вложенные состояния: например, Moving содержит подсостояния Walking, Running, Crouching, не дублируя переходы.

Экономика: математическая модель

Это та часть геймдизайна, которую чаще всего делают «на глаз» — и получают разваливающийся баланс через месяц после релиза.

Базовая модель прогрессии

Прогрессия в большинстве игр строится на одной из трёх математических моделей:

Линейная — каждый следующий уровень требует одинаковое количество опыта. Просто, предсказуемо, скучно на высоких уровнях.

ЭкспоненциальнаяXP(n) = base * multiplier^n. Стандарт для RPG. multiplier обычно от 1.5 до 2.0. При 1.5 — ранние уровни быстрые, поздние — долгие. При 2.0 — резкий рост сложности.

ПолиномиальнаяXP(n) = a * n^b. Более мягкий рост, чем экспонента. b от 1.5 до 2.5 для большинства игр.

Мы строим таблицы прогрессии в Google Sheets, прежде чем имплементировать в движок. Это позволяет за минуты проверить, сколько часов игрок потратит на каждый уровень при разных параметрах.

Игровая экономика: валюты и потоки

Базовый принцип: каждая валюта должна иметь явный источник (tap) и явный сток (sink). Если золото можно только получать, но не тратить на что-то ценное — оно обесценивается, инфляция убивает экономику.

Пример простой двухвалютной системы (характерна для мобильных f2p):

Мягкая валюта (золото) Твёрдая валюта (кристаллы)
Источник Квесты, враги, ежедневные награды Покупка за деньги, редкие достижения
Сток Расходники, улучшения снаряжения, здания Пропуск времени, редкие предметы, premium
Конвертация → кристаллы: нет → золото: да (но не наоборот)

Однонаправленная конвертация (твёрдая → мягкая, но не обратно) защищает монетизацию.

Баланс через расчёт DPS и TTK

В экшн-играх баланс оружия строится на двух метриках:

DPS (Damage Per Second) — урон в единицу времени с учётом полного цикла атаки (включая recovery). TTK (Time To Kill) — время убийства противника с полным HP. TTK = HP_enemy / DPS.

Разные виды оружия должны иметь сопоставимый TTK против стандартного противника, но разные профили применения: пистолет быстро вытаскивается, снайперская винтовка высокий разовый урон, дробовик эффективен на близкой дистанции.

Дисбаланс легко обнаружить: если TTK какого-то оружия в два раза ниже остальных — это meta-оружие, и все будут использовать только его.

Нарратив и левел-дизайн

Нарратив не обязан быть текстовым. Environmental storytelling — расположение объектов, следы событий на уровне, звуковой дизайн — часто эффективнее диалогов.

Для диалоговых систем мы используем Ink (язык нарратива от Inkle) в интеграции с Unity. Ink позволяет писать разветвлённые диалоги с переменными и условиями в человекочитаемом формате, который редактирует нарративный дизайнер без участия программиста.

Левел-дизайн — отдельная дисциплина. Базовый принцип: уровень должен обучать через gameplay, а не через текстовые подсказки. Если игрок не понимает, что нужно сделать — это проблема дизайна, не игрока.

Инструменты геймдизайнера в нашем процессе

Задача Инструмент
GDD и документация Notion, Confluence
Таблицы баланса Google Sheets
Прототипирование механик Unity (C#), Godot для быстрых прототипов
Диаграммы state machine Miro, draw.io
Нарративные деревья Ink, Twine
Конфигурация в движке ScriptableObjects (Unity), DataTable (Unreal)
Аналитика и A/B тесты Firebase Analytics, GameAnalytics

Итерация и плейтестинг

Механики не рождаются правильными с первого раза. Первый прототип всегда неудобен, и это нормально. Ненормально — не менять его после плейтестинга.

Мы проводим внутренний плейтест каждые две недели. После плейтеста — конкретный список изменений с приоритетами. Мнение «что-то не так с боем» — не задача. Задача — «startup-время атаки 400 мс, это слишком долго, сокращаем до 250 мс и тестируем снова».

Цифры меняются. Ощущения фиксируются. Цикл повторяется.