我正在开发一个基于回合的策略游戏,在其中我从 PHP 输出一系列数组,以使用 javascript 在画布中进行动画处理。
鉴于我的目标是 javascript/canvas 中的 20 fps(每秒帧数),php 正在为浏览器生成大量信息以接收并处理。
如何将这些 php 数组传递给 javascript?
编辑我具体指的数据量约为每转 5 兆字节。
我正在开发一个基于回合的策略游戏,在其中我从 PHP 输出一系列数组,以使用 javascript 在画布中进行动画处理。
鉴于我的目标是 javascript/canvas 中的 20 fps(每秒帧数),php 正在为浏览器生成大量信息以接收并处理。
如何将这些 php 数组传递给 javascript?
编辑我具体指的数据量约为每转 5 兆字节。
我认为您试图回答两个问题。
就 Q1 而言:有多种技术可供选择,如果不了解您的项目,则没有一种技术具有明显的优势。你可以使用:
就第二季度而言:
在不了解您的项目的情况下很难选择一个最佳解决方案,但我希望这份清单可以帮助您入门。
好的,如果您必须发送 5mb,那么您可以做的非常非常好的事情是:
使用gzip 或 gzcompress 等数据压缩来减少 5mg 有效负载。通常,文件可以减少到原始大小的 20-25% 左右(在您的情况下可以减少到 1-1.25mb)。
就是说,您确实应该考虑重组为游戏提供动力所需的数据,因为 5mb 远远超过典型!
你没有给我们任何具体的工作,所以这里有一个“稻草狗”供我们玩:假设你的游戏是国际象棋。(我知道不是,但我们需要一些东西来集中我们的注意力)
将所有渲染移至客户端。您发送的数据应该只发送移动(“Rook-A6”)。客户端获取该数据并以图形方式渲染 Rook 从其当前位置移动到 A6 上的新位置。
将游戏逻辑移至客户端。客户端应该能够独立地对游戏条件做出反应。例如,客户端应该“撤消”玩家试图将他的国王置于危险之中的举动。同样,如果您为复杂的移动(例如“城堡王侧”)发送数据,客户端应该知道如何正确移动王+车,而无需从您的数据中进行解释。
做一些模式识别来简化/减少发送的数据。因此,要设置棋盘上所有 32 个棋子的初始位置,您发送 (“Reset”) 而不是 (“移动白车-A1,移动白骑士-B1……等等”)。
使用信号量来控制游戏资源的可用性。如果你的游戏的一部分要求用户获取/使用一组共同的稀缺资源,请使用信号量让用户“签出”/“签入”资源,而不是实际跟踪单个资源。