TGViewer
Яковлев Илья | Всё про Unity-разработку Яковлев Илья | Всё про Unity-разработку @yakovlev_gamedev · 6.88K subscribers
Post #885 4.28K
Как делаются системы способностей. Часть 1

#система_способностей #разработка_на_практике

Системы способностей в играх - это, наверное, одна из самых фундаментальных систем в очень большом количестве жанров - от разных магических/технологических игр, до самых обычных платформеров, инкременталок, айдлеров и тп, поэтому хочется поделиться с вами своим опытом проектирования подобных штук, чтобы вам было на что опираться при создании своих игр:)

Если хочется продолжения или вам что-то из этого интересно подробнее не стесняйтесь ставить 🔥 и писать в комментах:)

И начать хочется с того из каких частей эта система может состоять

За все проекты, где мне так или иначе доводилось работать со способностями или чем-то похожим на способности я выделил 6 основных модулей. Причем необязательно использовать все и сразу, возможно для вашей игры или затеи понадобиться только часть из них:

🔣Мгновенные эффекты
То, что позволяет сделать какую-то одну мгновенную единицу действия. Т.е. некоторые атомарные кирпичики: нанести урон, подлечить, толкнуть, повесить статус и тд. Отработал и его роль на этом закончилась. Уже только с одним таким модулем можно наделать довольно много интересного и собирать большое количество механик

🔣Статы и модификаторы
Статы - изменяемые харакеристики игровых объектов: макс. здоровье, урон, скорость и тп. А модификаторы - то, как их можно менять: процентное изменение, плоская базовая добавка и тд. Т.е. у персонажа есть базовый урон 10, а вы взяли накинули на него список модификаторов на увеличение и теперь, пока висят модификаторы, у него 20 урона

🔣Статус эффекты
Их отличие от мгновенных в том, что эти живут какое-то время. Например баф скорости или урона (статус, который накидывает модификаторы персонажу и на время изменяет его статы). Или статусы можно рассматривать как геймплейные механики, например: горение, стан, инвиз. Т.е. у статус эффектов появляется своя механика длительности, тики, правила стакания при необходимости и тп.

🔣Таргетинг
Почему-то редко вижу упоминания этой вещи как отдельного модуля, хотя это довольно важная вещь. Нам очень часто надо задавать правила того, по кому прилетит урон, фильтровать объекты для применения способности и тд. Т.е. этот модуль отвечает за то, чтобы мы могли настраивать области действия способностей/эффектов

🔣Абилки (сами способности)
Это уже некоторая единица, которая собирает все вышеупомянутое и добавляет этому цену использования, кулдаун, условия применения и тд. Т.е. абилка выступает в роли некоторого агрегатора остальных модулей. Сама по своей сути ничего не делает обычно - она дирижёр со своим жизненным циклом и условиями использования

🔣 Система событий и реакций
Часто в играх хочется иметь в том числе некоторую возможность реагировать на те или иные вещи. Например, если кто-то в округе умер - добавить себе хп или если кто-то получил критический урон - потрясти камеру. И в таких случаях стоит задуматься о том, чтобы игровой мир мог выкидывать наружу события, а мы могли подхватывать их, фильтровать и как-то реагировать

🧐 Что нам даёт такое разбиение?
Какой-нибудь файрбол перестаёт быть скриптом "Fireball.cs" и становится комбинацией: таргетинг (точка и область вокруг нее) + мгновенный урон + статус "горение". Хочется сделать ледяную стрелу? Делаем эффект создания проджектайла, и при попадании он накладывает статус замедления. Вампиризм - это реакция на нанесение урона в виде создания эффекта хила на источник урона. Т.е. новые способности собираются из готовых частей, а не пишутся с нуля и баланс правится в данных, а не в коде

❗️ВАЖНАЯ ВЕЩЬ О КОТОРОЙ СТОИТ ЗАДУМАТЬСЯ ВСЕМ
Иногда стоит относиться к системе способностей не как к основе для сложной магической системы, а как к базовой вещи в игре. Прыжок, дэш, пассивная добыча денег, обычная атака - все это тоже можно рассматривать как условные абилки. Это потом дает удобные возможности для добавления разных механик. Стан блокирует условный дэш, баф скорости ускоряет тебя, можно выдавать механики как некоторые способности по ходу игры, ускорение добычи золота в айдлерах повышать модификаторами и так далее. Разница просто в том, какие модули вам надо для игры реализовать, т.е. не всегда система способностей обязана выглядеть как в какой-нибудь доте, иногда она может проявляться в упрощенном или скрытом от игрока виде

В следующей части можем закопаться в статы например:) Почему не надо плодить типы данных, какие вещи удобно выражать статами и тп. 🔥
  • 🔥 116
  • ❤ 16
  • 🐳 4
  • 💩 1
More from @yakovlev_gamedev
  1. Sep 26, 2026Post #898
  2. Sep 22, 2026Кстати, ребят, кто хочет попасть в геймдев через устройство на работу - щас очень хорошее…
  3. Sep 20, 2026Post #896
  4. Sep 18, 2026🔥 Замена mixamo? Продолжаю делиться интересными находками. Если вы хоть раз делали персон…
  5. Sep 15, 2026🔥 5 ошибок в архитектуре игр с ECS! 🔥 Новый ролик на канале, в котором начинаем разбират…
  6. Sep 13, 2026Post #893
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →