gpt4 book ai didi

java - 实时java游戏: Socket or RMI

转载 作者:行者123 更新时间:2023-12-01 18:41:58 25 4
gpt4 key购买 nike

我正在开发一款游戏,我想我会添加多人游戏选项。这是一个实时游戏,例如贪吃蛇或类似的游戏,因此我会非常快地更新 Sprite 位置:

while (isRunning) {
...
if (sprite instanceof PlayerSprite) {
PlayerSprite player = ((PlayerSprite) sprite);
collisionManager.checkCollision(player, map, elapsedTime, currTime);
updatePosition(player, elapsedTime);
player.animeUpdate(elapsedTime);
}
...
}

我首先尝试使用 RMI:我存储了对象中的每个位置,并将其设为远程。所以服务器和客户端都可以更新它。但正如我所说,它需要实时更新。RMI 看起来并不能解决这个问题。但我真的是一个初学者,所以我不确定。

所以我的问题是:RMI 或简单的 IO(套接字)将是实时游戏的最佳解决方案吗?

如果套接字更好:我可以通过 ObjectOutput/ObjectInput 将位置存储对象发送到客户端,更新该对象(并绘制到屏幕),然后将更新后的对象发送回服务器,依此类推?

提前致谢:)

最佳答案

So my question is: RMI or simple IO (socket) would be the best solution for a real time game?

这个问题很容易回答。在两者之间,套接字是最佳选择。 RMI 包含大量开销,这会减慢传输时间。实时的目标是尽可能缩短发送和接收信息之间的时间。

If socket is better: Can I send the position-storing object via ObjectOutput/ObjectInput to the client, update the object (and draw to the screen) and then send back the updated object to the server, and so on?

你可以,但正如已经提到的,它很慢。您将需要使用具有客户端-服务器消息传递系统的库(我使用 Kryonet )或编写您自己的协议(protocol)。看似显而易见的关键是客户端和服务器有一种简单的方式相互理解。

关于java - 实时java游戏: Socket or RMI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19598010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com