Всем привет!

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

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

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

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

  • Система сохранений.

  • Система изменения разрешения.

  • Баланс между графикой и производительностью.

  • Пользовательский интерфейс (UI).

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

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

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

Код

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

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

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

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

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

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

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

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

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

Геймплей

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

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

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

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

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

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

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

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

Ресурсы

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

  • Петролеум

  • Топливо

  • Энергия

  • Вода

  • Кислород

  • Газ

  • Очки технологий

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

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

Управление

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

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

  • Сюжетная кампания — основной режим с историей.

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

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

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

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

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

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

  • Не делайте стратегию в одиночку или вдвоём.

  • Продумывайте текстурные и аудиогруппы заранее. Вообще продумывайте архитектуру проекта как бы. Это сэкономит много времени при создании уровней. Учитывайте ограничения выбранного движка и свои навыки ещё на этапе планирования.

  • Не создавайте игры со сложным UI в Game Maker. Возможно, ситуация изменится, но сейчас это оч геморно.

  • Создавать игры с поддержкой геймпада выгоднее, чем сложные стратегии на ПК.

  • Не создавайте “hard-coded” текст. Используйте .csv-таблицы. Если не знаете, как это сделать, обязательно научитесь.

  • Старайтесь использовать меньше шрифтов.

  • Сохраняйте лицензии на все используемые звуки и музыку. Делайте это сразу, чтобы потом не терять время на поиск источников.

  • Не используйте видео в коммерческих играх. Кодеки — это отдельная головная боль, которая вряд ли стоит результата.

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

  • Чаще рассказывайте о своей игре. Общайтесь с аудиторией, делитесь процессом и идеями.

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

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

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

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

Спасибо!

Комментарии (14)


  1. GospodinKolhoznik
    21.12.2024 12:27

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

    В любом случае удачи вам с вашей игрой!


    1. butuzoff_ya Автор
      21.12.2024 12:27

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


    1. diakin
      21.12.2024 12:27

      Да конечно. Начиная с первой UFO )))


      1. GospodinKolhoznik
        21.12.2024 12:27

        X-COM хороша, но она скорее держит в напряжении, чем пугает. А так и шахматы могут держать в очень сильном напряжении - когда конь противника занял центр доски, а ладья контролирует целую вертикаль, то от напряжения воздух искрит! Но это же не ужастик.


        1. diakin
          21.12.2024 12:27

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


          1. Plague
            21.12.2024 12:27

            Там была потрясающая пульсирующая музыка, а решение вставить звуки слышимые на карте - скрип двери, звуки смерти и пр., было потрясающе погружало в атмосферу игры.

            Хоррор-стратегия, мне кажется, это больше об атмосфере, а не о напугать.


        1. SadOcean
          21.12.2024 12:27

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


    1. Fen1kz
      21.12.2024 12:27

      Сразу на ум приходит Duskers: https://store.steampowered.com/app/254320/Duskers/

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

      Если ещё подумать, ещё бы добавил The Last Spell. Там не то чтобы хоррор, но если погрузишься в игру, то очередная волна монстров может напугать "да как же я это буду проходить!?!??!"


  1. Jijiki
    21.12.2024 12:27

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

    игра красивая. успехов


    1. butuzoff_ya Автор
      21.12.2024 12:27

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


  1. kanasero
    21.12.2024 12:27

    Сколько времени заняла разработка? Дизайн, модели сами рисовали или покупали/заказывали?
    Предыдущие разработанные вами игры принесли какой-то доход?
    Разработка игр для вас это просто хобби "для души" или рассчитываете на какой-то ощутимый финансовый результат?


    1. butuzoff_ya Автор
      21.12.2024 12:27

      Уже второй год, она продолжается все ещё, но скоро уже финишная прямая. Да, нас двое: подруга рисует, я - пишу код, придумываем вместе. Нет, это моя основная работа уже лет 6, но результат только в том и состоит, что я пока ещё могу позволить заниматься любимым делом с зп ниже среднего. И никогда не знаешь, как долго это продлится, найдется ли издатель на новую игру и так далее.


  1. anoneko
    21.12.2024 12:27

    Что делать, если есть только идея механики игры (пошагова стратегия/тайкун с экономикой), но нет идей для визуала вообще? Легко советовать не делать игры в одиночку, но это равняется вообще не делать игры. Будь идеи для визуала, их можно было бы хотя бы нагенерить в SD, а у меня только прототип экономического движка в Twine (текстовый).


    1. DaneSoul
      21.12.2024 12:27

      Что делать, если есть только идея механики игры (пошагова стратегия/тайкун с экономикой), но нет идей для визуала вообще?

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