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