Как избежать магических чисел в Phaser.io

В проблемной области разработки игр на холсте HTML5 в Phaser.io особенно трудно избежать проблемы жесткого кодирования «магических чисел». Вот несколько конкретных примеров, которые, кажется, появляются постоянно:

  • Атрибуты спрайтов, такие как size, position и т. д. Жесткое кодирование этих значений вызовет проблемы на окнах просмотра с неожиданным размером, ориентацией или плотностью пикселей.

  • Атрибуты физического тела, такие как velocity, force, количество частиц и т. д. Жесткое кодирование этих значений вызовет проблемы на устройствах с недостаточным питанием, если частота кадров упадет ниже 60 кадров в секунду.

  • Значения времени, например. для объектов Timer и Tween. Как и выше, жестко заданные значения вызовут неожиданное поведение на устройствах с недостаточным питанием, поскольку миллисекунда игрового времени больше не будет равняться миллисекунде реального времени.

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


person galarant    schedule 08.11.2015    source источник


Ответы (1)


Эти вещи можно объяснить при достаточной подготовке.

Атрибуты спрайта (а именно, масштабирование)

Хороший ресурс для масштабирования проблем с Phaser находится здесь:

http://www.joshmorony.com/how-to-scale-a-game-for-all-device-sizes-in-phaser/

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

Физические параметры и время (регулировка замедления)

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

Классически у вас были бы настройки производительности по умолчанию, и пользователь мог бы настроить их через меню настроек. Это просто и эффективно.

В настоящее время эти значения обычно настраиваются индивидуально для устройства пользователя. Затем пользователь может вручную настроить их по мере необходимости.

Все настройки, которые изменяются для каждого устройства, могут быть сохранены в классе singleton/cfg в любом месте по вашему выбору.

person John Helfert    schedule 12.11.2015