我做了一个实时游戏,现在非常滞后。我看到对于实时游戏,我使用“UDP 协议”而不是“TCP”编写代码
这会解决滞后问题吗?以“UDP”形式更改我的代码真的很难吗?
谢谢!
我做了一个实时游戏,现在非常滞后。我看到对于实时游戏,我使用“UDP 协议”而不是“TCP”编写代码
这会解决滞后问题吗?以“UDP”形式更改我的代码真的很难吗?
谢谢!
这会解决滞后问题吗?
UDP 协议比 TCP 快一点,因为它缺少一些附加值:
当一切正常时(确认正确传递需要额外的握手消息),这些会产生一个小的额外延迟,而当网络上出现错误(额外的重试数据包、接收器等待/重新排序)时,会产生更大的延迟。
对于游戏,您可能不需要这些额外的服务。
你肯定会注意到其中的不同吗?不必要。
底层网络的速度、流量负载和网络路由器/交换机跳数对单个数据包的性能有很大影响。您可能不会注意到千兆本地 LAN 中的任何差异,但可能会看到无线网络的微小差异和互联网的巨大差异。糟糕的路由器设置和繁忙的网络显然会使事情变得更糟。
要了解您的网络路径并检查网络上的速度和可靠性/错误,请使用
ping
& traceroute
/tracert
另请参阅您的网络有多快?
以“UDP”形式更改我的代码真的很难吗?
不。
而不是使用java.net.Socket
, 和 java.net.ServerSocket
使用java.net.DatagramSocket
x 2。
http://docs.oracle.com/javase/tutorial/networking/datagrams/clientServer.html