GM 9.3: Все же добавляем свайп экрана

Для тех кто не понимает что происходит ссылка на первую статью из цикла.

Про ощущения

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

GM 9.3: Все же добавляем свайп экрана

К тому же, я задумалась о том, насколько вообще подробно нужно прорабатывать симуляцию жизни в игре. Прикинула варианты реализации концепции в виде настолки и вспомнила фразу от одного из разработчиков ВК игры "Карантин". На вопрос, почему бы не добавить в игру элемент симуляции жизни в их песочницу, он ответил: "А зачем подобное делать, если игрок этого все равно не увидит?"

Пока решила втянуться обратно в проект через решение старого вопроса свайпа экрана.

Анализ проблемы

Какой была логика свайпа раньше? В момент нажатия ЛКМ игра запоминала координаты курсора на экране, а затем отслеживала его перемещение в пространстве до момента отпускания кнопки. Разница в координатах при перемещении использовалась для смещения экрана.

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

Решение

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

Масштабирование интерфейса

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

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

Увеличение разрешения

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

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

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

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

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

4.4K4.4K показов
168168 открытий
18 комментариев

Женщина делает сталкер

Ответить

на пдф нет женщин же)

Ответить

займусь реализацией базовых вопросов, напримернапример, босс бабочка, которую ты обещала сделать, да.

Ответить

Это будет секретный босс, не каждый его откроет)

Ответить

Ля, как 🥴
Снова Лонг, ой-ой;)
С Пасхой тя если что 🤙

Ответить
Ответить

Хех, всегда угадываю игры на гамаке по отсутствию сглаживания при повороте и масштабировании спрайтов.

Ответить