何时在多人游戏循环中发送数据包?

问题描述:

我编程我的第一个多人游戏循环而现在我的循环包括:何时在多人游戏循环中发送数据包?

  1. 逻辑
  2. 过程键盘输入
  3. 过程鼠标输入

在什么循环中的点是否最好将数据包发送到服务器?

我目前的游戏循环:

while (!key[KEY_ESC]) { 
     while (speed_counter > 0) { 
      update(); 
      keyboard(); 
      mouse(); 
      speed_counter--; 
     } 
     if(game_time - old_time >= 10) { 
      fps = frames_done; 
      frames_done = 0; 
      old_time = game_time; 
     } 
     draw(); 
     frames_done++; 
    } 
+0

上面显示的代码在外部while循环的第一次迭代后是否停止处理鼠标和键盘信息?它看起来像speed_counter会减少到零,然后永远保持为零,因此内部while循环将不会再次输入。 – 2012-07-10 03:25:10

+0

@JeremyFriesner我正在使用计时器来增加speed_counter。 – rmaes4 2012-07-10 03:48:31

你想收到后输入(在这种情况下,键盘和鼠标),这样所有的移动可以在同一时间进行更新,以发送数据包。如果我正确理解您的问题,您需要步骤3.5,类似于update other players

+0

我将我的代码添加到我的问题中,我将在哪里发送代码中的数据包? – rmaes4 2012-07-10 02:53:07

+1

发送数据包的最佳时机是在您准备好要包含数据的数据之后。你不能更快地发送它们,因为你不知道要发送什么,而且以后你不会再发送它们,因为在发送数据之前你坚持数据的时间越长,越多的时间会通过在其他玩家可以看到更新的数据之前。 – 2012-07-10 03:24:19