在Phaser.io中避免使用魔术数字

时间:2015-11-08 23:31:05

标签: html5-canvas phaser-framework

Phaser.io中的HTML5画布游戏开发的问题域中,硬编码和魔术数字的问题"感到特别难以避免。以下是一些似乎不断出现的具体例子:

  • 精灵属性,例如sizeposition等。对这些值进行硬编码会导致视口出现意外大小,方向或像素密度问题

  • 物理机构属性,例如velocityforce,粒子数等。对这些值进行硬编码会导致功率不足的设备出现问题,如果帧速率低于60 fps。

  • 时间值,例如适用于TimerTween个对象。与上述相同,硬编码值会在功率不足的设备上引起意外行为,因为毫秒的游戏时间将不再等于毫秒的实时时间。

我理解这些问题的解决方案往往取决于所讨论的游戏,但这些似乎是如此普遍和广泛,以至于必须有一些通用的常识性最佳实践来避免它们。专门用于Phaser.io

中的游戏开发

1 个答案:

答案 0 :(得分:1)

这些事情可以通过充分的准备来解决。

精灵属性(即缩放)

Phaser缩放问题的一个很好的资源是:

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

基本上,您可以根据设备的像素比例来扩展游戏。

物理和时间(减速调整)

这里我们必须调整游戏中相对于用户设备性能的参数。几十年来,随着PC游戏的出现,这个问题已得到解决,因为每台机器都有很大不同。

经典地,您将拥有默认的性能设置,用户可以通过设置菜单进行调整。这很简单有效。

如今,这些值通常会针对用户的设备进行单独调整。然后用户可以根据需要手动调整它们。

每台设备更改的所有设置都可以存储在您选择的位置的singleton / cfg类中。