Балансування ігрових параметрів та характеристик предметів

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

Від імерсивних застосунків до ігрових світів і 3D-сцен

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

Відвідати персоналізований сайт
Показано 1 з 1 послугУсі 242 послуг
Балансування ігрових параметрів та характеристик предметів
Складна
від 3 робочих днів до 3 тижнів
Часті питання

Наші компетенції

Які етапи розробки гри?

Останні роботи

  • image_games_mortal_motors_495_0.webp
    Розробка гри для компанії Mortal Motors
    683
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    862
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    491
  • image_games_phoenix_ii_606_0.webp
    3D-анімація – тизер для гри phoenix 2.
    533

Балансування ігрових параметрів і характеристик предметів

Балансування — це не «зменшити урон мечника на 10%, тому що він видається занадто сильним». Це системна робота з даними: побудувати матрицю DPS за класами, порахувати TTK (time to kill) для кожної пари атакуючий/захисник, знайти викиди і пояснити їхню причину.

Метрики, які потрібно рахувати перед правкою цифр

DPS (damage per second) — базова метрика атаки. Рахується з урахуванням швидкості атаки, критичного шансу та критичного мультиплікатора: DPS = baseDamage * attacksPerSecond * (1 + critChance * (critMultiplier - 1)). Якщо у мага DPS = 450, а у воїна DPS = 280, але воїн при цьому має 3x HP — їхнє відношення EHP/DPS потрібно дивитися у парі.

EHP (effective hit points) — HP з урахуванням броні і уникання: EHP = HP / (1 - damageReduction). При damageReduction = 0.4 і HP = 1000 отримуємо EHP = 1667. Це чесне порівняння живучості класів різних архетипів.

TTK — для PvP і encounter design. TTK = EHP_target / DPS_attacker. Якщо TTK для всіх комбінацій класів лежить у діапазоні 8–15 секунд, боївки цікаві. TTK < 3 секунди означає, що один клас просто знищує іншого до першої контратаки.

Ці три метрики будуються в таблиці для всіх класів, рівнів і ключових наборів екіпіровки — і оновлюються при кожній зміні базових параметрів.

Балансування предметів: від ScriptableObject до матриці

Кожен предмет у Unity описується ItemDefinition ScriptableObject з полями характеристик. Балансувальна робота відбувається не в редакторі Unity — там занадто незручно порівнювати 200 предметів. Дані експортуються в CSV, відкриваються в Excel/Google Sheets, там будуються зведені таблиці та діаграми.

Budget system — стандартний підхід до балансування предметів. Кожен предмет має «бюджет» очків характеристик, пропорційний рідкості та рівню. Common-предмет рівня 20 має бюджет 100, Rare — 150, Legendary — 220. Характеристики всередину предмета витрачають цей бюджет по таблиці «вартість одиниці характеристики»: 1 одиниця урону = 2 бюджета, 1 одиниця HP = 1 бюджет, 1% критичного шансу = 3 бюджета.

Це дозволяє швидко перевірити предмет: якщо Legendary меч рівня 20 по характеристиках виходить за 220 бюджета — він зламаний. Якщо значно нижче — він марний. Після налаштування коефіцієнтів нові предмети додаються без індивідуальної перевірки — вони автоматично укладаються в баланс.

Генеровані предмети та діапазони

У іграх з процедурною генерацією предметів баланс задається не фіксованими значеннями, а діапазонами: damage: [min, max] для кожного рівня. Розкид не повинен бути занадто широким — предмет з damage: 10–90 при середньому 50 дає гравцеві занадто багато «лотерейних» відчуттів і розмиває прогресію. Розкид ±20–30% від середнього — робочий діапазон для більшості RPG.

Афікси на випадкових предметах теж беруться з пула з вагами. AffixPool ScriptableObject тримає List<AffixDefinition> з weight у кожного — чим рідше афікс, тим менше вага. WeightedRandom вибір при генерації. Важливо: сума ваг не обов'язково дорівнює 100 — алгоритм рахує ймовірність як weight / totalWeight.

Баланс PvE-енкаунтерів

Encounter design — це тоже математика. Для кожного енкаунтера рахується encounter budget: сума «вартостей» ворогів, розташованих дизайнером. Вартість ворога = його HP * (1 + damageModifier) за спрощеною формулою, масштабована до DPS групи гравців для даного рівня.

Якщо DPS групи з 4 гравців рівня 15 становить загалом ~800/сек, а енкаунтер з трьох ворогів має сумарний EHP 12000 — це 15 секунд бою при нульових втратах. Додайте механіку з перериванням каста або атакою по площі — і TTK для групи стає довшим. Це проектується в таблиці до розставлення ворогів на рівні.

Інструменти та процес

Балансувальна робота завжди ітеративна. Стандартний цикл: правка таблиці → експорт CSV → автоматичний імпорт в ScriptableObject через Editor-скрипт → плейтест → збір даних → правка таблиці. Ручний перенос цифр виключається з першого дня.

Для онлайн-ігор критична можливість гарячого оновлення балансу без передеплоя білда. Дані балансу в цьому випадку зберігаються на сервері в JSON/CSV і завантажуються при старті сесії. Unity-клієнт читає їх через Remote Config (Unity Gaming Services) або власний endpoint.

Орієнтовні строки

Задача Строк
Балансування одного класу/типу предметів 2–4 дня
Повний баланс 3–5 класів + предметні набори 2–3 тижні
Балансування + інструментарій імпорту + аналітика 4–6 тижнів

П'ять речей, які потрібно перевірити до фінального балансу

  • Немає пар з TTK < 3 сек (ситуації миттєвої смерті)
  • Весь діапазон рівнів покритий предметами з правильним budget-значенням
  • Немає характеристики з нульовою або негативною «корисністю» (які гравці завжди ігнорують)
  • Перевірені edge case: максимальний крит стек, максимальна швидкість атаки, нульовий урон від броні
  • У кожного класу є хоча б одна домінуюча роль в енкаунтерах, щоб жоден не був «строго гірше»