От абстрактной идеи к готовой механике: как гейм-дизайнеру составить ТЗ для программиста

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

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

В игровых студиях для этого пишут техническое задание (иногда его называют дизайн документом для отдельной фичи) — там гейм-дизайнер подробно описывает, что он хочет получить, какие особенности должны быть у механики и так далее. В этом тексте мы ответим на вопросы, как в студиях составляют ТЗ, какие детали там обязательно расписывают, нужны ли референсы и многое другое. Своим опытом поделились: ведущий гейм-дизайнер студии ITT Михаил Сипцов, ведущий гейм-дизайнер студии Panzerdog Олег Снисаренко, ведущий программист ITT Олег Агеев, старший гейм-дизайнер ITT Алексей Анискин.

Структура ТЗ

В разных проектах структура ТЗ может отличаться, но в любом случае основная задача документации — в простой и недвусмысленной форме донести до исполнителя список требований и условий, в которых будет применяться игровая сущность. 

В нашей разработке дополнительно к описанию самих механик еще описывается, как это действие выглядит с точки зрения игрока. Другими словами, желательный результат работы фичи. — Михаил Сипцов, ведущий гейм-дизайнер студии ITT

Хорошая практика в составлении ТЗ — идти от общего к частному. В самом начале стоит написать общий принцип работы фичи. Например: «Добавляем возможность делать кувырок. Во время переката есть период неуязвимости». А дальше нужно последовательно описать механику, разбивая информацию по блокам — подробно описать ее с точки зрения геймплея, настроек и так далее.

При описании механики нужно сделать упор на логических взаимосвязях и ограничениях. Важно описать четкую последовательность действий в рамках конкретной механики, а также всевозможные сценарии использования. Если продолжить пример с перекатом, то в описании механики нужно указать: 

  • можно ли использовать кувырок во время других действий — прерывает ли он текущее действие или нет; 

  • можно ли использовать другие действия во время переката — например, может ли персонаж использовать зелья в процессе этого действия; 

  • как во время кувырка персонаж взаимодействует с другими объектами — ломает ли он объекты, сквозь которые проходит;

  • есть ли зависимость параметров кувырка и характеристик героя — например, герой в тяжелой броне перекатывается на меньшее расстояние.

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

Также стоит учитывать, что ТЗ нужно не только гейм-дизайнеру и программисту, но и другим членам команды. Например, QA-специалисты используют ТЗ, чтобы проверить правильно ли работает механика. В некоторых случаях исполнитель или заказчик конкретной фичи может поменяться, а зафиксированное ТЗ поможет сохранить оригинальную задумку.

Какие референсы нужны 

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

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

Для большинства новых пешек в Rush Royale существует этап пре-продакшна, на котором мы из кирпичиков собираем что-то максимально близкое к желаемому результату, попутно ставя задачи на новые механики для программистов. 

Чем больше прототипов делает сам гейм-дизайнер, тем больше ошибок он может предвосхитить. Меньше переделок — больше успеваешь сделать в срок, меньше жалоб на «сырой дизайн». Так что делать прототипы, может быть даже не для своей игры, а «для души» — это рекомендация для любого гейм-дизайнера. — Михаил Сипцов, ведущий гейм-дизайнер студии ITT

Примеры ТЗ

Техническое задание напрямую зависит от проекта и от механики, которую нужно реализовать. Для наглядности мы решили привести несколько примеров ТЗ, которые различаются по содержанию, но при этом их структура в целом схожа. 

«Танцовщица с клинками»

Эта механика предназначена для игры Rush Royale в жанре Merge Tower Defence, в которой пользователи выставляют на стол пешки, стреляющие по проходящим мимо противникам. Монстры стремятся достичь ворот замка и уничтожить его. Пешки стреляют по врагу, увеличивая свой урон или меняя определенные параметры при правильной расстановке. 

Для пешки «Танцовщица с клинками» текстовое описание работы выглядит следующим образом:

«Атакует первую цель. Если по соседству (на ближайших клетках по горизонтали и вертикали) нет других танцовщиц, то переходит в усиленный режим, увеличивая свою скорость атаки и урон. Урон увеличивается с количеством танцовщиц на поле боя. Максимальный бонус достигается при восьми танцовщицах».

Так танцовщица выглядит в игре
Так танцовщица выглядит в игре

Сами пешки представляют собой некие универсальные сущности, на которые надстраиваются уникальные механики. При этом у всех пешек есть стандартные параметры: например, «урон» и «скорость атаки».

Чтобы из базовой пешки сделать «Танцовщицу с клинками», нужно реализовать следующие механики:

  • проверка на то, что пешка стреляет именно по первой цели (могут быть другие варианты, например, случайная, цель с самым большим числом здоровья или босс);

  • проверка на наличие рядом пешек такого же типа;

  • проверка количества пешек такого же типа на столе;

  • бонус для параметров пешки, если выполняются заданные условия;

  • ограничение на рост параметра.

Получается, что танцовщицы получают максимальный прирост к характеристикам при такой расстановке
Получается, что танцовщицы получают максимальный прирост к характеристикам при такой расстановке

В итоге у «Танцовщицы с клинками» есть несколько характеристик, настройкой которых занимается гейм-дизайнер:

  • урон;

  • интервал между атаками;

  • ускорение;

  • боевой дух;

  • минимальное усиление;

  • максимальное усиление.

Механика переключения режимов выглядит так:

«Имеет 2 weapon механики. При условии равенства каунтера соседей 0, начинает работать изменение параметров, заданное в PawnBladeDancer_NeighborAttackChange и PawnBladeDancer_NeighborIntervalChange».

«Падение зомби из труб»

В этой части речь пойдет про механику «доставки» зомби на поле боя в изометрическом шутере.

«Нам нужно, чтобы зомби могли выпадать из труб. Сами трубы могут быть любых форм и размеров. Выпадать зомби будут по стандартным сплайнам, которые будут преднастроены в сценах.

Предлагаю сделать новый компонент, который вешаем на юнита. В нем указываем:

  • кость, за которую прицепляем рэгдолл к сплайну;

  • список коллайдеров, для которых отключаем физику на время полета;

  • минимальную скорость, с которой тащим юнита по сплайну.

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

  • переводим юнита из рэгдолла в нормальный режим и включаем аниматор;

  • дергаем триггер Spawn в аниматоре;

  • включаем прочую логику (можно выбрать как цель, нанести урон и так далее)».

В результате получается, что зомби неуязвимы во время «доставки» на поле боя, но сразу после спавна они становятся полноценными целями.

Возможность определять и сравнивать угол движения аватара

А эта механика предназначается для экшен-RPG от третьего лица.

«Что нужно сделать: в зависимости от угла движения аватара относительно сторон света (направления ветра) ускорять его или замедлять. Например, если ветер дует на север и аватар едет под углом не более 45° к северу, то ускорять, а если более 135° — то замедлять.

Вариант сборки: овертаймово во время движения сравнивать угол аватара с нужным значением с помощью PredicateGreater и при определенных результатах сравнения вешать баффы с замедлением/ускорением. Возможно, даже пробовать скейлить скорость относительно угла.

Тут нужен калкер, который сможет определить угол между аватаром и локатором или угол аватара относительно абсолютных координат мира.

Есть AngleCalcerToLocator или AngleCalcerRelative, они были сделаны для эффекта EffectSpin, чтобы задавать угол поворота. Но эти калкеры не получается использовать с PredicateGreater (нельзя даже соединить их в ДД). Хотелось бы заставить эти калкеры работать с предикатом или изобрести иной способ вычисления угла движения аватара».

Советы гейм-дизайнерам

  • Дайте программисту прочитать ваше ТЗ и спросите его, все ли там понятно — возможно, там чего-то не хватает, или у него возникли вопросы.

  • Не забывайте, что и вы, и программист хотите одного и того же — сделать отличную игру вместе. И если что-то реализовано не так, то точно не из-за злого умысла программиста. 

  • Если появилась проблема, стоит разобраться в том, почему так вышло и решить, как этого избежать в будущем. 

  • Самые частые проблемы связаны с тем, что ТЗ недостаточно понятное, недостаточно полное или же в процессе разработки в него внесли изменения. 

  • В ходе работы над механикой гейм-дизайнер должен общаться с программистом, чтобы удостовериться в том, что его задумка понята правильно, а в ТЗ есть вся нужная информация. 

  • Чем лучше гейм-дизайнер понимает техническую сторону проекта, тем более точные и понятные ТЗ он будет создавать. Поэтому всегда интересуйтесь подробностями движка и технологий, общайтесь с программистами, задавайте им вопросы по теме. 

  • Гейм-дизайнеру в ТЗ стоит делать упор на то, что в итоге должно получиться, а не то, как это реализовать. Зачастую именно программист лучше понимает, какое решение будет наиболее подходящим. Но если у гейм-дизайнера есть опыт разработки, и он точно уверен в своих знаниях, то он может предложить свое решение прямо в ТЗ.

Источник: https://habr.com/ru/company/mygames/blog/687602/


Интересные статьи

Интересные статьи

Почти все писатели, приходя в литературу, уже имеют за плечами карьеру в той или иной области. Среди авторов встречаются представители самых разных профессий — журналисты, ученые самых разных специали...
Для своего телеграм-канала я время от времени пишу конспекты интересных мне деловых книг. Одна из них — «Откуда берутся хорошие идеи» Стивена Джонсона. Тираж книги на рус...
Воскресенье — последний день подачи заявок на наш акселератор ИИ-проектов Архипелаг 20.35. Сейчас в базе больше тысячи проектов разной стадии проработки и 13 тысяч участников, которые сто...
Привет! Меня зовут Денис Довженко, и я уже несколько лет провожу технические собеседования с кандидатами на позиции инженера-программиста C/C++. Если с кандидатами на позиции Senior SW Engineer и...
Уважаемые читатели Хабра, представляю вашему вниманию серию постов, которые в будущем я планирую объединить в книгу. Я захотел покопаться в прошлом и рассказать свою историю, как я стал разработч...