正在开发的游戏目前正在使用 ServerSocket 和 Socket 来提供多人游戏。当它没有运行localy时,它很多,所以我想知道我是否应该重新制作多人游戏结构以通过TCP( ServerSocket,Socket )和UDP( DatagramSocket )发送。目前正如我所提到的那样,我只使用TCP,并且当没有运行localy时,它每秒只发送大约60个包(30个接收和30个发送)。
服务器和客户端之间发送的信息:
运动,交易,ItemUsage,EnvironmentDetails等等。
所以我的问题是:
如果我使用TCP和UDP而不是仅使用TCP,它会产生巨大的差异吗?
如果我切换到TCP和UDP,我应该在每个协议中发送什么?
提前致谢!
编辑:
客户端:
实例化:this.out = new ObjectOutputStream(new BufferedOutputStream(this.requestSocket.getOutputStream()));
this.in = new ObjectInputStream(new BufferedInputStream(this.requestSocket.getInputStream()));
发送:
this.out.writeObject(temp.toString());
this.out.flush();
Temp是 JSONObject
服务器
实例化:this.out = new ObjectOutputStream(new BufferedOutputStream(c.getOutputStream()));
this.out.flush();
this.in = new ObjectInputStream(new BufferedInputStream(c.getInputStream()));
发送:this.out.writeObject(temp.toString());
this.out.flush();
Temp是 JSONObject
答案 0 :(得分:0)
如果我使用TCP和UDP而不是仅使用TCP,它会产生巨大的差异吗?
是。如果使用UDP更新游戏的状态,您会注意到更好的性能,因为数据验证不会发生。 UDP数据包被触发然后被遗忘。
此外,要提高性能,请限制要发送的数据量。如果要发送JSON,则每个字符都是一个完整字节。一秒钟30次更新可能过多,因为这是每33.3毫秒更新一次。换句话说,60 Hz监视器每16.7毫秒才会更新一次。
如果我切换到TCP和UDP,我应该在每个协议中发送什么?
当您需要确保数据到达服务器或客户端时,通常会使用TCP。当您需要速度时使用UDP,并且可以潜在地处理丢弃的数据包。如果使用UDP,则需要考虑代码中潜在的数据包丢失。