Опыт создания игры на Unity без знания Unity

LUGjIIm

Введение

Добрый день. С недавних пор, передо мной (я программист) и моим знакомым дизайнером встала задача – необходимо заработать деньги на получение образования. Недолго думая, мы решили, что в связке «программист – дизайнер» можно было бы заработать на создании игры, так что эта история о том, как мы, имея нулевой опыт в данной сфере, пытались в неё влиться. Поскольку в Steam теперь можно загружать игры всего за 100$, то продавать свой продукт мы решили именно на этой площадке.

Начало разработки

Т.к. время на разработку у нас было ограничено (3-4 мес.), а сами мы тратили много времени на учебу, то необходимо было разработать какую-нибудь простенькую игру, которая могла бы хорошо продаться. Решили мы сделать игру, наподобие Hyper Light Drifter. Эта игра нам показалась простая в реализации, так что если сделать что-то подобное без красивых кат-сцен, то мы бы уложились вовремя и могли заработать нужную сумму. Хотели мы сделать игру с частично открытым миром, прокачкой, покупкой снаряжения и т.д. (в общем, обычная RPG). Главной особенностью игры было то, что единственные ваши враги – это боссы, а чтобы дойти до них – вам потребовалось бы бегать по миру, решать загадки, преодолевать ловушки и т.д. Для реализации программной части я выбрал Unity, т.к. знал все необходимые языки (c# и js). Проблема заключалась только в том, что мне он был незнаком (да и раньше в подобных движках не ковырялся), а сроки были невелики, так что пришлось изучать его прямо во время разработки игры. На данном этапе композитора у нас еще не было. У меня на примете было несколько знакомых музыкантов, и мы хотели обратиться к ним на более поздних этапах разработки. В случае их отказа можно было бы просто купить уже готовую музыку.

Первые трудности

Спустя месяц разработки, мы поняли, что абсолютно не укладываемся в сроки (3-4 месяца) и нужно что-то с этим делать. После размышлений мы решили, что можно преобразовать эту игру в формат арены, где на вас шли бесконечные потоки врагов. Спустя какое-то время мы были вдохновлены статьей про разработчика Адама Никерсона, где рассказывалось, как он без особых знаний программирования написал игру, которая неплохо продавалась и дала ему возможность делать новые игры, так что мы решили перенять его методы по продвижению игры и уже второй раз сменили концепцию, но в этот раз уже кардинально. Игра Адама Никерсона – это космическая аркада, где вам приходится отбиваться от бесконечных врагов с нарастающей сложностью. В этот раз мы просто взяли за основу игру Адама и добавили в неё некоторые отличия: ·

  • динамичный геймплей;
  • милая стилистика.

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

Процесс разработки новой игры

Процесс разработки – это рутинное программирование и рисование. Программировать игру на Unity с нулевыми знаниями движка было очень тяжело, но форумы и документация могли дать ответы на все возможные вопросы, а опыт программирования (7 лет) позволил быстро вникнуть в суть этого движка. Из-за постоянного потока новых знаний и функций Unity в процессе разработки, приходилось иногда переписывать некоторые функции для реализации более сложных механик или оптимизации игры.

Поддержка геймпадов

Изначально у меня был геймпад от XBOX360, а потому я наивно разрабатывал игру именно под него. Ближе к концу разработки, когда управление геймпадом было уже реализовано, мне предоставили геймпад Logitech 4, и, о ужас, индексация кнопок на нем была совсем другая! Поискав информацию в интернете, я нашел несколько способов добавления поддержки разных геймпадов:

  • Написать код для поддержки геймпада
  • Купить ассет (таких бесплатных мы не нашли в Assets Store), который выполнит пункт 1 за меня.

Т.к. денег на ассеты у нас не было, то я начал пытаться реализовать поддержку разных геймпадов через первый пункт, однако довольно быстро понял, что это неоправданно трудоемкий процесс и стоит оставить поддержку только геймпада XBOX360, надеясь, что другие XBOX-геймпады имеют те же индексы. Спустя какое-то время, позор и стыд за такой костыль начали терзать мою душу, а потому я с новыми силами начал искать информацию по данной теме, и, о чудо, я нашел богом забытый бесплатный ассет InControl на GitHub, который давным-давно не поддерживается (В Assets Store его поддержка продолжается, но он платный). Благодаря ему, можно за пару кликов настроить поддержку почти всех геймпадов!

Музыка

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

Системные требования

Для определения системных требований я пытался найти программу, которая бы анализировала потребляемые ресурсы игрой и выставляла рекомендуемую конфигурацию компьютера, но… такой просто нет (или просто не нашел). Пришлось анализировать потребляемые ресурсы самостоятельно и выставлять нужные требования.

Делаем игру дорогой дёшево

Пока я баловался с Assets Store в Unity, случайно наткнулся на ассет (https://assetstore.unity.com/packages/essentials/post-processing-stack-83912), связанный с пост-обработкой графики, одной из функций которого был блум всех отображаемых элементов в камере. Применив и грамотно настроив блум к элементам главного героя, (пули и сам гг) игра стала выглядеть намного «дороже» всего за несколько кликов мыши.

Продвижение игры

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

  • В Steam есть возможность ставить себе в профиль на публичное обозрение значки и достижения из игр, так что этим элементам мы уделили особое внимание (вдруг кто решит приобрести игру ради них).
  • Нами было подмечено, что в сообществе Steam особо популярны сердечки, так что мы решили ставить их везде, куда только можно (карточки, фоны, смайлики, значки и.д.) ·
  • Т.к. игру никто не знает, то мы постарались оформить её страницу визуально дорого (Пример дешевого оформления, пример дорогого оформления), а также необходимо было чтобы различные графические элементы (представление в списке, главная картинка и т.д.) выделялись на фоне других игр.
  • Добавили поддержку геймпада, игру на двоих за одним компьютером, таблицы рекордов, достижения и всё что могли, лишь бы охватить больший круг геймеров. · Немного рассказали о своей игре на разных ресурсах, посвященных геймдеву.

Заключение

В итоге над этой игрой мы работали почти 4 месяца. Игра была выпущена совсем недавно и носит название NYAN DESTROYER. Перейти на страницу с ней можно по ссылке http://store.steampowered.com/app/773130/NYAN_DESTROYER/.

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

Будем рады услышать ваши рекомендации и ответить на вопросы.