19 мая 19 мая 9 1013

Как я сделал игру за неделю

+24

Идея небольшой атмосферной демки про двух бандитов у меня в голове зрела уже давно…, но я её откладывал в долгий ящик по разным причинам: то слишком много дел, то банально нет сил стартовать что-то новое, когда старое не доделано до ума. Но в один момент я всё же натыкаюсь на черновик идеи, и решаю попробовать бросить себе вызов: уделять проекту по 10-15 минут в день, но делать это регулярно, чтобы в итоге к концу недели получилась небольшая, кривая, но рабочая и проходимая технодемка, которую я потом выложу на итч. ио.

Целей было несколько:

1. Поупражняться в вещах, которые я умею делать плохо;

2. Пополнить своё потенциальное портфолио;

3. Дать, наконец, воплощение идее которая долго в мозгу кочует;

4. Да просто потому что прикольно;

Важное пояснение: Да, я уже умел работать в Godot, так что материал не о том, как новичок с размаху всему научился: это скорее о том, как я собрался, накидал план… и у меня получилось.

День 1.

Каюсь… на самом деле, челлендж с моей стороны был не совсем честным: часть ассетов с анимациями главного героя я до этого уже накидал в Aseprite и импортировал, так что базовая база с хождением и интеракцией у меня была готова с самого начала. Так что в первый день я просто интегрировал в движок Dialogic, позволяющий облегчить написание и интеграцию диалогов в костяк игры. В 15 минут уложился, при этом «почистив» проект от накиданного мусора, который в самой демке не пригодится.

День 2.

На него я запланировал то, с чем часто возникали проблемы: со слоем параллакса. Это когда картинка на заднем плане не обрывается, а плавно двигается вместе с игроком. Потратил какое-то время, посмотрел гайды на youtube, потыкался — и разобрался. Параллакс готов, я доволен, во время в целом тоже уложился.

День 3.

По моей задумке, мы играем за молодого бандоса Сашу, который должен на автозаправке купить своему спутнику сигареты, а также оплатить бензин в тачке. Следовательно, комнаты нужно всего две: улица и магазин заправки. За последний я и принялся на третий день: накидал в Aseprite простецкий фон, поместил в сцену, и поставил туда главного героя. Плюс сделал плавный переход с эффектом fade между сценами (мне понравилось, как вышло).

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

День 4.

Так как я сам себя ограничил по времени в рамках «забега», то механики я запланировал самые простейшие: вписать в автозагрузочный скрипт булевые (true/false) переменные с предметами, и ставить их на «true», когда игрок подбирает/находит предмет.

По сюжету, у Саши не так много денег, так что он должен не просто купить сигареты, а найти способ: где-то достать ещё деньги или ограбить продавца с помощью взятого у Мятного (его спутника) пистолета. Таким образом, ввёл три переменные: сигареты, пистолет и деньги. Благо, Dialogic через утилиту позволяет с ними хорошо взаимодействовать.

позже ввёл ещё переменную «бензин», но это сугубо чтобы Саша не вернулся в машину раньше времени.

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

День 5.

В этот день я не только добавил продавца, с которым можно поговорить, купив у него сигареты или бензин (переменная moneys становится false), так что технически, одна концовка была готова, но ещё и добавил прикольную «единичную» анимацию, когда при выборе определённого варианта по сигналу Саша достаёт пистолет и наставляет его на продавца. Я был невероятно рад, потому что, пусть я и затратил на это лишнее время, но мне очень понравилось, насколько круто это выглядит.

День 6.

Вот в этот день я понял свой главный «недостаток» в этом деле: я не умею делать по принципу «всрато, но быстро». Если у меня остаётся время и силы, мне всегда хочется, чтобы была кинематографичность, прикольные анимации, интересные эффекты, сюжетные крючки, драма, вот это вот всё, а это существенно увеличивает срок разработки.

Так что я потратил два часа на настройку плавного наезда камеры при интеракции с NPC, и ещё где-то полчаса, чтобы научиться возвращать её обратно. Последнее, увы, не получилось, что-то я делал не так — но мне уже нравилось, что я теперь умею в такие вещи. Я решил не запариваться, чтобы не тратить ещё больше времени на это, и оставил как есть — благо, геймплею это не сильно мешало.

Ну и плюс, в этот же день я добавил в игру звуки для атмосферы! Радио, шипение лампы, шум ветра, голоса героев, шаги… Всё это уже «оживило» мой сыренький прототип. Мне он теперь прям нравился.

День 7.

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

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

Вы спросите: но что там сложного, просто берёшь и экспортируешь?

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

День 8.

…и я, встав с самого утра очень решительный, справляюсь где-то за 15 минут. Загадка, почему не справлялся раньше, очень простая: я оказывается не выставил в движке при экспорте галочку «совместимость», и из-за этого итч капризничал. Я сижу перед экраном, где в браузере запускается игра, и думаю: «как-то это даже… слишком просто.»

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

Посмотреть, что у меня вышло, можете по этой ссылке. А я отправляюсь делать что-то ещё! : ^) Если хотите больше экскурса в мои геймдевелоперские похождения, дайте знать в комментах, у меня есть, что рассказать.


Лучшие комментарии

Прикольно) Фишка с камерой хорошо смотрится

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

2) Купил бензин. Вышел. Покопался в мусоре. Нашёл деньги. Вернулся в магазин. Купил сигареты. Сел в машину. Начался разговор с Мятным на чёрном фоне. Было два варианта:

— Мне нужен пистолет

— Вот ваши сигареты

Отдавал сигареты бесконечное количество раз. Но то ли пока не попросишь ствол, это ни к чему не приведёт, то ли я жал Е, когда нужно было ЛКМ и разговор стартовал заново. Потом сработало и напарник сказал садиться в машину. А я как бы уже) Но видимо так не считается. Чёрный фон, к слову, никуда не пропал, было видно только окно инвентаря. Методом проб нашёл способ убрать его — нужно пройти в магазин, сменив сцену. Дальше нормально сел в машину, и игра закончилась.

Обновил страницу, прошёл снова. Этого бага не было, как и постоянного движения влево, из-за чего мне кажется, что в первый раз персонаж на чёрном фоне во время посадки в машину ушёл влево, а я нажал на Е, и диалог плавно перетёк в разговор с Мятным вне машины.

3) Деньги из свёртка остаются в инвентаре после покупок. Может их было с избытком? Тогда ок.
4) Диалог не завершается при выходе из сцены с тем, с кем беседуешь.

Ну и сесть в машину, купив только бензин и уехать без Мятного нельзя (даже с пистолетом), а жаль =)

Это да… Я знаю, как это фиксить, просто не допёрли руки, не хотелось затягивать. Спасибо, что прошли!!!

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

Спасибо за блог, читал и прям вспоминал все те эмоции, когда с чем-то долго ковыряешься, а потом оно… РАБОТАЕТ! И ты сидишь довольный, с новым зарядом мотивации.

Ха-ха, кажется, они никогда не исчезнут! Буду думать, как это всё поправить, если доберусь… Спасибо вам большое, что заценили! <3

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

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

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

Читай также