简单的网络游戏,客户端 - 服务器架构规划

时间:2010-05-16 17:33:03

标签: multiplayer

我正在编写简单的游戏,我计划将多人游戏(通过网络)作为我的大学项目。 我正在考虑两种客户端 - 服务器通信方案:

物理学(它们是微不足道的!我应该称它为“碰撞测试”实际上:))仅在服务器机器上处理。因此,通信看起来像

Client1->Server: Pressed "UP"
Server->Clients: here you go, Client1 position is now [X,Y]
Client2->Server: Pressed "fire"
Server->Clients: Client1 hit Client2, make Client2 disappear!

服务器接收事件并将其广播给所有其他客户端。

Client1->Server: Pressed "UP"
Server->Clients: Client1 pressed "UP", recalculate his position!!
[Client1 receives this one as well!]

哪一个更好?或者也许没有? :)

2 个答案:

答案 0 :(得分:6)

通常的方法是发送此信息:

  1. 玩家
  2. 的位置
  3. 他什么时候在那里(使用游戏的内部时间概念,不一定是实时)
  4. 玩家的移动向量(方向和速度)
  5. 然后客户可以使用航位推算来估计其他玩家的位置,这样网络延迟就会减少对游戏的干扰。只有当玩家改变方向或移动速度(其他客户无法预测)时才需要发送更新,因此也会节省网络带宽。

    以下是航位推算的一些链接。相同的网站可能还包含更多文章。 http://www.gamasutra.com/view/feature/3230/dead_reckoning_latency_hiding_for_.php http://www.gamedev.net/reference/articles/article1370.asp

答案 1 :(得分:2)

我认为第一种方法更好。所以你在所有客户端上拥有相同的数据。

当物理学很简单并且计算结果总是相同时,第二种方法也可以。但如果有可能的随机数,你将对所有客户产生不同的影响。

相关问题