Как я разрабатывал хоррор-стратегию на Game Maker, что из этого вышло и пара советов

Всем привет!

Меня зовут Яков, и я инди-разработчик. Возможно, вы играли в мои предыдущие проекты: Dom Rusalok и Loretta. Два года назад мы с подругой решили создать стратегию. И вот, спустя год с момента моей первой статьи об Anoxia Station, я решил подвести итоги работы — как для себя, так и для тех, кто следит за нашим творчеством.

Anoxia — это однопользовательская пошаговая стратегия с элементами научной фантастики и survival horror. Это игра о безграничной жестокости и жадности человечества.

Как я разрабатывал хоррор-стратегию на Game Maker, что из этого вышло и пара советов

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

Каждый новый проект — новый вызов. Например, в Loretta такими вызовами стали локализация на CJK-языки и внедрение управления геймпадом. В Anoxia Station вызовы встречаются каждый день. Однако самыми сложными для меня стали:

  • Система сохранений.
  • Система изменения разрешения.
  • Баланс между графикой и производительностью.
  • Пользовательский интерфейс (UI).

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

Как я разрабатывал хоррор-стратегию на Game Maker, что из этого вышло и пара советов

Код

Не устаю повторять: я не программист. Несмотря на то, что занимаюсь этим уже 6 или 7 лет. Моя главная проблема в том, что у меня нет систематических знаний, и я не знаю ни одного языка программирования, кроме GML.

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

Вообще, мне иногда кажется, что я сошел с ума, раз решил сделать стратегию на Game Maker. Хотя я и люблю этот движок за его гибкость и возможность воплотить практически любую идею, примеров успешных стратегий на GM почти нет. Единственный, который приходит в голову, — Norland. Но наши игры и команды совершенно разные. Anoxia Station — гораздо более камерная.

Как я разрабатывал хоррор-стратегию на Game Maker, что из этого вышло и пара советов

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

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

Что я точно ненавижу, так это баги. Я считаю, что игрокам неважно, как именно написана игра. Главное, чтобы в ней всё работало без ошибок. Тут моя тупость и упертость спасают: пока не исправлю всё, что можно, не успокоюсь.

Из приятного: я смог адаптировать Anoxia Station под Steam Deck. Не думаю, что нам дадут зеленую галочку, потому что игра не поддерживает управление геймпадом. Но благодаря магии Steam API всё работает так, как надо.
Из приятного: я смог адаптировать Anoxia Station под Steam Deck. Не думаю, что нам дадут зеленую галочку, потому что игра не поддерживает управление геймпадом. Но благодаря магии Steam API всё работает так, как надо.

К сожалению, в Game Maker, по крайней мере, сейчас, нет визуального редактора интерфейса. Это значит, что каждую кнопку мне приходится вручную размещать на определённых координатах. Затем нужно скомпилировать игру, посмотреть, как она выглядит, и, если что-то не так, повторить процесс. И так для каждого доступного разрешения.

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

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

Вот примерно так, ручками, я сохраняю тайлы.
Вот примерно так, ручками, я сохраняю тайлы.

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

Геймплей

За время разработки я упоминал множество игр, которые так или иначе вдохновляли меня. Но если сократить список, то самые близкие аналоги — это Into The Breach, Polytopia и Frostpunk. Задача в игре вроде простая: обнаружить ресурсы, добыть их, выполнить задания и покинуть сектор до наступления сильного землетрясения.

Но не тут-то было!
Но не тут-то было!

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

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

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

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

Как я разрабатывал хоррор-стратегию на Game Maker, что из этого вышло и пара советов

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

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

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

Ресурсы

В игре представлены следующие ресурсы:

  • Петролеум
  • Топливо
  • Энергия
  • Вода
  • Кислород
  • Газ
  • Очки технологий

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

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

Несмотря на мрачную атмосферу, в игре есть место для юмора.
Несмотря на мрачную атмосферу, в игре есть место для юмора.

Управление

Терранавтами руководит высший состав героев — офицеры с различными специальностями и уникальными способностями. В начале игры вы выбираете своего героя-аватара. Его смерть означает конец игры.
Терранавтами руководит высший состав героев — офицеры с различными специальностями и уникальными способностями. В начале игры вы выбираете своего героя-аватара. Его смерть означает конец игры.

Игра предлагает два режима:

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

Кроме того выбор сложности тоже влияет на фактор случайности.

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

Как я разрабатывал хоррор-стратегию на Game Maker, что из этого вышло и пара советов

Я думаю, игра получилась сложной. И, возможно, не всем понравится её сюжет. Но моя теория такова: интерес к игре рождается в процессе обучения. Когда ты впервые сталкиваешься с правилами, начинаешь их понимать, ошибаешься, находишь новые пути — именно в этом и заключается магия. За время разработки я уже потерял объективность и не могу оценить игру как обычный игрок. Может, это вообще невозможно.

Советы разработчикам

Если вы тоже хотите создать игру, вот немного сермяжной правды:

  • Не делайте стратегию в одиночку или вдвоём.
  • Продумывайте текстурные и аудиогруппы заранее. Вообще продумывайте архитектуру проекта как бы. Это сэкономит много времени при создании уровней. Учитывайте ограничения выбранного движка и свои навыки ещё на этапе планирования.
  • Не создавайте игры со сложным UI в Game Maker. Возможно, ситуация изменится, но сейчас это оч геморно.
  • Создавать игры с поддержкой геймпада выгоднее, чем сложные стратегии на ПК.
  • Не создавайте “hard-coded” текст. Используйте .csv-таблицы. Если не знаете, как это сделать, обязательно научитесь.
  • Старайтесь использовать меньше шрифтов.
  • Сохраняйте лицензии на все используемые звуки и музыку. Делайте это сразу, чтобы потом не терять время на поиск источников.
  • Не используйте видео в коммерческих играх. Кодеки — это отдельная головная боль, которая вряд ли стоит результата.
  • По-возможности, используйте меньше шейдеров. Особенно, если вы не пишите сами, а покупаете их или находите и внедряете. Нет гарантии, что шейдер на одной платформе будет работать так же хорошо, как на другой. Keep it simple, короче.
  • Чаще рассказывайте о своей игре. Общайтесь с аудиторией, делитесь процессом и идеями.

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

Как я разрабатывал хоррор-стратегию на Game Maker, что из этого вышло и пара советов

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

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

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

Спасибо!:3

VK:

Телега:

6565
44
11
19 комментариев

О. Она у меня в вишлисте давно

8

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

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

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

По-моему все программисты так и работают

6

так работают все, особенно те кто не пограмист, но работает за компом

3

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

2

спасибо, мне тоже :)

1

Эта уже в вишлисте за визуал и концепцию. Ждём)

1

Яша - хороший мужик и разработчик)

1