Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 游戏服务器世界管理_Java_Multithreading_Server - Fatal编程技术网

Java 游戏服务器世界管理

Java 游戏服务器世界管理,java,multithreading,server,Java,Multithreading,Server,我正在用Java创建一个2D游戏。世界是基于多维数组的平铺,我有服务器-客户机系统的体系结构。 到客户端的用户/连接是多线程的 现在我的问题是: 我的客户端是否应该向服务器发送请求,以请求其视图范围内的当前世界状态(包括实体等),或者我是否应该在连接/用户类中创建另一个线程,仅用于每个servertick发送世界数据? 或者是否有更好的解决方案发送/请求世界与他的实体 谢谢你的帮助;) 在游戏中,你常常不想信任客户。服务器这个词是法律,客户机应该很少依赖它们 我的客户端是否应该向服务器发送请求以

我正在用Java创建一个2D游戏。世界是基于多维数组的平铺,我有服务器-客户机系统的体系结构。 到客户端的用户/连接是多线程的

现在我的问题是: 我的客户端是否应该向服务器发送请求,以请求其视图范围内的当前世界状态(包括实体等),或者我是否应该在连接/用户类中创建另一个线程,仅用于每个servertick发送世界数据? 或者是否有更好的解决方案发送/请求世界与他的实体


谢谢你的帮助;)

在游戏中,你常常不想信任客户。服务器这个词是法律,客户机应该很少依赖它们

我的客户端是否应该向服务器发送请求以请求当前世界状态

可能不会,因为客户端不知道何时有更新的信息

服务器知道什么时候更新以及要提供什么信息,因此在需要数据时,服务器向客户机发送数据更有意义


至于发送数据的频率,请在客户机视图中的某些内容发生更改时发送数据(来自客户机操作或只是移动的对象)


这可能在快节奏的游戏(如子弹地狱)中经常出现,在慢节奏的游戏(如棋盘游戏)中则不太常见。

我相信您所做的任何决定都取决于您没有与我们分享的因素,如玩家数量、延迟要求、游戏类型等。然而,一种常见的方法是客户端请求自己周围的地图信息,服务器在出现这些信息时将更改和重要数据推送到客户端。游戏的实时性如何?如果这是一个棋盘游戏,那么一旦有人移动,服务器就可以发送数据。如果这是一种同时执行操作的实时策略,那么在服务器每天发送数据的情况下,它可能会工作得更好。你说的“我也创建了包”是什么意思?你是说网络包吗?是的,我是说服务器包。我想要一种mmorpg,它需要实时性&不太晚的“mmorpg”,如果它像RotMG,一种mmorpg子弹地狱,你需要它比WoW/RuneScape(更好的例子:特拉维亚)更灵敏。如果你对你要做的事情和游戏类型更具描述性,那么我们可以更具描述性和帮助性。因此,我必须检查“玩家”视口中的每个勾号是否有变化,如果需要,在他的视口中发送新的世界状态?或者我应该只发送更新(前玩家123移动到2123 | 312)?这会导致如果许多玩家移动或攻击,它必须发送大量数据包…在这种情况下,最好按计划进行更新,因此如果有延迟,客户端可以检测到。在这样的游戏中,很少会出现客户端视图没有任何变化的情况(包括健康恢复、效果计时器……它们应该在客户端上模拟,但与服务器同步)