避免 Phaser.io 中的幻数
Avoiding magic numbers in Phaser.io
在 HTML5 canvas 游戏开发 Phaser.io
的问题域中,硬编码问题 "magic numbers" 尤其难以避免。以下是一些似乎经常出现的具体示例:
Sprite 属性 例如size
、position
等。对这些值进行硬编码会导致视口出现意外问题大小、方向或像素密度。
物理体属性例如velocity
、force
、粒子数等。硬编码这些值会导致如果帧速率低于 60 fps,则在动力不足的设备上会出现问题。
时间值 例如对于 Timer
和 Tween
对象。同上,硬编码值会导致低功率设备出现意外行为,因为一毫秒的游戏时间将不再等同于一毫秒的实时时间。
我知道这些问题的解决方案往往取决于所讨论的游戏,但这些问题似乎如此普遍和广泛传播,以至于必须有一些通用的常识性最佳实践来避免它们。专门用于 Phaser.io
中的游戏开发
这些事情可以通过充分的准备来解决。
精灵属性(即缩放)
这里是解决 Phaser 缩放问题的好资源:
http://www.joshmorony.com/how-to-scale-a-game-for-all-device-sizes-in-phaser/
基本上您可以根据设备的像素比缩放游戏。
物理与时间(减速调整)
这里我们必须根据用户设备的性能调整游戏中的参数。几十年来,PC 游戏一直在解决这个问题,因为每台机器都大不相同。
传统上,您会有默认的性能设置,用户可以通过设置菜单调整它们。这个简单有效。
如今,这些值通常针对用户的设备进行单独调整。然后用户可以根据需要手动调整它们。
每个设备更改的所有设置都可以存储在您选择的 singleton/cfg class 位置。
在 HTML5 canvas 游戏开发 Phaser.io
的问题域中,硬编码问题 "magic numbers" 尤其难以避免。以下是一些似乎经常出现的具体示例:
Sprite 属性 例如
size
、position
等。对这些值进行硬编码会导致视口出现意外问题大小、方向或像素密度。物理体属性例如
velocity
、force
、粒子数等。硬编码这些值会导致如果帧速率低于 60 fps,则在动力不足的设备上会出现问题。时间值 例如对于
Timer
和Tween
对象。同上,硬编码值会导致低功率设备出现意外行为,因为一毫秒的游戏时间将不再等同于一毫秒的实时时间。
我知道这些问题的解决方案往往取决于所讨论的游戏,但这些问题似乎如此普遍和广泛传播,以至于必须有一些通用的常识性最佳实践来避免它们。专门用于 Phaser.io
这些事情可以通过充分的准备来解决。
精灵属性(即缩放)
这里是解决 Phaser 缩放问题的好资源:
http://www.joshmorony.com/how-to-scale-a-game-for-all-device-sizes-in-phaser/
基本上您可以根据设备的像素比缩放游戏。
物理与时间(减速调整)
这里我们必须根据用户设备的性能调整游戏中的参数。几十年来,PC 游戏一直在解决这个问题,因为每台机器都大不相同。
传统上,您会有默认的性能设置,用户可以通过设置菜单调整它们。这个简单有效。
如今,这些值通常针对用户的设备进行单独调整。然后用户可以根据需要手动调整它们。
每个设备更改的所有设置都可以存储在您选择的 singleton/cfg class 位置。