Как карантин помог мне стать разработчиком игр
Шутка, конечно. А может быть и нет. Как бы то ни было, вчера в google play появилась моя первая игра. Подтолкнуло меня к этому то, что предприятие наше в конце января разогнало всех сотрудников по собственному желанию, после чего я слетал в запланированный заранее отпуск, а потом оказался на карантине без работы. Игра проще не придумаешь — смесь тетриса и... ну... чего-то еще. Суть игры в складывании значений падающих блоков, для их уничтожения. Если поле переполнено — поражение. Конечно, это не та игра, о которой я всегда мечтал. И я делал уже более интересные демки. Но это первая игра, которую я опубликовал. Моей целью было, в первую очередь, понять процедуру того, как устроен процесс разработки и публикации, поэтому я сразу решил делать максимально простую игру. Но выпускать очередной унылый платформер или TDS не хотелось, а браться за серьезную работу вот так без опыта мне показалось неправильным. Так и появился Арифметрис. В качестве движка я выбрал Gamemaker studio 2 от yoyogames по нескольким причинам. Первая: я не программист. Огромный плюс gamemaker в том, что у него очень простой и понятный интерфейс, логика работы и свой собственный упрощенный язык программирования. Вторая причина: среда разработки у меня уже была. Несколько лет назад я уже было решил попробовать себя в индустрии, купил полный комплект первой версии студии за баснословные, кажется, 759 баксов. А позже купил и лицензию на вторую версию движка. Но всё, что я выпустил за это время — несколько проектов для джемов на форуме. Итак, движок есть, идея есть.
Игровые ресурсы.
Графику я решил для начала сделать максимально простой и не отвлекающей. Так как я графический дизайнер, эти ваши адоби фотошопы и иллюстроторы мне вполне по плечу. Но задача была не в том, чтобы сделать игру с поразительным дизайном. Поэтому всё максимально аскетично. Шрифт из числа тех, что можно использовать бесплатно. Им я не очень доволен, потому что уж очень тонкий, планирую заменить в скором времени. Кстати говоря, работа с шрифтом в движке построена следующим образом: все нужные символы переносятся на специальные атласы, превращаясь просто в растровые спрайты. Это значит, что для каждого отдельно взятого размера и начертания будут свои спрайты. И что информацией о кернинге можно подтереться. Для меня это стало ужасной новостью. Но возможно с этим можно сто-то сделать, надеюсь, что так. Потому что то, во что превращается шрифт вызывает у меня боль. Звуки подбирал из открытых источников, в основном на фрисаунде.
Игровой процесс и мои мысли насчет его улучшения.
Релизная версия состоит из единственного режима и трех уровней сложности. Программа выдает игроку задание набрать нужную сумму. Кликая по блокам, их значения суммируется, пока не наберется точно искомая сумма. Если результат будет выше, то блоки загораются красным и звучит сигнал. Сейчас я не доволен этим дизайнерским решением и переделаю его в ближайшее время. Суть в том, что сейчас игра никак не наказывает за ошибку и это позволяет халтурить и тыкая примерно наугад подбирать нужные значения. Меня такой расклад не устраивает. Планирую реализовать следующим образом: кроме того, что есть сейчас включается небольшая тряска экрана на пол секунды, во время которой блоки нельзя перевыбрать. Но это что касается классического режима, а я хочу добавить еще аркадный. В нём при переполнении суммы следующий блок будет вычитать свое значение, а не прибавлять. В это режиме также будут блоки увеличенного размера, замороженные, которые неактивные некоторое время, золотые, добирающие до нужного значения автоматически, крепкие, которые уничтожаются только после второго раза, взрывающиеся, отрицательные и удваивающие очки финального счета. Также в планах подвезти мультиплеер, где два игрока будут собирать блоки на одном поле, но у каждого будут свои очки. Правда на текущий момент я мало знаю про нетворкинг, с этим еще предстоит разобраться. Также я не доволен алгоритмом подбора задачи и раздачи значений блокам. Игра не допускает случаев, когда игрок не сможет собрать искомую сумму. Но старается слишком сильно. Я планирую поправить его, чтобы не было ситуацийЮ когда половина поля усеяна блоками со значениями 30-50, а вторая половина единицами и двойками. У меня уже есть мысли, как организовать это, сделаю в ближайших обновлениях. Кроме того я уже готов добавить поля других размеров, но еще не придумал, как причесать интерфейс под это дело, потому что главное меню и так уже щеголяет братской могилой из иконок на голове, нужно поработать над этим.
Я уже много написал, хотел рассказать, как устроена игра в техническом плане и в частности алгоритмы задач и значений блоков. Но, видимо, об этом напишу в следующий раз. Но упомяну, хотя бы, что я нашел для себя важным во время разработки:
1) Нужно фиксировать задачи и ход их выполнения. Иначе очень легко закопаться в фичи, у меня такое бывало раньше. Хорошо помогает Трелло. Пишешь, что в работе, что на ближайшее будущее, а что в хотелки. Даже если работаешь один.
2) Не нужно спешить. Очень много времени уходит на то, чтобы разобраться и переделать помойку, в которую ты превратил свой код.
3) Но и делать слишком длинные перерывы тоже не стоит. Какие-то мелочи важные забываются, если отрываешься от проекта надолго. Особенно критично, если не комментировать код, как я.
4) Комментировать код.
5) Английский язык. Я занимаюсь английским с преподавателем онлайн последние полтора года. Это сильно помогло мне, потому что на русском языке информации мало и она, зачастую, уступает англоязычной.
В качестве заключения, хочу сказать, что планирую в ближайшее время причесать Арифметрис, а потом браться за более длительные проект. Скорее всего, это будет работа над одним из проектов, которые я делал на джемы. Также если вы планируете выбирать gamemaker в качестве движка для своей игры, учитывайте, что он лучше всего подойдет для пиксельной игры и изначально заточен больше под платформеры и TDS, с моей игрой мне стоило, наверное, работать в юнити. Однако в ближайшее время не планирую переходить на другой движок, потому что задуманные проекты вполне реализуемы и на gamemaker. Всем удачи.