我目前正在开发自上而下的实时僵尸射击游戏。我正在使用JBox2D作为我的物理引擎用Java编写此代码。我本周一直在编写网络代码,现在可以进行物理同步了。
我打算使用预测性客户端/权威服务器模型,只要服务器稍后批准,客户端就可以自由移动。这涉及到客户端向服务器发送包含运动数据的数据包,服务器计算延迟,并从较早的状态重新模拟环境。
我的问题是,我当前的物理引擎JBox2D(基本上是Box2D的端口)不支持回滚世界,而且显然不容易序列化世界数据。我有2个解决方案,可以修改/扩展当前的物理引擎,也可以编写自己的引擎。
编写我自己的物理引擎的原因-
- 我可以删除不必要的功能。在自上而下的游戏中,我真的只需要碰撞机制和处理力。不涉及重力。
- 我可以更好地理解代码,并且[最有可能]更容易实现回滚功能
扩展/修改JBox2D的原因
- 编写我自己的物理引擎将是大量的工作,可能会很麻烦
- JBox2D有一个广泛支持的社区,可以为我的开发人员提供帮助
- JBox2D针对碰撞检测等方面进行了特定的优化,使其非常有用
- 已经完成了一些工作,但是几乎没有共享代码
那您有什么意见。这是我的第一款游戏,我绝对不是专业的游戏开发商。如果有人可以提供一些指向该地区已经完成的工作的链接(最好使用JBox2D / Box2D / Java)。
strictfp
所有地方使用,这将严重影响性能。否则,服务器和客户端可能无法获得完全相同的结果。我建议改用定点。