Делаем игру за три дня: день второй — окружение и механика: уже можно поиграть

Про механики, окружение и деньги.

Продолжение марафона по созданию компьютерной игры за три дня.

Визуальный результат за три дня
Визуальный результат за три дня

Добрый день!

Опережая повествование хочу сообщить, что марафон в три дня окончен! Ссылку на результат (на игру) я оставлю в конце. Не забывайте, что запланирована ещё одна статья, посвященная написанию музыкального сопровождения. Её я закончу на следующей неделе, если не будет никаких сдвигов в графике.

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

В этот раз я обозначу структуру статьи, чтобы было проще ориентироваться. Весь материал разбит на несколько блоков.

  • Игровое окружение.
  • Игровая механика.
  • Итоговый подсчёт времени на разработку.
  • Про деньги (интересно получилось).
  • Общий итог.

Также хочу отметить, что все варианты и ошибки буду рассматривать только на своих примерах. Это будет справедливо. Критиковать чужое творчество я ещё не дорос. К тому же у меня достаточно своих проектов, на которых можно «отвести душу».

Игровое окружение

С игровой механикой все ясно - простой платформер. Никаких извращений. Поэтому рассмотрим механику чуть позже. С примерами и пояснениями. Сейчас акцентирую внимание на игровое окружение.

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

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

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

Вариант первый: генерация уровней

Пример игрового окружения с генерацией уровней
Пример игрового окружения с генерацией уровней

Очень удобный вариант, когда игра сама генерирует игровое пространство. Генерация может происходить на основе заготовленных конструкций или на основе алгоритма, который необходимо написать один раз. Такой вариант интересен своей непредсказуемостью, несмотря на запрограммированную логику. Количество заготовленных конструкций может варьироваться в зависимости от уровня сложности или предпочтения игрока.

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

Главный минус в том, что этот вариант требует серьезной работы с кодом. Каждая новая конструкция прописывается отдельно, а потом интегрируется в основной алгоритм. Строчек кода получается много. Если сделать перерыв в разработке на пару дней, то потом потребуется время, чтобы вспомнить всё нюансы. Поэтому удобно помечать комментариями наиболее сложные места.

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

Вариант второй: основа из одного блока

Пример игрового окружения на основе одного блока

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

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

Вариант третий: плиточная конструкция

Пример игрового окружения на основе плиточной конструкции. С дефектом
Пример игрового окружения на основе плиточной конструкции. С дефектом

Использование плиток — это очень распространенный, но нудный способ. Я пользовался им, когда только начинал делать игры. Каждая плитка — это небольшое изображение. Такие маленькие картинки ещё называют тайлами. Суть в том, что игровое пространство заполняется плиткой в зависимости от структуры уровня.

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

У меня уходили часы на то, чтобы слепить пару уровней вручную из заготовленных плиток. Потом я стал использовать программный код для заполнения пространства. Однако в любом случае велика вероятность дефектов. Из-за невнимательности или недоработок кода всегда часть плиток оказывались не на своих местах. Тут я могу винить только себя.

Сейчас я стараюсь отказаться от этого варианта. По-моему, он требует слишком много временных затрат.

Вариант четвертый: основа из отдельных объектов.

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

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

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

Элементы игрового окружения.
Элементы игрового окружения.

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

Имея заготовленные элементы можно смело приступать к сборке игры.

Сборка игры.

Игровой фон — это тоже часть окружения, которая не должна отвлекать игрока, но обязана дополнять игровое пространство. Вариантов бесконечное множество. Я выбрал некое подобие параллакса из нескольких слоев. Скорость движения каждого слоя можно подобрать индивидуально, а можно поэкспериментировать с числами Фибоначчи. Я всегда подбираю на глаз.

Игровая механика

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

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

Пример игры-головоломки на основе физики
Пример игры-головоломки на основе физики

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

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

Пример игры в жанре три-в-ряд
Пример игры в жанре три-в-ряд

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

Пример простого платформера.
Пример простого платформера.

Механика платформера отлично подходит для знакомства с основами программирования. Именно этот жанр ассоциируется у большинства с пониманием того, что такое игры. Возможно, эти ощущения идут из прошлого. Именно платформеры преобладали на приставках Dendy и Sega. А про эти приставки в России знает каждый. Должен знать во всяком случае.

Сделать интересный платформер не так просто. Их и так слишком много в разных вариантах и комбинациях. Для марафона я выбрал именно такую механику.

Пример персонажей для игры в жанре визуальной новеллы
Пример персонажей для игры в жанре визуальной новеллы

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

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

Пример приключенческой аркады
Пример приключенческой аркады

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

Сюрреалистический квест
Сюрреалистический квест

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

Пример top-down shooter'а.
Пример top-down shooter'а.

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

Отборный микс с сюрреалистической основой
Отборный микс с сюрреалистической основой

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

Итоговый подсчёт времени

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

  • Игровое окружение: фоны, платформы, гриб, пузырь, шипы, анимация взрыва — в общей сложности 3 часа.
  • Игровые звуки — 30 минут.
  • Музыкальное сопровождение: один трек — 40 минут.
  • Перенос всех картинок и частичное их редактирование — 2 часа.
  • Дизайн уровней: 7 вариантов — в среднем по 10 минут на каждый.
  • Программный код — 2 часа.
  • Прочее — 3 часа.

Итого 12 часов и 20 минут. Можно смело округлить до 13 часов. Теперь прибавляем 6 часов разработки за первый день и получаем 19 часов. Это даже меньше суток!

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

Пункт «прочее» подразумевает тестирование игры и исправление мелких огрехов. С первого раза за всем не уследишь, поэтому полезно оставить игру на некоторое время. А потом просмотреть свежим взглядом.

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

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

Про деньги

А теперь самое интересное. Сколько можно заработать на игре, сделанной за три дня? Меня тоже волнует этот вопрос, поэтому я всё подсчитал. С удовольствием поделюсь с вами расчетами. Однако они требуют небольшой преамбулы, чтобы прояснить некоторые тонкости.

Логика расчетов такова: в месяц можно сделать три посредственные игры. Из расчёта одна неделя на одну игру, включая все необходимые подготовления на Steam. Оставшиеся дни месяца пусть разработчик использует на свое усмотрение. Например, на творческий поиск или философские размышления об индустрии.

Сразу скажу, что не учитывал в расчётах некоторые налоги и временные затраты на одобрение проекта в Steam. Это не так важно, потому что я исходил из наихудшего варианта. Выглядит он следующим образом: около 10 долларов в месяц с одной игры и 50 долларов с каждой распродажи. Очень пессимистичный вариант, но наиболее вероятный для проектов низкого качества. Также я не учитывал приток посещений на страницу проекта в Steam за счет дополнительной рекламы со сторонних ресурсов. Смысл такой: сделал игру, выложил её в магазин, поставил скидки и забыл. Больше никаких усилий.

Для удобства восприятия размещу пару иллюстраций и поясню их.

Один год — одна игра и шесть периодов со скидкой.
Один год — одна игра и шесть периодов со скидкой.

Для начала я посчитал заработок с одной игры. На картинке, которая чуть выше, обозначен условный год. Каждый квадратик — это месяц. Символ иностранной валюты обозначает заработок в 10 долларов, а символ процентов — дополнительный заработок в 50 долларов на периодах со скидкой. Очевидно, что за год игра захватит минимум четыре сезонные распродажи на Steam. Однако толку от них мало. На распродажах огромное количество хороших игр с отличной скидкой. Большая удача, если кто-то решит купить посредственный проект вместо очередного хита. В этом случае не спасает даже скидка в 90%. Возможен вариант, когда игрок скупает посредственные проекты на сдачу от основных покупок. Именно поэтому я приравнял сезонные распродажи к обычным периодам со скидкой. Таких периодов получится около шести в год. И здесь я тоже ориентируюсь на худший вариант — дополнительный заработок в 50 долларов.

В итоге одна игра может принести целых 420 долларов в год. Из этой суммы стоит вычесть 100 долларов на покупку игрового слота, который позволяет опубликовать одну игру в Steam. Также имеет смысл вычесть 30%, которые заберёт себе торговая площадка. Ну, и напоследок я вычел ещё 18% от общей суммы. Это налог на продажу цифрового контента, введённый в России с 1 января 2017 года. В подробности налогов я не вникал. Знаю только то, что в каждой стране сборы разные. Но я посчитал эти 18 процентов — так финальная цифра обретает более пикантное значение.

Около 166 долларов в год на одной игре. Это примерно 10 тысяч рублей. Цифры впечатляющие и даже завораживающие. Не понятно только одно: почему так много людей стремится попасть в игрострой?

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

Вторая итоговая цифра уже более вдохновляющая — целых 666 долларов. Это примерно 40 тысяч рублей.

Теперь посчитаем заработок с 12 игр — одна игра в месяц.

Заработок с 12 игр
Заработок с 12 игр

Думаю, логика моих расчётов ясна. Она отображена на картинке, которая чуть выше. С каждой новой игрой происходит потеря одного месяца, что также сказывается и на периодах со скидкой. Осталось вычесть уплату за слоты и налоги. В итоге получается около 720 долларов. Это примерно 43 тысячи рублей. Добавим прибыль с продажи ключей в бандлах от каждой игры. Получим около 4,3 тысячи долларов, что эквивалентно 260 тысячам рублей в год с 12 игр.

Немного поясню: я исхожу из расчёта один бандл в два месяца — аналогично периодам со скидкой, но с дополнительным заработком в 100 долларов. Эти цифры немного отличаются от расчетов для одной игры, где я учитывал дополнительный заработок с бандлов в 500 долларов. Погрешности, которые не так сильно важны, но облегчают подсчёты.

Идея в том, чтобы делать по три посредственных игры в месяц, а это уже 12,9 тысячи долларов или 774 тысячи рублей. А также около 84 дней условного отпуска. А если добавить праздничные и выходные дни, то получится около 200 свободных дней. И не стоит забывать, что для разработчика следующий год начнется с подготовленной базой и гарантированным заработком.

Надеюсь, вы понимаете, что достаточно сотни таких разработчиков и Steam пополнится на 3600 посредственных игр в год. Я сам частично выбрал подобный путь. И не вижу в этом ничего плохого. Пока Steam будет давать такие возможности — ими будут пользоваться. В моём городе средняя зарплата в 15 тысяч рублей — это 180 тысяч в год без учёта отпускных и премиальных. 28 дней отпуска. В 2018 году 118 выходных или праздничных дней. Это 146 свободных дней. Ощущаете разницу?

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

Общий итог

Я не призываю разработчиков закидывать Steam некачественными проектами. Мне важно объяснить игрокам, почему количество посредственных игр растет. Не забывайте, что игрострой движется в сторону упрощения и массовости. Процесс создания игр становится доступным для каждого. Успех популярных новинок сводит многих игроков с ума. Они хотят попробовать себя в игрострое. Вдруг повезёт и молодой парень или девушка станет миллионером, слепив простенькую игру за три дня. А потом яхта, Гавайи и счастливая жизнь. Но это потом, а пока нужно начать с малого — засунуть свой проект в Steam.

Разве это плохо? По-моему, Steam — это единственная площадка, которая позволяет разработчику делиться своими трудами так просто. Все игроки разные и разработчики тоже. У каждого свое мнение и видение индустрии. А Steam позволяет высказываться абсолютно всем. И это хорошо.

Ну, а теперь про результат трёх дней разработки. Игру можно скачать бесплатно на Itch'е. Она короткая и многие огрехи обусловлены временными ограничениями. Рассуждать на тему того, можно ли назвать такую игру полноценной, я не буду. Вопрос весьма дискуссионный. Главное, что даже на таком игровом варианте можно заработать денег. Этим я и займусь.

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

Не забудьте заглянуть в мою группу. Я, пожалуй, сделаю небольшой перерыв на пару дней — соберусь с мыслями. А вам желаю успехов и добра! До встречи!

6767
62 комментария

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

18
Ответить

Все будет хорошо. Valve что-нибудь придумают, наверное...

2
Ответить

То что описано в статье в последних абзацах это мракобесие, не имеющее ничего общего с творчеством и инди-играми, которое при этом ведёт к коллапсу инди-сектора стима. И видно что автору далеко похрен на инди игры и прочее, ему надо урвать крошки со стола, пока лавочку не прикрыли.

И как бы хрен с ним, это его выбор клепать мусор ради продажи ключей, но он ещё и мотивирует заниматься тем же остальных, описывая как всё просто и ничего плохого в этом нет.
Из-за подобных конвеерщиков по-настоящему качественным играм всё сложнее становится быть замеченными на выходе, потому что их сопровождают "сотни таких разработчиков и Steam пополнится на 3600 посредственных игр в год".

Пока Габен не введёт хоть какой-нибудь цензор на качество проектов этот парад мусора в стиме не прекратится.

17
Ответить

Будем надеяться на то, что Габен что-нибудь предпримет :)

2
Ответить

Все же я думаю, что стим со временем что-то изменит. Либо даже такие варианты станут не выгодны, когда игр станет по 30 тысяч в год появляться.

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

Мне на самом деле все равно сколько игр будет выходить, пусть хоть 100 тысяч в год. Главная проблема в том, что интересующие меня игры тонут в потоке. Я конечно не о ААА, а о небольших инди-играх, которые сделаны качественно и не за 3 дня.

В наше время вот те все инди-хиты о которых все вспоминают, вроде Фез, Митбой, Брайд, никто бы не заметил и продажи у них были бы в лучшем случае раз в 10 меньше. Это в самом лучшем случае.

7
Ответить

Согласен с Вами.

Ответить

Каждый день заходите в раздел новинки в стиме и листаете, обычно там всего пару страниц. Потратите от 10 до 30 минут, зато никогда ничего не пропустите.

Ответить