我正在尝试开发一个简单的客户端/服务器游戏。 服务器存储所有玩家数据并在请求时或当某些数据发生变化时(玩家位置,姓名等)发送它们,而客户端只显示连接到服务器的所有玩家。 图形方面非常简单:一个代表可以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();
}
我该怎么办?