gpt4 book ai didi

node.js - Socket IO 游戏权威服务器中的冲突

转载 作者:搜寻专家 更新时间:2023-11-01 00:04:07 24 4
gpt4 key购买 nike

我正在尝试使用 Phaser 和 NodeJS/Socket.io 制作一个 io 游戏。我意识到要防止作弊,我需要制作一个运行游戏的权威服务器。

在尝试构建服务器时,我不确定如何处理冲突。现在我的想法是将 Canvas 分成小块并检查每个小块是否有碰撞,但每次更新似乎仍然需要大量工作。另一方面,我可以遍历所有攻击 Sprite 并寻找与特定图 block 的重叠,然后检查这些图 block 中的 Sprite 。恐怕这太慢了,但我可能是错的。有没有人有更好的想法?

有没有人对服务器端物理引擎有任何建议,这样也许我就不必为碰撞和移动做数学计算了?

最佳答案

好主意。最好的方法 afaik 是使用一种称为二进制空间分区的方法,将你的世界分成 block ,然后仅检查这些 block 内的对象碰撞。例如,如果您在世界的一侧有一个物体,您将不需要检查该物体与世界另一侧的另一个物体在不同 block 中的碰撞。

如果您以前没有做过,您可能不想编写自己的物理引擎,因为有太多可用的选项。甚至 Bullet3D 也有一个名为 Ammojs 的 Web 端口。 IIrc 有一个适用于 node 的版本,但您必须使用多线程进行一些工作或替换 webworker 才能使其正常工作。

这是其他人的博客文章,他使用 Box2d 作为物理引擎启动并运行了套接字和 Node 游戏:

http://paal.org/blog/2012/07/06/running-box2d-on-server-with-node-js-via-socket-io/ https://www.youtube.com/watch?v=5ty6wA2wSX4

请记住,即使您在权威服务器上以 60fps 的速度运行它,有时您也可能希望在客户端上运行它,尤其是当客户端在服务器渲染之间进行更新时。您可能必须编写一些预测或插值代码,以使动画看起来不会 super 卡顿。

希望这对您有所帮助。

关于node.js - Socket IO 游戏权威服务器中的冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51566888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com