Статьи

Unity для гейм-дизайнеров

Итак, дорогой гейм-дизайнер. Сегодня твой первый день/неделя на новом рабочем месте? Перед тобой проект на Unity, а о ней ты слышал только то, что она очень популярна? Вот тебе краткое руководство о том, как гейм-дизайнеру пользоваться этим прекрасным зверем.

Структура проекта

Сама Unity является компонентной системой. Говоря простым языком, любое пространство в вашей игре (Scene)(далее «сцена») имеет набор объектов (GameObject), каждый из которых имеет те или иные компоненты (Component).

Любой объект, помещённый в определённую сцену, имеет положение в мире (Transform). Объект по своей сути является именованным контейнером для компонентов. Компоненты же определяют как этот объект должен себя вести. Каждый компонент — это скрипт, уже входящий в движок, либо написанный программистами вашего проекта.

Про интерфейс самой Unity я рассказывать не буду, про него нужно почитать в официальном руководстве.

Хранение настроек

В онлайн-проектах, особенно живых, скорее всего, у тебя будет отдельная админка, в которой будут храниться все конфиги и параметры. Это сделано для того, чтобы ты мог менять те или иные характеристики сразу для всех игроков. Например, подкрутить всем игрокам награду за достижение 8 уровня или внезапно изменить параметр какого-нибудь персонажа у всех игроков потому, что ты ошибся при внесении их в админку.

Для локальных настроек, необходимых для тестирования, некоторые проекты могут хранить все параметры в файлах различных форматов. Но мы поговорим о том, как гейм-дизайнеру проверять свой баланс или тестировать геймплей, не покидая Unity.

Мы договорились, что каждый объект содержит компоненты. В целом компоненты обычно отражают какую-то одну систему (возможность двигаться, атаковать экипированным оружием или кастовать огненный шар, быть врагом, быть нейтралом, и так далее). Это значит, что у тебя уже есть неплохой инструмент для настройки базового геймплея.

Базовые настройки геймплея

Давай же посмотрим, как в Unity выглядит то, что программисты тебе предоставили.

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

Итак, мы видим панель Hierarchy, которая отображает всё, что находится в сцене. В данный момент выбран Player (собственно, игрок), который является объектом в сцене, а значит имеет имя и набор компонентов: Move, Attack и Health. Так как ты очень тесно общаешься с программистами и сам описал им задачу, то ты знаешь, за что отвечает каждый компонент. Взглянем на параметры каждого компонента.

Move

  • Automatic: определяет, сам ли двигается объект, или им управляет игрок
  • Move Speed: скорость передвижения объекта

Attack

  • Automatic: определяет, сам ли атакует объект, или им управляет игрок
  • Weapon: каким оружием пользуется объект
  • AttackSpeed: скорость атаки объекта

Health

  • Health: сколько очков здоровья у объекта

Похожий набор компонентов есть у Enemy Mage и Enemy Warrior с добавлением компонента Enemy и некоторых других настроек.

 

Удаляя и добавляя разные компоненты, ты можешь создавать любые комбинации:

  • Хочешь, чтобы маг превратился в огнедышащую башню? Убери компонент Move у объекта Enemy Mage.
  • Хочешь, чтобы игрок тоже мог стрелять огненными шарами? Добавь компонент Cast к объекту Player. Имей ввиду, что программисты должны были сначала разработать такую возможность и назначить кнопку, по которой ты будешь этот огненный шар запускать.
  • Может быть ты даже хочешь, чтобы в сцене было 2 объекта, которыми управляет игрок? Удали компонент Enemy и сними галочки Automatic у остальных компонентов.
  • Поменять оружие или заклинание? Найди в панели Project соответствующий объект и перетащи его в поле Weapon или Spell.

Сохранение настроек и Prefab

Скорее всего ты захочешь запомнить те или иные настройки в качестве разных противников и в будущем повторно их использовать. Для этого в Unity есть понятие заготовки (Prefab) (далее «префаб»). Просто перетащи объект из сцены в проект и он автоматически создаст префаб со всеми твоими настройками.

В иерархии префабы отображаются синим цветом, а в проекте — синим кубом. При изменении параметров префаба они автоматически применяются на все копии префаба в сцене. При изменении параметров одной из копий префаба, изменения не будут применены, пока ты не нажмёшь Apply на копии.

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

Тестирование

После консультации с программистами ты узнал, что есть объект Spawner, в котором ты можешь задать необходимые параметры для тестирования.

В Transform объекта Spawner ты можешь задать положение точки, в которой будут появляться наши враги.

В категории Spawnees выбери ObjectsList. В его Size ты можешь вручную задать любое количество элементов и назначить любые объекты (только следи, чтобы это были именно враги). Если последний элемент заполнен, то при увеличении количества все последующие элементы скопируют последний. Если выставить Size в 0, то все объекты удалятся. В каждый элемент под полем Size можно перетащить те самые Prefab, которые ты создал, чтобы Spawner знал какие объекты с какими настройками нужно создавать.

SpawnTime определит раз в сколько секунд нужно создать противника, а VictoryCount следит за количеством противников, которых надо убить, чтобы перестать создавать новых.

Вот и всё! Игра готова к итеративному тестированию баланса, который ты посчитал в табличках не без помощи Илья Туменко и серии статей про баланс.

Можешь скачать проект, распаковать папки Assets и ProjectSettings в любую папку, открыть эту папку в Unity и поглядеть на всё, что я описывал выше.

Добавить комментарий