Найти тему
1288 подписчиков

Заметки на полях.

Разработка игр заставляет взглянуть на них совершенно по-другому.
Если раньше смотрел на качество картинки, прорисовку, динамику управления, сюжет и прочее, то теперь начинаешь наблюдать за техническими аспектами.
Взять, например, Celeste - вся игра построена на прямоугольниках. То есть весь экран - это просто матрица с соответствующими элементами. Но! Границы прямоугольников не всегда совпадают с границами спрайтов, на этих местах отрисованных. Получается (как и во многих других играх) либо возможность стоять на краю, практически на воздухе, либо же пересечься с враждебным объектом, но не получить урона.
Другой пример - Metroid dread. У него другой интересный нюанс: сохранение состояния персонажа при переходах между комнатами. Скорее всего, каждая комната загружается в память и строится отдельно (иначе не было бы жёстких дверей), но, при этом, большая часть основных данных загружается в память перед началом уровня (звуки, текстуры, прочее). Таким образом, переход из комнаты в комнату может приводить к сбросу состояния персонажа. Это значит, что если, например, из комнаты А в комнату В персонаж выбегает, то в другой комнате он уже будет снова идти или же анимация бега начнётся с самого начала. В случае с Метроид такого не происходит. Тут, конечно, можно много домыслов разводить, но наблюдение за такими решениями позволяет выбрать более удачную стратегию при проектировании игры.
Впрочем, у того же метроида хватает недостатков. Например, очень долго грузится уровень. Любой. Что бы я сделал, чтобы ускорить загрузку? Наверное, первую комнату сделал бы достаточно большой, чтобы время выхода из неё всегда было бы гарантировано и давало возможно догрузить часть данных (кстати, этот приём команда разработки, скорее всего, использовала). Затем, наверное, сгруппировал текстуры по необходимости и часть из них грузил бы в память сразу, другие - по мере необходимости, заранее. Добавил бы, разумеется, комнаты подгрузки (как, например, в Bloodstained): там проблем с ожиданием нет вообще, что не может не радовать.
1 минута