【发布时间】:2013-08-03 12:18:47
【问题描述】:
首先我要为我的英语不好向你道歉 :) 昨天我使用 Winsock 和 Allegro5 用 C++ 编写了我的第一个多人游戏 (Pong)。游戏由一台服务器组成,供所有玩家和客户端使用。
每帧 (FPS = 60) 客户端将他们的 mouse_y 坐标发送到服务器,服务器分别将它们传递给对手的客户端。当我在连接到其中一台服务器的两台计算机上玩游戏时,通过本地网络它运行良好,对手的桨移动顺畅。但是当我通过我的外部 IP 地址进行相同的连接时,对手的球拍滞后,这会破坏游戏,因为它是客户端检查球是否击中对手的球拍。因此,同步被破坏了,每当我在另一台计算机上移动一个桨来反弹球时,它就会滞后并且没有及时完成,从而导致对手得分......但这不是滞后的游戏。我的桨和球移动得很顺畅。问题只出在对手的桨上。
我是网络编程新手,因为我只读过Beej's Guide to Network Programming。 我使用 TCP 套接字来 send() 和 recv() 桨坐标,并使用 select() 函数来轮询套接字以获取数据。
我不知道可能是什么原因。
TL;DR:当我通过外部 IP 连接时,对手的桨会滞后,但当我通过本地 IP 连接时则不会。
【问题讨论】:
标签: c++ winsock lag allegro5 pong