使用libgdx在ubuntu和windows上的不同行为

时间:2014-09-10 19:55:14

标签: java windows ubuntu libgdx

我正在尝试开发一个简单的客户端/服务器游戏。 服务器存储所有玩家数据并在请求时或当某些数据发生变化时(玩家位置,姓名等)发送它们,而客户端只显示连接到服务器的所有玩家。 图形方面非常简单:一个代表可以2D移动的玩家的方块。

我在Ubuntu上运行服务器和客户端,而另一个客户端在Windows上运行。 我注意到的是,当我移动Windows播放器时,相应的方块在Ubuntu端平滑移动,而当我移动Ubuntu方块时,Windows显示其他PC的播放器时会出现延迟。

我认为这是因为连接错误或服务器优化不佳,因为更顺畅的客户端是在服务器的同一台机器上运行的客户端。

但后来我注意到,如果我移动Windows和Ubuntu播放器,滞后消失,双方的移动变得平滑。

这是我在客户端的主要方法:

public void render () {
    if(updateListNeeded && isLogged) { //If the game just started update players list
        Client.requestList();
        updateListNeeded = false;
    }
    player.update(); //move player with flags triggered by arrow keys and getDeltaTime()
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    batch.begin();
    Color c = new Color(batch.getColor());
    batch.setColor(player.getGDXColor());
    batch.draw(playSprite, player.getX(), player.getY());

    List<User> users = Client.getDataManager().getAllUsers();
    if(users.size() > 0) 
    for (User u : users) { //Display all users
        batch.setColor(u.getGDXColor());
        batch.draw(playSprite, u.getX(), u.getY());
    }
    batch.setColor(c);
    batch.end();
}

我该怎么办?

0 个答案:

没有答案