java - 如何保持服务器的移动速度?

标签 java awt kryonet

我正在为我的游戏编写服务器程序,但不知道如何保持移动速度。根据计算机上运行的程序,移动要么非常快,要么非常慢。我已经尝试为服务器创建自己的增量方法,但它不起作用。我无法在更新时使用 Slick delta 变量,因为服务器是使用 AWT 和 Kryonet 编程的。

有谁知道如何保持运动?

最佳答案

您的游戏服务器需要有明确的全局时间。我建议使用 System.currentTimeMillis();

然后,您将不得不根据时间来确定方程式的运动。由于您的机器上的循环不会以精确的速率执行,因此您需要通过使用 System.currentTimeMillis() 从先前的时间值中减去来获得传递的增量时间。在您的运动方程式中使用该值以获得一致的外观运动。如果您正在计算物理(即运动),您将需要使用 Runge Kutta 阶 4 方程,而不是普通的欧拉方程(欧拉随时间计算误差)。

其他有用的链接:

http://gafferongames.com/game-physics/integration-basics/

https://developer.valvesoftware.com/wiki/Latency_Compensating_Methods_in_Client/Server_In-game_Protocol_Design_and_Optimization

关于java - 如何保持服务器的移动速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10791834/

相关文章:

java - 在 Kryonet 中增加服务器/客户端的缓冲区大小

java - Google gson.toJson(List) 以字符串而不是数组形式返回响应

java - 使用 JSON POST 外来字符会产生 400

java - 用JAVA手绘图形

java - Kryonet:注册的类(class)必须相同吗?

testing - 使用 Gradle 进行集成测试时运行服务器

java - 将菜单栏添加到网格 Pane

java - 哪些类必须实现 Serializable 接口(interface)?

java - 重新画一个正方形?

java - 为什么用 javax.swing 而不是 java.swing?