Как Я Решил Заняться Разработкой Игр

Это история о том, как я бросил все и начал делать игры.



Нулевой шаг – решение

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

Тем не менее, хоть предметная область и не менялась, все это меня интересовало довольно давно.

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

Постоянно ищите умные решения нестандартных запросов.

В этом месте часто пишут «и вот в один прекрасный день я понял…», но на самом деле такого дня не было.

Постепенно я понял, что дожил до положения «гуру, сидящего в углу».

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

И в итоге я занимался преимущественно экспертной работой.

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

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

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

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

И время от времени он пытается кого-то просвещать или читать лекции по истории США, Китая или Древнего Рима.

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

В целом тепло, светло и мухи не кусают. Зарплата хорошая по областным меркам.

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

И как-то не принято гуру посылать окопы рыть.

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

Для кого-то эта позиция идеальна, но для меня она смертельно скучна.

И со временем эта скука привела к тому, что предметная область начала основательно подташнивать.

Это означает, что возможность стать менеджером исчезла.

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

Я начал с прохождения начального курса Java на Intuite и не собирался покидать мир крупного корпоративного ПО, но тут мое внимание случайно привлек Unity. Я подумал — эй, это классная вещь.

Вы пишете код один раз в базовом предметно-ориентированном инструменте и портируете его на все платформы? Возможно, оно далеко от оптимального, но все равно фантастика! Я всегда хотел создавать игры.

Наверное, с тех пор, как я научился рисовать круги и линии на экране ZX Spectrum, когда мне было около 10 лет. Это было невероятное чувство.

Думаю, примерно то же самое чувствует и малыш, когда понимает, для чего нужен фломастер.

И он начинает увлеченно рисовать каракули на всем, что попадается под руку.

Я мог писать свои маленькие кусочки геометрических фигур на простом языке в течение нескольких дней.

А свою первую законченную игру я написал, когда мне было около 15 лет. Это был пошаговый Pac-Man. В отличие от классического Pac-Man, в моем геймплей был основан не на скорости, а на логике.

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

До эры казуальных игр для смартфонов было еще 10 лет назад, и игры, которые мог сделать обычный студент, далекий от гениальности (или маниакальной производительности), не имели ни спроса, ни средств распространения.

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

И вот, посмотрев на Unity, я решил стряхнуть с себя былые времена.

Меня очень эмоционально зацепила простота и кроссплатформенность.

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

Решив, что быть инди-это слишком много, я начал искать компании, в которых я мог бы работать.

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

Недостаточно, конечно.

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

Но в целом найти с кем поработать вполне возможно.

Я не хотел отправлять резюме без какого-либо игрового опыта.

Подозреваю, конечно, что мое резюме в любом случае привлекло бы внимание.

Я не думаю, что многие люди переходят от архитектуры корпоративных систем к веселой ферме на своем телефоне.

Я утрирую, конечно.

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

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



Шаг первый – игра

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

Я не играл в платформеры с детства и вообще не люблю головоломки.

Кроме того, недавно я с удовольствием прошел первую Plants VS Zombies и вторую Fieldrunners. И я решил не мудрствовать и сделать что-то вроде Tower Defense. Хотя это уже моветон, я знаю.

Я не хотел копировать геймплей вышеупомянутых игр.

Конечно, в этом нет ничего плохого; самые замечательные игры — это развитие чьих-то идей.

Но меня одолела жажда творчества и желание придумать что-то оригинальное.

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

Наверное, это уже не совсем вписывается в жанр TD, ну да ладно, подумал я.

В конце концов, люди играют в игры, а не в жанры (хотя я признаю, что они играют по жанрам).

И пусть местом действия станет англо-зулусская война.

Потому что первой запомнившейся мне игрой с принципом «управляй элитными войсками против слабого, но очень многочисленного противника» была Zulu Wars еще на Спектруме.

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

В конце концов, Unity предлагает мне поиск пути, расчет столкновений и кучу других вкусностей, изначально разработанных для 3D. Найдя пару бесплатных моделей с анимацией, я заставил чуваков бегать друг за другом и запустил все это на Huawei MediaPad X1 (среднепроизводительный фаблет, отстающий от современных топовых, но незначительно).



Как я решил заняться разработкой игр

В целом результатом остался доволен, ребята бегали, анимация работала.

Вот как это выглядело, розовая линия отладки показывает ключевые точки найденного пути.



Как я решил заняться разработкой игр

Но тут меня настигли первые проблемы.

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

При таких показателях о массовых боях можно было забыть.

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

В целом я пришел к выводу, что самая проблемная часть — это сами модели и анимация.

Из фотографий видно, что детализация этой пробной модели намного выше необходимой.

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

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

Это значит, что это не война, а какое-то маленькое сражение.

Где важен каждый юнит и каждый «герой».

Потом я вспомнил «Семь самураев».

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

В целом могло бы получиться весьма атмосферно.

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

Поэтому на всякий случай я решил сделать 6 самураев.

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

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



Как я решил заняться разработкой игр



Как я решил заняться разработкой игр

Как видите, двухмерные дома сочетаются с трехмерными моделями.

В целом все заработало без каких-либо видимых дефектов.

У каждого самурая был портрет – копилка, позволяющая ему отдавать приказы.

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

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

игроки».

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

С одной стороны уже можно было играть, с другой — код был не таким страшным.

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

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

Это можно было сделать красиво и интересно.

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

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

Марс.

И они превратились в марсиан, отбиваясь от земного вторжения.

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

И с рисованием, и с производительностью.

Поэтому между НЛО и марсоходами разгорелась страшная битва.



Как я решил заняться разработкой игр

Только не бейте меня за желтую воду на Марсе.

Я знаю, что это ерунда.

Но это красиво и разбивает монотонность пустыни.

Все земляне.

хм.

сделали это.

От механики с шестью юнитами и портретами я не отказался, она мне понравилась.

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

Лечение за экраном превратилось в разборку на ресурсы, это добавило интерактивности.

В итоге замысел сделать Tower Defense оказался… почти классической RTS. Единственное, чего не хватает, — это казарм и озвучки «породить больше повелителей».

Над «марсианской версией» я начал работать в начале января.

К концу января игровой движок был готов на 95 процентов и появилось несколько уровней.

Казалось бы, почти все готово — рисуйте новые юниты, делайте уровни.

Но я не поэтому ушла с работы, верно? Это не должно быть скучно.

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

Практически все, что приходило в голову, было превращено в код. К счастью, ничего совершенно безумного мне в голову не пришло.

В итоге состояние «почти готово» продлилось еще 2 месяца работы практически без выходных.

Но я думаю, что в данном случае такой подход чаще всего себя оправдал.

Если вы пишете что-то, о чем не продумывали изначально, а лишь воплощаете свои фантазии, то извольте воплотить их все.

Или, по крайней мере, большинство.

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

А если вам интересно, то вы как минимум всегда будете получать удовольствие от процесса.

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

3D-художников и тестировщиков катастрофически не хватало.

Отчасти поэтому уровней всего 10. Я просто не мог выдержать большего.



Шаг второй – интеграция

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

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

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

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

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

Халявой там и не пахнет. Я не хотел присоединяться к этой компании, поэтому никаких покупок в приложении.

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

И было бы неплохо, если бы бесплатная игра была ограничена парой уровней, но при этом была бы полностью функциональной.

Можно пройти хотя бы до финала и только потом покупать платную.

Да и уровни сложны по меркам современного казуального мира; Я сам до сих пор не могу некоторые сдать с гарантией с первого раза.

Чтобы не обижать клиентов, я решил найти способ, чтобы бесплатная игра сообщала платной игре о прогрессе игрока.

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

Можно было бы использовать доступ к файловой системе и записывать в общие папки какие-то свои файлы вроде фотографий и музыки, но это совершенно некрасивый подход. Вместо этого я решил попробовать использовать достижения Game Center и Play Games. На обеих платформах вы можете создавать группы приложений, привязанных к одному и тому же набору достижений.

Что вам нужно, так это пройти уровень и получить достижение.

И все сопутствующие игры знают, что это достижение у вас уже есть.

Осталось только написать.

Google даже попробовал и сделал плагин для Unity, позволяющий работать с Play Games, а поддержка Game Center уже давно встроена в сам движок.

Обрадованный такой удачей, я скачиваю плагин Google, подключаю его, пишу код и… он не работает. Пишу немного по-другому и.

опять не получается.

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

Есть способ, но он не работает. Я смотрю на реализацию и вижу «еще не реализовано» и всегда возвращаю пустой список.

Браво, Гугл.

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



Как я решил заняться разработкой игр

Плагин получает его только при входе в Play Games и не обновляется.

Судя по всему, Google решил не публиковать эту информацию.

Те.

Если я открою новое достижение, оно не появится в списке, пока я не перезапущу его.

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

А вот с Game Center проблем не было; в Unity всё что нужно было реализовано и функционально.

Результат – победа.

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

Учитывая, что реклама только межстраничная, только между уровнями и не чаще, чем раз в 15 минут, таких людей вряд ли будет много.

Что ж, тем лучше, что я старался для них.



Шаг третий – публикация

Готовиться к публикации я начал во второй половине февраля.

Я купил лицензию разработчика Google за 2 минуты и заказал лицензию Apple (если бы я знал, сколько это в конечном итоге будет стоить, я бы начал в декабре).

Но Microsoft не купила лицензию.

Тут надо сказать, что для тестирования у меня были следующие устройства — уже упомянутый Huawei MediaPad X1, iPhone 4s, iPad2, iPad Mini и Lumia 1020. И из всех только Nokia оказалась непригодной для игры.

В сценах, с которыми неплохо справлялся старый iPhone 4s, совсем не старая Люмия выдавала 2-3 кадра в секунду.

Для меня это стало полной неожиданностью.

Беглый поиск «по этим вашим интернетам» сообщил, что тесты производительности в 3D даже у топовых Люмиев показывают весьма посредственные результаты.

Попытки подправить качество рендеринга кардинально ситуацию не улучшили.

Обидно, но нам пришлось отказаться от релиза для Windows Phone. Итак, лицензия Apple. В общем, за последние пару месяцев я понял одно — Apple, как компания, ненавидит своих разработчиков.

Я имею в виду не сотрудников, а сторонних разработчиков программного обеспечения.

Не знаю, как это происходит, но каждый отдельный сотрудник Apple вежлив, дружелюбен и очень отзывчив.

Но как компания.

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

Чтобы начать что-то писать, купите Mac; Чтобы протестировать написанное вами (даже в учебных целях) на собственном устройстве, которое вы уже приобрели, купите годовую лицензию за 99 долларов.

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

Одобрение заявки занимает 30 минут работы, но вы ждете ее 1,5 недели.

Еще больше хлопот добавило внезапное (для меня) правило обязательной встроенной поддержки ARM64 для всех приложений, опубликованных после 1 февраля 2015 года.

Представьте себе, если бы Microsoft запретила всем разработчикам писать 32-битные приложения.

Это было бы весело.

Лицензию разработчика Apple я заказал 20 февраля, а получил ее 12 марта (сравните с двумя минутами от Google).

И это заслуживает отдельного рассказа.

Прочитав о старой практике отправки pdf-форм по факсу в США, ужаснувшись, представив, что Купертино захвачен амишами и никому не позволяет пользоваться современными средствами связи, не одобренными дедушкой Линкольном, я заполнил форму заказа лицензии на сайте разработчиков (видимо, амишей недавно выгнали вместе с факсами).

99$, данные кредитной карты, ничего не предвещало беды.

Отлично, сказала мне Apple, после обработки ваш заказ появится в Apple Store. И действительно, через пару дней он появился.

С ценой 99 рублей и сообщением об отклонении платежа, в котором мне посоветовали обратиться в банк.



Как я решил заняться разработкой игр

Возможно, если бы банком не был ВТБ24, то мои проблемы на этом бы и закончились.

Но судьба решила, что небольшое испытание мне, наверное, не помешает. Мне самому хотелось, чтобы было не скучно.

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

К сожалению, в российском Apple Store ничего об этом не знали и не видели мой заказ (поддержка Apple Store не видит мой заказ в Apple Store - ха!), но сотрудница поддержки очень хотела быть полезной и вызвалась добровольно.

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

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

Однако эта форма была для меня открыта уже давно.

Вспомнив о своих жалких знаниях английской грамматики, я написал письмо примерно такого краткого содержания: «Смотрите, у вас там 99 рублей, это очень мало.

Вероятно, это ошибка.

А платеж не проходит, банк говорит, что не отклонял его».

При этом я заметил, что в моем профиле на сайте разработчиков мое имя написано кириллицей, а фамилия — латиницей.

По идее это надо менять через Apple ID, но поменяв там я обнаружил, что у них интеграция не работает. Я тоже об этом писал.

Удивительно, но в тот же день ответ пришел от друга по имени Стефано.

Я не ожидал такого быстрого ответа.

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

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

А если через неделю не успею, могу отправить еще заказ.

Ну да ладно, думаю, 99 рублей отличная цена.

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

Но, возможно, все же стоило дожать ВТБ.

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

Деньгах можно практически мгновенно создать виртуальную карту Mastercard. Сделал виртуальную карту, положил туда 150 рублей, потому что.

Последний раз пользовался Яндекс.

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

Результат не заставил себя долго ждать – тот же отказ в платеже.

Я написал Стефано, чтобы перепроверить, работает ли их платежная система или нет. И он особо отметил, что 99 рублей — это 1,5 доллара.

Такая гигантская скидка указывает на ошибку.

А где одна ошибка, там и другая.

Стефано ответил на следующий день.

Он все проверил и снова отклонил банк.

Хорошо, тогда.

Тогда я написал в поддержку Яндекс.

Денег.

Прождав неделю ответа, я позвонил им, чтобы поспорить.

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

Ну, по крайней мере, ситуация прояснилась.

Пополнив мой кошелек на необходимую сумму, Apple все равно получила мои деньги.

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

И при этом меня перестали пускать на сайт по моему Apple ID. Лицензию получат только самые упорные.

Я решил не отставать от Стефано , и слегка пожурил его за то, что он с самого начала меня дезинформировал, а 1,5 доллара - это ненормальная цена, о чем я его несколько раз предупреждал.

А еще он жаловался на отказ во входе.

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

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

И примерно через 10 минут мне пришло письмо с извинениями и заверениями, что он мне все исправил, все активировал и передал информацию об ошибке в магазине своему начальству.

И у всех просто сломался Apple ID, мои беды тут ни при чем, он не знает когда исправят, но наверное скоро.

Мне потом тоже написал руководитель, объяснив, что теперь у меня все должно быть хорошо, а если нет, то мне следует написать ему.

Но я не писал, квест с лицензией пройден, и Apple ID фактически исправлен.

А потом.

делаем 108 скриншотов (6 устройств * 6 языков * 3 скриншота) и с нетерпением ждем 11 дней одобрения заявки.

Тревожно, потому что проект, созданный Unity для Xcode, дал мне 5-6 предупреждений об устаревшем API, который использует Unity. Тем более, что в iOS 7 оно уже устарело, а Unity — новейшая.

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



Шаг четвертый – работа над разработкой игры

Но здесь по-прежнему пусто.

За 3 месяца приключений, проблем с Apple, исправления 2-х глючных недоделанных плагинов Google для Unity, в которых я понимал примерно столько же, сколько обезьяна в очках, отсутствия дохода и постоянных трудностей, которые грозили поставить крест, если не на всём игру, то хотя бы значительную ее часть или публикацию для одной из платформ, я изрядно утомил.

И мне пришлось впитать столько же новых знаний, сколько и за последние 3-4 года.

Поэтому я еду в отпуск, чтобы поплавать в море и посмотреть на рыбок.

И тогда я найду себе работу.

Теги: #unity3d #разработка игр #разработка игр

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.