Как я начал разрабатывать свою игру

Доброго времени суток DTF.
Мой первый пост получился не самым удачным. Мало того, что я перепутал раздел, так я еще и просто выдавил свое видео в ленту. Которое было на английском, и даже без русских субтитров…

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

Backstory

Когда я решил, что буду разрабатывать игры, я не имел каких-либо специфических навыков. Я не был знаком ни с одним языком программирования, не знал как делаются 3д модели и понятия не имел что такое игровой движок. Однако у меня был специфический бэкграунд — в детстве я постоянно аутировал один, либо с книгами (фантастика и фентези) либо в компьютере. Благодаря этому у меня развилась неплохая фантазия, и я решил что в мире разработки игр мое место будет у параши за стулом геймдизайнера. Мол придумываешь себе всякие веселые штуки и в ус не дуешь. Я был молод, чего уж тут…

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

Никто ничего не знает в геймдизайне

И я говорю это не в том плане, что «Вот все тупые, не разбираются как нужно. А нужно вот так…», а в том, что в этой сфере нет каких либо четких критериев успеха, вроде делай X, чтобы получить Y. Все советы которые я находил были уровня «геймплей должен захватывать«, «нужно чтобы игрок был в состоянии потока», «главные герои должны отзываться у игрока» и «идеальная игра это easy to learn, hard to master». Однако когда сам начинаешь разрабатывать игру — то как бы и непонятно, как мне в игре получить этот «захватывающий геймплей» и как добиться «состояния потока». С чего вообще начать?

Основа основ

Автор хорошего канала о геймдизайне Game Maker’s Toolkit имеет свой девлог. В нем он рассказывает о том, что игра должна строится вокруг геймплея. Я с ним частично согласен. Геймплей это одна из самых важных частей игры, однако она не является основополагающей. Нельзя просто взять и добавить геймплей в игру, он должен на чем-то основываться.

Мой любимый геймдизайнер Николай Дыбовский (создатель Мора утопии) в своих лекциях говорит о том, что ключевым элементом игры, ее сердцем, является тема, или идея. В хороших играх вокруг идеи строится геймплей, персонажи и игровой мир. Возьмем например тот же Мор 2. «Город и община«, «неумолимый ход времени», »мораль в тяжелых ситуациях» и тд. и тп, игра затрагивает много тем. Разберем тему о времени.

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

Таким образом идея — это основной объект геймдизайнера. Но что является его инструментом? Ответ достаточно прост и может показаться глупым — это вопросы. Как это все работает проще объяснить на примере. Моетесь в душе и в потоке сознания вам приходит случайная мысль — пираты интеллигенты. Вместо беззубых, злых и вонючих пиратов они начитанные, умытые и в чистой одежде. Эта мысль по сути и является идеей для игры, ее лишь нужно развить путем вопросов. Первый, который приходит в голову — почему эти интеллигентные люди стали пиратами? Возможно это ученые. Но что ученые делают в море? Их исследования нельзя проводить на суше. Тогда почему они пираты? Из-за опытов что они проводили их изгнали, и теперь у них везде плохая репутация. Им приходится жить в море, торговать или обворовывать суда.

Может показаться, что подобные вопросы описывают только сюжетную составляющую, хотя мы уже говорили что самым важным в игре является геймплей. Однако даже из таких около-сюжетных вопросов в голове выстраивается подобие геймплея — мы плаваем на корабле, посещаем различные места чтобы сделать какое-то научное открытие. Из-за плохой репутации у нас мало денег и других ресурсов, необходимых для исследований. Поэтому нам приходится обворовывать другие корабли. Эдакий curious expedition в море.

Curious expedition 2
Curious expedition 2

Каждый ответ на вопрос обычно создает еще больше вопросов. Чем больше ответов дизайнер даст — тем проработанней будет игра. Главное тут это документировать и категоризировать свои вопросы\ответы в удобную для себя (если работаешь один) или других манере.

Идея моей игры

Примерно таким же образом я придумал идею для своей игры, и об этом было мое первое видео. Я играл в Vampire Survivors и в какой-то момент начал замечать все больше и больше слабых моментов игры. Больше всего мне не нравилось отсутствия вариативности и изменений. Каждый забег по сути одинаковый — бегаешь по кругу, собираешь кристаллики. Апгрейды по сути ничего кардинально не меняют. Возможно в начале когда ты берешь плетку, то тебе и нужно как-то специфически двигаться. Но если ты подберешь еще одно\два других оружия, то весь геймплей снова превращается в бегание по кругу\бегу к объекту на карте.
Разочарованный геймплеем, я решил сделать свою игру, со схожим игровым процессом. Основная мысль, которая крутилась у меня в голове, была изменение. Геймплей должен меняться со временем, у игрока должны появляться новые возможности взаимодействия с игрой. Появился вопрос: в чем именно должны заключаться изменения?
Вероятно из-за моей любви к Binding of Isaac я сразу решил что изменения должны заключаться в главном герое.

Честная платина, что не так то и просто в этой игре.
Честная платина, что не так то и просто в этой игре.

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

Мне хотелось сделать что-то подобное, но чтобы игрок мог адаптировать своего персонажа под нужную ситуацию. Это и стало ключевой идеей игры — адаптация, изменение главного героя. Он будет трансформироваться в другие формы с разными способностями.
Следующий вопрос который пришел мне в голову — а с кем будет сражаться этот крутой адаптивный персонаж? Ответ на этот вопрос частично пришел из той же Vampire Surivors. В данной игре ультимативным боссом являются твои собственные веки. Из-за того что противники в игре это безликие болванчики, которые просто бегут на главного героя, реальное сражение происходит не на экране, а в своей голове. Пару раз я чуть не заснул, пока мой герой стрелял 230420340 снарядов, стоя на месте.
Поэтому я решил, что если я хочу получить интересные сражения, враги тоже должны как-то меняться на протяжении забега. И вообще было бы круто, если бы они тоже могли адаптироваться под ситуации, как главный персонаж. Эта схожесть между главным героем и его противниками дала мне другой интересный вопрос. А что если это одно и то же существо? Что если мы будем драться как бы с самим собой, изменяясь и подстраиваясь под слабости друг друга? Это звучит интересно, но это должно быть как-то осмысленно. Почему мы сражаемся с самим собой? Как так вышло? Ответы на эти вопросы связаны с сюжетом.

Сюжет

По своей сути сюжет это тоже набор вопросов. Как удобно! Есть 3 ключевых вопроса, отвечая на которые можно по сути описать любой сюжет.

  • Кто является протагонистом истории?
  • Что он делает?
  • С какой целью?

Быстрый пример. Dark souls:
1. Мы играем за избранного мертвого.
2. Пытаемся добраться до первого пламени.
3. Иначе будет конец света и всему хана.

Как я начал разрабатывать свою игру

Достаточно просто. В моей игре мы частично знаем ответ на первые два вопроса.
1. Мы играем за адаптивное существо (?).
2. Мы сражаемся с другими адаптивными существами (?).
3. Хз.

Ответ на 3й вопрос не такой простой. По сути он и создает весь конфликт истории, он является мотиватором персонажа\игрока и смыслом игры. Описать его одним предложением можно только если ты знаешь контекст мира. Поэтому ниже я изложил общую суть сюжета моей игры.

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

Таким образом мы
1. Мы играем за адаптивное существо.
2. Мы сражаемся со своими клонами.
3. Иначе они поглотят всю жизнь на планете.

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

Моделирование протагониста

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

Когда я начинал делать персонажа, у меня не было каких-то основных идей. Я просто хотел сделать что-то эдакое, не похожее на то что есть на земле. В процессе я вспомнил про юнита из первого StarCraft. Dragoon, или как в ее народе называют табуретка\муха.

Вот она, красивая.
Вот она, красивая.

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

Как я начал разрабатывать свою игру

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

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

4 ноги и пончик.
4 ноги и пончик.

Затем я приступил к анимированию. Я сделал самые базовые анимации: 4 направления движения + idle позу.

Супер простая idle анимация
Первый вариант ходьбы

После этого я решил сделать несколько шейдеров. Для тела, для кости и для жидкости.

Как я начал разрабатывать свою игру

Изначально цвета были более природного цвета, однако потом я решил их сделать более интересными. После того как шейдеры были готовы, я их залил в unreal engine. Там же я и обнаружил, что текстура жидкости из блендера в анриле выглядит мягко говоря плохо. К сожалению фрагмент, где я это запечатлел потерялся...

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

На оружие настоящего мужчины!
На оружие настоящего мужчины!

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

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

Вот и вся статья, спасибо что прочитали. Поделитесь вашими эмоциями от статьи в комментариях, что вам понравилось, что не понравилось. К следующей статье (а она обязательно появится) я постараюсь исправить недочеты.
Если вам было интересно, посмотрите мое видео. Оно (как мне кажется) забавное, не супер душное и имеет субтитры(английские, сори...)!

3838
34 комментария

После того как шейдеры были готовы, я их залил в unreal engine. Там же я и обнаружил, что текстура жидкости из блендера в анриле выглядит мягко говоря плохо.

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

Так делать не надо. Так как каждый экспорт создает новый мастер материал . Так вот экспортировать нужно только карты текстур.
Для оптимизации текстуры выводятся в параметры, и создается отдельный материал инстанс для каждой модели. (Или используется уже готовый если текстура не уникальная)

12

Да, я так и сделал. Просто мне показалось что статья и так длинная, и не хотел никого душить такими подробностями.
Спасибо тебе что реально прочитал ее и поделился этим со всеми!

2

Никто ничего не знает в геймдизайнеРичард Гэрриот знает:

http://aushestov.ru/game-designers-suck/

Большинство гейм-дизайнеров на самом деле – тот еще отстой, и, мне кажется, на это есть причина.«Очень сложно где-то научиться быть хорошим дизайнером»(С) ричард гэрриот

4

«Если ты плохой художник и плохой программист, но все равно любишь игры, то становишься дизайнером»
Literally me

3

Геймдизайн проблемная сфера. Либо игроки глупые, я художник, я так вижу. Либо ты берешь горстку тестеров, и по миллиметру создаёшь игру.

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

Пролистал статью, искал прототип. Прочитал, нашел ответ - "Ответ прост — я дурачок"... Пнятно)

3