Как я сделала игру для Яндекс игр за 2 месяца

Где-то два года назад я после прохождения Hollow Knight решила научиться делать игры. Из опыта программирования на тот момент были курсы по python и С#, а также долгие попытки обуздать Xcode, где я долго делала приложения, чтобы практиковаться, а затем, когда в очередной раз все вылетело - нажала на крестик и не возвращалась к программированию где-то полгода.

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

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

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

мини игра #1

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

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

мини игра #2

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

окошки окошки окошки 

В итоге после где-то 3-4 месяцев изучения геймдева, я знала базовые понятия и умела делать супер простые игры. Я давно хотела сделать игру с механикой освещения и очень расстроилась, что в Game Maker проблемы с этим, а шейдеры изучать на тот момент пока желания не было. И тогда я решила наконец-то попробовать Unity.

После Game Maker он был более менее понятен, но все же пугало 3d, о котором я пока совсем ничего не знала. Решила пройти те самые уроки по созданию пончика на youtube, чтобы понимать, как работать с 3d, если вдруг пригодится.

Вот он, красавец.

пончик мечты
пончик мечты

А потом на радостях сделала еще комнату для какой-нибудь будущей игры (ха-ха, нет).

комната мечты
комната мечты

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

И тут началась жара, я долго мучалась, перестраивая свой мозг с Game Maker, где ты просто создаешь объект и делаешь с ним что угодно, где угодно. В Godot же все надо разложить по полочкам, нельзя просто добавить объект, и ждать, что остальные объекты будут знать его переменные, как в GM. Нет, нужно пройти несколько стадий принятия происходящего, от гнева, до отчаяния, а потом довериться урокам на youtube и просто признать, что ноды - это хорошо.

Язык GDScript мне сразу понравился, так как был похож на уже знакомый мне python, да и отсутствие скобочек и точки с запятой, тоже радовало, которые я почему-то после использования какого-нибудь C# всегда начинаю по привычке писать даже в обычных сообщениях ;

Дальше на очереди был проект, где я хотела разобраться в сигналах Godot, а также применить на практике классы, чтобы код не был похож на спагетти. Я сделала карточную игру, в которой компьютер сам понимал, какую карту вы кладете, и на основе этого делал свой ход. Суть простая - если карты одного цвета, очки получаем путем вычитания большей карты из меньшей. Если же цвет разный - то получаем +1 очко. Также в игре есть магические карты, которые дают разные перки. Так это выглядело, тут карты врага тоже видны, чтобы можно было проверить, что он делает правильный выбор.

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

Дальше я начала делать довольно масштабное приложение для планирования (ну, люблю я блокноты и планеры, ничего не могу поделать), над которым я все еще работаю. Вот пару скринов.

недельный разворот 
недельный разворот 
страничка дня
страничка дня

Потом я делала еще несколько простых демок, изучая как все работает в GODOT. И вот я решила, что пора бы начинать выкладывать игры куда-то. И узнала, что на Яндексе это можно сделать без танцев с бубном, в отличие от зарубежных площадок. Сначала я хотела делать игру на любимом Godot, но энтузиазма быстро поубавилось, когда я узнала, что Godot 4 не очень-то дружит с html. Я долго пыталась подружить SDK Яндекса и Godot, но в итоге сдалась и установила Construct 3.

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

фиолетовое безумие 
фиолетовое безумие 

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

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

И вот когда все было почти готово, я за два дня сделала совсем новые спрайты для врагов и игрока, так как квадратики мне уже надоели (видимо, вот оно выгорание, хаха). За основу была взята моя внутренняя сущность, которая вечно хочет съесть что-то сладкое и мучное. Убегать от булочек более жизненно, чем от квадратов. Тут же появилось и название "Симулятор Наташки". Вот как выглядит этот шедевр.

Музыку мы написали вместе с моим парнем, какие-то треки делал он, какие-то я.

Симулятор Наташки

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

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

112112
58 комментариев

Симулятор Наташки

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

Как сказал, кто-то из великих игроделов: "Чтобы сделать крутую игру, надо сначала сделать игру".

Игра у вас уже есть, теперь можно сделать из неё крутую.

Иначе можно приобрести дурацкую привычку все делать на уровне прототипов и завязнуть в этом - ибо это увлекательно само по себе. Говорю как человек который до 14 прототипов в год писал просто для собственного удовольствия :)

10
Ответить
Автор

У меня были идеи и про еще больше новых врагов, и новые уровни (тут добавила 3 вида новых врагов, одни стреляют, другие супер быстрые, третьи умирают только на белых блоках, а через черные проходят), и даже механики схожие с Vampire Survivors, но решила, что вдруг не уложусь в максимальные 100 мб для архива игры на Яндексе. А про джуси - это про цвета или про сам геймплей?

2
Ответить

Золотые слова

1
Ответить

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

Так что, чем раньше шарп, паттерны и алгоритмы для AI начнешь изучать, тем лучше.

4
Ответить

А есть примеры что можно реализовать на сишарп и нельзя на гдскрипт?

Ответить

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

Ответить

А как игра себя показала на Яндекс играх?

Планируете веб-игру для заработка делать или это просто хобби?

Какие трудности с выкладыванием игр на зарубежные площадки, например на Crazy games?

2
Ответить