java - 如何使用 kryonet 客户端处理游戏对象更新

标签 java kryonet

我正在 java2d 中开发一个简单的多人游戏,一次可以处理 4 个玩家。 以下是从服务器接收数据的代码示例。

server.addListener(new Listener() {
   public void received (Connection connection, Object object) {

   }
});

我的问题是:当它收到其他玩家的位置等数据时,我应该如何更新它?我是否静态引用游戏类并访问其玩家数据,或者是否在开始时将玩家对象传递给客户端类?有什么好的方法吗?

谢谢!

最佳答案

如果你有一个气球,例如需要显示在每个屏幕上,那么也许你应该有一个静态列表来保存这些对象,并发送整个列表或循环遍历所有对象,并将每个单独发送到客户端,然后在客户端它可以有一个从每个游戏循环渲染的静态列表。

或者你可以传递当前需要更新的游戏对象。例如,您可以将监听器提取到外部类,而不是将其嵌套在 serever.addListener 方法中。像这样

package BTDOnlineToolKit;

import com.esotericsoftware.kryonet.*;

import packets.GeneralPackets.Ping;

public class NetworkHandler extends Listener {

    private Client clientObject;

    public NetworkHandler(Client clientObject) {
        this.clientObject = clientObject;
    }

    @Override
    public void connected(Connection connection) {
        clientObject.updateReturnTripTime();
        connection.updateReturnTripTime();
    }

    @Override
    public void disconnected(Connection connection) {
        super.disconnected(connection);
    }

    @Override
    public void idle(Connection connection) {
        super.idle(connection);
    }

    @Override
    public void received(Connection con, Object packet) {
        if (packet instanceof Ping) {
            Ping ping = (Ping) packet;
            if (ping.returned) {

            }
        }
    }

}

NetworkHandler netHandle = new NetworkHandler(Anyobjects you need it to parse);
Server.addListener(netHandle);

不要忘记,您还可以通过在网络处理程序中创建一个方法来手动更新需要更新的对象。

并在启动服务器之前构建它,其中包含需要连接更新的所有内容,例如,您可以传递一个显示 ping 的标签对象或需要更新其属性的敌方玩家对象。但就像我说的,您可以使用静态列表来存储这些值,但这更具可扩展性。

关于java - 如何使用 kryonet 客户端处理游戏对象更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48896542/

相关文章:

java - Wiremock:无法根据从 json 正文中查找所需参数来设置 stub

java - ubuntu 找不到系统 Java 编译器。确保您已经安装了 JDK(不仅仅是 JRE)a

c# - 哪个是必须与语言无关的最有效的序列化技术

java - 大小未知的多维数组

java - 将 Kryonet 与 Libgdx 结合使用

java - 如何无限循环执行AsyncTask?

java.lang.NoClassDefFoundError : scala/reflect/internal/Trees

java - Kryonet RMI 抛出异常 => 循环 (StackOverflowError)

java - Java中的Mysql。如何实现高效的异步查询?

javascript - 有人有使用 Javascript 老派 winamp 嵌入播放器的经验吗?