Игра на пустом месте
Пост о нелегком, но чрезвычайно интересном пути из ниоткуда к готовой игре.
Введение
Долгое время с игростроем меня связывала только работа среднестатистическим 3d-художником в филиале одной не шибко известной компании, да вялые попытки вырваться, наконец, на ниву инди-разработки с её неограниченной свободой и баснословными доходами. По крайней мере, именно таким казался мне независимый геймдев по прочтении многочисленных success-stories.
Реальность, однако же, всегда охлаждала мой пыл, напоминая об отсутствующих навыках программирования, управления проектами, умении что-то продавать, опыта разработки хоть чего-нибудь… в сущности, об отсутствии всего, что было необходимо для начала работы над своей собственной игрой. За исключением, пожалуй, владения 3d на некотором уровне.
С деньгами тоже была напряжённая ситуация, поэтому опция «взять — и вложить всем известные $70k в разработку, а на выходе получить готовую конфетку, расхватываемую геймерами как горячие пирожки», для меня тоже оказывалась недоступной.
Но в топках энтузиазма вовсю кочегарилось желание. Поэтому было принято решение во что бы то ни стало таки начать (и обязательно закончить!) воплощать в жизнь одну из множества постоянно придумываемых мной идей игры. И вот, в одно прекрасное утро на мой компьютер был неспешно установлен и запущен замечательный инструмент Unity3d, который через несколько секунд уже выжидающе смотрел на меня девственно пустым окном нового проета.
Следующие месяцы были проведены в невероятно интересной атмосфере изучения огромного количества новой для меня информации и экспериментирования над своим будущим детищем. Об этом процессе я и хотел бы вам рассказать.
Концепт и подготовка прототипа
Мне не хотелось браться за что-то большое и сложное. Чем проще, тем лучше — таков был мой девиз. В планах не было вязнуть в непреодолимых задачах и неперелопачиваемых в одиночку объёмах работы. Идея была проста и относительно оригинальна: лабиринт с возможностью прокручивания отдельных квадратных его участков, а-ля plumber game. Поворачивая плитки с участками лабиринта, игрок строит путь к выходу.
Каждый кусочек (плитка) помимо текстуры представляет из себя нехитрый набор характеристик:
- Плитка всегда имеет сквозной проход
- Плитка может иметь глухие внешние стенки и/или один тупиковый ход
- Имя плитки состоит из четырёх цифр, характеризующих её внешние стенки, начиная с верхней по часовой стрелке. Например, имя 0212 говорит о том, что плитка имеет глухую верхнюю стенку, один тупиковый проход снизу и один сквозной проход, соединяющий левую и правую стороны
- Четыре бита (по одному на каждую сторону), описывающие соединение пройденного пути с рассматриваемой плиткой. Например, 0001 означает, что с левой стороны в плитку упирается пройденный игроком путь
- Массив из четырёх целых чисел, полученный поциферным перемножением предыдущих двух чисел. Элементы этого массива показывают, какие проходы в плитке присоединяются к уже построенному пути
Не все плитки, показанные на рисунке, соответствуют правилам, поэтому лишь некоторые из них я использовал в игре
Каждая плиточка в игре представляет собой три квада (четурёхугольника), находящихся один над другим. Самый нижний квад отображает подложку — базовую текстуру стенок и тёмного непройденного пути. Два других квада имеют текстуру пройденных участков плитки, «включающихся», если игрок построил путь через неё. Для наглядности прилагаю картинку:
Накладываясь один на другой, квады при прямом изометрическом виде дают картинку готовой плитки
Из таких вот плиток и состоит игровое поле, являющееся двумерным массивом. Первый элемент массива всегда представляет начало лабиринта ([0, 0]
левая нижняя плитка), последний — конец ([width – 1, height - 1]
правая верхняя плитка).
Желтая плитка имеет имя 2210 и массив входов 0001
Самое интересное заключалось в том, чтобы придумать и реализовать алгоритм прорисовки построенного пользователем пути. Здесь я тоже не стал мудрствовать лукаво, и в спойлере ниже можно посмотреть, что у меня получилось.
Добавление плюшек и удержание мысли в узде
Параллельно допиливанию рабочего прототипа полным ходом шла подготовка текстур. Этот этап для меня был самым простым и ничего особенного из себя не представляет. Я старался выдать максимально приятную глазу картинку, попиксельно выверяя каждый свой шаг. Помучиться пришлось разве что с кастомным шрифтом. Дело в том, что я совершенно не хотел использовать TTF и сконцентрировлся исключительно на BitMap fonts. Для использования шрифтов, реализованных текстурой с прозрачностью в альфа-канале, в Unity на данный момент нет удобных бесплатных инструментов. И, так как финансовые траты я с самого начала решил свести к нулю, пришлось шрифт делать руками от начала до конца, включая прорисовку и UV-маппинг каждой буквы. Наградой за унылую монотонную работу мне стал полностью готовый к использованию симпатичный шрифт. Подробнее о том, как я делал шрифт, я писал в другом посте.
Изначально планировалось, что игра будет выполнена в трёх сеттингах с оригинальными особенностями геймплея в каждом из них, содержать кучу разнообразных монстров, оружие для их уничтожения и много чего ещё. Включая даже возможность лишать вереницу бредущих по пустыне путников некоторых материальных ценностей. Но в процессе работы быстро стало понятно, что мне такой объем контента просто не потянуть в одиночку. Поэтому было принятно решение ограничиться одним «каменным» сеттингом, сокровищами, разбросанными по разным углам лабиринта, запертыми на замок сундуками/дверьми и ключами к ним. Такой простенький набор вполне вписывался в стратегию «проще — лучше» и требовал совсем не много сил на реализацию
Завершение процесса
Работа спорилась и, несмотря на то, что я мог уделять проекту лишь свободное от основоной работы время, довольно ощутимо подходила к концу. Впору было задуматься о каком-никаком продвижении. Несколько дней поизучав вопрос и прочтя диагональным методом несколько книжек, я снова погрузился в уныние. На повестку выползло понимание, что без приличных затрат на рекламу ни о какой сколь-нибудь интересной прибыли можно даже не думать. Отсутствие денег, в течение всего процесса помогавшее мне оставаться верным правилу «свести затраты на разработку к нулю», не подвело и в этот раз. И на рекламу тратиться не пришлось. Впрочем, на покупку аккаутна продавца Google и домена с
Еще одним неприятным моментом стала для меня новость, что у меня нет возможности продавать игру в Play Google в связи с отсутствием моей многострадальной страны в соответствующем списке (мне оставили, впрочем, возможность хоть как-то монетизироваться через рекламу в игре).
Но забивать на почти готовый проект смысла уже не было, и остатки сил я бросил на допиливание и вылизывание игры до состояния близкого к идеальному в моём субъективном понимании этого слова. Чем я и занялся. Не за горами был день, когда я с уверенностью мог сказать, что мне удалось осуществить свою мечту.
Итоги
И вот, по прошествии полугода со времени старта, игра готова! За месяцы, проведенные в изучении самых различных аспектов игростроя, я получил гиганское количество опыта, научился множеству интересных и увлекательных штук, заработал сколиоз и плоблемы со зрением, и, главное, получил заряд удовольствия от того, что мне удалось претворить свою мечту в жизнь.
Говорить о популярности игры пока еще слишком рано, равно как и о её интересности для геймеров. Если всё сложится удачно, я посвящу этом отдельный пост.
Послесловие
Имеются планы по портированию игры на iOS, если удастся наскрести на аккаунт разработчика Apple. C портом по идее не должно возникнуть трудностей, спасибо могущественному Unity3d. Так же хочется заняться постепенным добавлением новых фич, прощупыванием почвы монетизации через внутриигровые продажи (если я не ошибаюсь, AppStore позволяет совершать валютные операции резидентам Украины), реализацией множества других задумок как в отношении этого проекта, так и относительно новых, которым только предстоит появиться на свет.
Автор: fondemzel