Дневники разработчиков-нубасов. Часть 2

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

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

​Прототип со спрайтом персонажа

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

Старший программист решил, что лучше всего для нашего проекта подойдёт новая система ввода для Юнити (Unity new input system). Эта система еще недоработана, но на копенгагенском форуме Unite 2019 систему очень хорошо представили. Там рассказывалось о более простой настройке управления под любой способ ввода (клавомышь, геймпады, мобильные устройства). К сожалению, там уделили мало внимания вводу на сенсорных экранах и вскоре мы поняли почему.

Как оказалось, документации по новой системе ввода недостаточно для кодинга чего-либо, кроме тапа (касание экрана). В интернете нет никакой информации о системе (ведь она новая). После долгих часов поиска, мы нашли Touch samples от Юнитека, где был СВАЙП. Теперь можно было продолжать работу.

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

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

​Демонстрация скиллов, реагирующих на тап, холд и свайп

У младшего программиста дела идут тоже не очень ровно, но он смог настроить определение углов для большинства диагоналей мобильных устройств. Обратившись к ребятам в Дискорде младший программист выявил, что объекты лучше расставлять относительно UI объектов на канвасе. Или другими словами относительно интерфейса. Здесь возникла вторая проблема: устройства с "чёлкой".

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

Художница тем временем тоже не теряла времени даром и создала все 8 направлений движения персонажа. На гифке немного потерялись слои, но спрайты персонажа прорисованы полностью :)

Персонаж во всех направлениях

Так и прошла неделя разработки маленькой игры маленькой командой.
Спасибо за внимание и будем рады комментариям ;)

1010
9 комментариев

// наш программист смог создать код на 54 строчки (в противовес более 400 строчкам из сэмпла). 

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

3

Я ему говорил то же самое, но он пока отнекивается :) Думаю, потом выложим на форму Юнити свои наработки

Плюсую предыдущего комментатора.
И поделитесь Touch samples, пожалуйста!

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

Благодарю :) Предыдущий пост был скорее вводный, ведь мы ещё не успели ничего толком сделать.