【发布时间】:2014-07-14 08:46:15
【问题描述】:
请注意,我是线程和 WinSock 的新手。
对于一个大学项目,我必须创建一个用 C/C++ 编写的简单多人游戏,使用 WinSock 进行通信,使用 WinAPI 线程处理多个客户端(最多 4 个)。
游戏非常简单,玩家沿着棋盘移动他们的点并留下他们的痕迹。在给定时间内设法覆盖最大区域的玩家赢得了比赛。
在客户端应用程序上,我正在运行 2 个线程。第一个将有关按键的信息发送到服务器。第二个从服务器接收数据(所有玩家的坐标)并绘制世界。
在服务器端,我为每个客户端运行 1 个线程来接收他的输入,然后在服务器上更新他的坐标。还有另一个线程执行逻辑(检查碰撞,检查玩家是否没有离开屏幕等)并不断向所有客户端发送玩家坐标。
我在两边都使用阻塞套接字。
我为 2 名玩家测试了游戏,服务器和客户端都在同一网络中的不同机器上,结果玩家体验到明显的延迟并且不流畅。
我的方法完全错误吗?为多人游戏创建服务器和客户端应用程序的最佳方式是什么?
【问题讨论】:
标签: c++ multithreading client-server winsock2