Здравствуйте, я хочу рассказать вам о том, как я пришел к созданию своей первой относительно серьезной игры для IOS и Android.
Фон
Еще в старшей школе мы с другом хорошо посещали уроки информатики, мне нравилось программировать и решать различные задачи с помощью программирования.Помимо этого, я всегда любил игры и меня, как и многих геймеров, прельщала иллюзорная возможность написать свои собственные.
Как и ожидалось, у меня появился интерес и к другим языкам программирования, и я решил «перерасти» из пресловутого Паскаля.
Мой выбор пал на хорошо известный Python, поскольку я слышал о его широком спектре применения и относительной простоте изучения.
Немного продвинулся в чтении соответствующей литературы, для практики решил задачи из "Проект Шайлер" .
На самом деле, мне все это время хотелось начать заниматься чем-то действительно серьезным, и на определенном этапе я почувствовал, что если не сейчас, то никогда.
Игры стали «серьёзными», как вы могли догадаться.
Найдя для этого занятия библиотеку PyGame, я приступил к делу.
Для начала я решил немного потренироваться на чем-то банальном.
Всё-таки тетрис я не делал, а реализовал, хоть и не сразу, старую добрую игру «жизнь», чем очень доволен.
Жизнь
Потом к моим творениям присоединились: почти готовый DX-Ball, в который я с интересом играл на компьютере дяди в середине 2000-х, копия Supaplex в зачаточном состоянии (все та же ностальгия) и в таком же состоянии аркадная игра, вдохновленная относительно современной The Binding of Isaac.
Dx Ball'
Исаак'
Начало студенческой жизни и первые порывы к созданию собственных проектов
Со временем я понял неприятную для себя вещь: практически ни один из проектов я не довел до конца, хотя энтузиазма поначалу было хоть отбавляй.Так оно и было: я все меньше и меньше возвращался к старым разработкам, иногда с энтузиазмом брался за новые, но результат оставался прежним.
Дальше начался самый страшный период в жизни любого школьника: ЕГ?.
Программирование отошло на второй план, но сдав экзамены и поступив на факультет «электроника и наноэлектроника» в СПбПУ, я вернулся к программированию.
Более того, студенческая жизнь меня немного встряхнула, научила ответственности, поэтому я решила, что отныне буду доводить до конца все свои проекты.
И вот я решил написать что-нибудь для Android. Я остановился на том же Python, так как это было единственное, что я все равно знал и за что мог цепляться.
Я начал изучать фреймворк Kivy. К сожалению, как бы мне этого ни хотелось, Python+Kivy — не лучший вариант для Android-разработки, и я понял, что далеко в этом направлении не пойду.
В итоге, потратив значительное количество времени на такое простое приложение, как тест с выводом нескольких вариантов конечного результата, я наконец довел этот скромный проект до конца и даже загрузил его в GooglePlay. Потом, на волне популярности баттла двух известных рэп-баттлеров, мой друг предложил сделать тест на эту тему и подготовил к нему вопросы.
Так родился наш первый реализованный проект и появилась команда из двух человек, взяв название «Аспид Динамикс».
Большая часть времени была потрачена на знакомство с Kivy и другой библиотекой KivyMD, которая предоставляла элементы Google Material Design. Остальное время ушло на рисование иконок и многочисленные редизайны (В итоге получилось не очень, но могло быть и хуже).
Поскольку я больше не работал один, это немного упростило процесс разработки и мотивировало меня.
Новые начинания
Получилось не совсем то, что я хотел, но я решил двигаться дальше.Я внимательно рассмотрел новый для меня инструмент разработки — хорошо известный движок Unity. Выбор дальнейшего направления развития наконец-то сделан, осталось (просто) познакомиться с C# и изучить возможности самого Unity. Таким образом, мы подошли к событиям, произошедшим совсем недавно.
Как и прежде, я решил не браться сразу за что-то слишком тяжелое.
Идея была проста: создать игру, в которой люди записывали бы слова, соответствующие заранее определенному условию.
Один простой пример: «Введите слова, содержащие три буквы «о»», после чего вводите, например, «колокольчик».
Поначалу идея не показалась чем-то новым, но, проверив Play Market, я не нашел похожих игр, что в конечном итоге убедило меня в том, что идея удалась.
Проект «Мастер слова»
Выбрав для игры тривиальное, но запоминающееся название «Вордмастер», я начал внимательно относиться к процессу разработки.Реализация казалась простой, по крайней мере, после поверхностного анализа.
Может быть, так оно и есть, если мы только формализуем базовую механику, но при детальном размышлении функционал вырос во много раз и заметно расширился.
Закончив описание проекта, я с энтузиазмом приступил к реализации по пунктам.
Основная идея действительно довольно быстро воплотилась в жизнь: была добавлена возможность создавать уровни на основе нескольких шаблонов.
Шаблоны являются своего рода основой для определенных критериев, которым должно удовлетворять слово, среди них: начало слова с «подстроки», т.е.
буквы или последовательности букв, содержание «подстроки» в слове, содержание из N букв, четное/нечетное количество букв в слове и т.д. Далее введенные игроком слова проверялись на соответствие шаблону и наличие в словаре.
Баллы начислялись в зависимости от частотности слова, а уровни завершения я стал устанавливать в зависимости от количества баллов, полученных за 5 минут. В стандартных уровнях игры человеку необходимо ввести максимально возможное количество слов, чтобы иметь возможность пройти следующие уровни.
Мастер Слова
Новые проблемы и неожиданные решения
Все бы ничего, но оказалось, что сделать много уровней, отличающихся друг от друга, довольно сложно.И снова мой друг решил мне помочь и к сороковому уровню возникла очень острая проблема не только в том, что уровни было сложно придумать, но и в том, что из-за некоторых языковых особенностей человеческого восприятия мы слишком часто выбирали те или иные буквы и узоры.
, при этом упорно игнорируя других.
Это было своевременно замечено, и была предпринята попытка усилить самоконтроль, но она не дала желаемых результатов, поэтому мне пришлось подсчитывать и фиксировать частоты использования букв и узоров в наших уровнях.
После этого следить за собой стало гораздо проще, но в итоге было сделано всего 60 уровней.
В связи с тем, что необходимость придумывать уровни тормозила разработку, а также из-за описанных выше проблем, я решил реализовать генератор уровней, который бы создавал вменяемую задачу на основе наших шаблонов.
Я не смог найти корреляцию между количеством слов, соответствующих заданию, их частотой и количеством набранных баллов (это означало, что уровни придется еще и балансировать - вручную).
Видимо, это связано с тем, что слова для некоторых состояний найти легче, даже если их меньше.
Например, в сознании довольно легко всплывают слова, при условии, что они начинаются с какой-нибудь подстроки; например, возьмем слова, начинающиеся с «ба».
Мы как бы говорим себе это начальное состояние «ба», и мозг легко выстраивает его во множество слов: «танк», «банк», «банан» и т. д. Но если в условии будет не более 4 гласных и ровно 8 букв, то, хотя таких слов будет в 6 раз больше, скорость выбора явно снизится.
По некоторым шаблонам, когда мы находим одно слово, мы попадаем в целую группу (например: заканчивается на «ель», если на ум приходит слово учитель, то мы можем заметить, что многие профессии заканчиваются так: «строитель», «водитель» и др.
).
Если бы не было связи, ничего объединяющего эти слова, то, просто ища в голове, мы бы догадывались гораздо меньше.
Полировка, новые режимы, последние штрихи
Созданный генератор действительно значительно облегчил создание уровней и, постепенно увеличивая количество уровней, мы с другом уже дошли до сотни.Вдохновленный успехом генератора, участвовавшего в создании уровней, мы решили ввести новый игровой режим.
Это была игра на выживание, в которой нужно вводить слова, пока не истечет таймер.
Отличием от классического режима является то, что здесь перед игроком стоит задача ввести слово за N секунд по заданному условию.
Если условие успешно выполнено, создается новая задача и таймер продлевается.
Позже мы решили, что чтобы постоянно поддерживать контент, нужно добавить мультиплеер.
Конечно, гораздо интереснее проверить свой словарный запас с другом на перемене или поиграть с незнакомцем онлайн.
«Классический» многопользовательский режим предполагает соревнование по количеству очков, полученных за определенное время.
Повозившись довольно долго с реализацией игры по сети, я наконец разобрался и прошел 2 соответствующих многопользовательских режима.
Дизайн принес нам много проблем в процессе разработки.
Основная проблема заключалась в том, что я сам, по сути, далеко не дизайнер, у моего друга тоже нет необходимого навыка, а мне хотелось сделать адекватную картинку.
Третий друг согласился мне помочь, но после нескольких незаконченных черновиков не смог продолжить.
В результате путем неоднократных доработок и сбора отзывов друзей я сам разработал окончательный дизайн.
Релиз игры, планы на будущее
Изначально Master of the Word должен был выйти только на Play Market из-за ограничений бюджета, но мой друг помог мне получить необходимые для выпуска в AppStore $99. Мы планируем расширять и обновлять игру.Дополнительные уровни, достижения, рейтинги игроков и многое другое интересное.
Возможно, мы сделаем английскую локализацию, что в контексте этой игры дороговато.
Спасибо большое за внимание всем, кто прочитал этот длинный пост. Искренне Ваш, Команда Aspid Dynamics. Теги: #Разработка игр #iOS #Android #Разработка Android #программирование #C++ #unity #мобильные игры #AppStore #play market #indie
-
Сократические Школы
19 Oct, 24 -
Межорбитальный Буксир
19 Oct, 24