Pull to refresh

Разработка первой игры. Впечатления и работа над ошибками. Часть 1

Reading time8 min
Views18K


Создание первой игры от начала до раннего доступа в Steam. Субъективное мнение о инди разработки собственными силами. Делюсь личным опытом, проблемами с которыми придется встретится. Затрону будущее обновление своей игры в качестве примера работы над ошибками.

Чтобы вы понимали правильно, разработкой игр я занимаюсь приблизительно 10 месяцев из них 5-6 месяцев это плотное изучение игрового движка по статьям, видео урокам и книгам. Одну даже заказал из Москвы. Живу я в Казахстане г. Капчагай. Оставшиеся 5 месяцев – это разработка игры.

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

Почему!?


Во-первых, надоело.

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

В-третьих, крайне высокая конкуренция, зачастую демпинг цен. Обратите внимание на мой «глубокий» сравнительный анализ веб студий и игровых студий в Алматы.


Веб студии в Алматы


Игровые студии в Алматы

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

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

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

Поэтому я решил заниматься разработкой игр пока не поздно.

Плюсы:

  • Глобальный рынок;
  • Огромная платежеспособная аудитория;
  • Крупные игровые магазины, у которых, все поделено и есть относительно понятные правила игры;
  • Возможность творить и фантазировать;
  • Входа с хорошей идеей без больших первоначальных вложений;
  • AI доберется туда не так скоро. Он умеет играть в игры, копировать, но не создавать по принципу от идеи до реализации. Но насколько мне известно он отлично используется для увеличения продаж внутри игровых покупок и показе рекламы;
  • Игры связаны с современными трендами VR и AR;
  • Мне просто нравится делать игры!

Минусы:

  • Конкуренция;

Почему так мало минусов. Не хочу портить себе настроение.

Моя первая игра


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



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

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

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

image

Если появится непреодолимое желание поиграть, добро пожаловать в Steam

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

Разработка первой версии игры


Ранее я выпускал 4 статьи посвящённой первой версии разработки игры. Достаточно ввести в поиск «Первая игра от полного нуля до альфы. Пишу свою историю разработки Horde Attack» и почитать. Плюс многие темы разработки будут перекликаться с главой об обновлении игры.
Для хабра я оставил самое вкусное. Наблюдение и выводы сделанные в процессе разработки и работу над ошибками.

Как это, выпустить игру в Steam. Личные впечатления.


После того как Horde Attack прошла Greenlight. Научился процесс подготовки выпуска игры в ранний доступ. Этот не сложно, но займет много времени. Для начала нужно получить статус ИП чтобы можно было продавать игру, здесь это происходит быстро. Ушло примерно дней 5-7 на полное оформление документов, получение счетов и так далее. После того как получаешь все документы, данные необходимо отправить в Steam на проверку, которая занимает 30 дней.

Одной из трудностей с которыми сталкиваешься это «объем различной информации». От тебя требуется изучение вопроса налогообложения, юридических вопросов, лицензий, авторских прав и все это относится к другой стране. Некоторым пунктам приходится уделять много времени для изучения. Меня не покидало ощущения ошибки или корректности вводимой информации. Я до сих пор не уверен, что все сделал правильно =)

В результате после заполнения всех необходимых форм 10 июля я отправил данные на проверку и 11 июля в 5 утра сел в самолет и с другом отправился в путешествие в 15 городов на юге России. Мне нужен был отдых.

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

Страница в магазин проходит проверку 2-3 дня. И если ты ошибаешься, то необходимо повторно отправлять на проверку и ожидать ответа. Один раз меня забраковали. Во второй раз одобрили, но попросили внести ряд изменений для увеличения эффективности. Тех. поддержка в Steam дружелюбная, за это им большое спасибо!

Следующий этап — это подготовка сборки игры. Здесь сложностей у меня не возникало, Steamworks SDK достаточно просто. Проверка занимает 3-5 дней. Но и здесь я нарвался, указал что есть русский язык в интерфейсе, а его там нет. Пришлось сдвинуть выпуск еще на 5 дней.

В итоги игра вышла 15 сентября.

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

Жизненный цикл игры


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

Для меня это очень актуально. Из моих трудовых ресурсов это ноутбук и я. Поэтому о полноценном тестировании говорить не приходится. Я пошел на риск и выпустил сырой продукт. Особенно когда ранний доступ Steam для этого и предназначен.

Я был готов к любой критики с целью получить качественную обратную связь. И получил….

Ну что сказать? Я впечатлен! Впечатлен игрой, геймплеем, эпичным зрелищем и смелостью разработчика.

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



Но в целом отзыв положительный и полезный. Вот видео игры от Mihailovich

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

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

Продвижение игры после старта


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

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

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

Но об этой истории в следующих статьях.

Обновление игры, о многом пришлось поразмыслить.


Создание воинов и их уничтожение


Так как Horde Attack это моя первая игра, то конечно я не знал всех тонкостей оптимизации и особенностей в разработке. Весь мой опыт основывался на статьях и видео уроках с YouTube.

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

Я почувствовал это, когда в моей игре появилась возможность генерировать более 1000 воинов. В редакторе Unity торможение начинались при генерации более 300 воинов. В созданной сборке под Windows 64bit. Комфортно играть при 800 – 1000.

На видео обзоре пользователя в Steam видно, что при 1200 начинается небольшие тормоза, но при 1 700 играть, скрипя зубами можно. Еще на видео заметны проблемы с NavMesh. Некоторые воины замораживаются на несколько секунд.


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

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

Проблема заключается в этом небольшом кусочке кода:
Instantiate(warrior, gameObject.transform.position, Quaternion.identity);

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

Destroy(other.gameObject);

Количество охраны + количество в отряде. При условии, что городом владеет игрок.
Когда игрок выходит воины генерируются, и в это момент происходит колоссальная нагрузка. Происходит создание 100 … 300 … 1000 объектов.

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

Если кратко, проблемами были использование Instantiate () и переполнение памяти и сборщик мусора.

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

Идея пулов простая. При исчезновении объекта он не удаляется, а скрывается, благотворя SetActive(false). При необходимости его появления мы его активируем SetActive(true). Вот и все.

Сейчас я занимаюсь созданием Pool Manager у себя в игре. Теперь я могу зарезервировать (создать заранее) 1000, 2000, 3000 объектов для воинов игрока и врага. После чего активировать по мере необходимости нужное количество. Но из-за этой перестройки пришлось вернуться к уровню кубов и цилиндров.



Немного скриншотов








Прочитать про Pool Manager можно в книгах «Оптимизация игр в Unity 5» и «Искусство создания сценариев в Unity» и конечно поиск.

Еще одним решением которое я принял, это снижение нагрузки в момент генерации воинов из города. Даже с использованием Pool Manager происходит пик нагрузки. За несколько кадров, компьютер создает 1000 объектов. Поэтому при входе в город скрываются нужное количество воинов для захвата города, остальные остаются на карте.

Одним из советов для создателей игр это минимизация использования Instantiate () и Destroy() для объектов которые будут постоянно использоваться в игре.

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

Жду от вас конструктивных отзывов о статье и об игре. Надеюсь вам понравится.
Tags:
Hubs:
+18
Comments32

Articles

Change theme settings