我正在尝试制作多人网络游戏。每个玩家在屏幕上用矩形表示。我使用的OpenGL的图形和用户输入(MOVE-LEFT,MOVE-RIGHT等命令)将由它处理(或GLUT或sumthing)。对等通信线程
我有以下的游戏架构。
游戏中有4名玩家(节点)。每个玩家都使用UDP发送和接收数据。每个玩家可以发送数据给其他玩家。
如果来自相应用户的任何输入,数据需要由玩家发送。 (例如MOVE-LEFT命令等)。 只要玩家(比如p1)从任何其他玩家(比如p2)接收到任何数据(比如玩家p2在屏幕上的新位置),玩家p1的屏幕应该立即更新。
我在想以下几行: 创建一个处理图形的线程。 使用UDP创建另外2个线程,每个线程用于接收和发送数据。
每当图形线程从用户获取'myposition'的输入时,它就会更新共享全局变量'myposition'。正在等待这个变量的网络发送线程被激活,并且告诉其他玩家关于它的新位置。
类似地,每当从任何其他玩家'i'收到'位置'更新时,网络接收线程更新全局变量player [i] .position。图形线程现在将使用更新后的位置重新绘制场景。
此设计是否正确。如果是的话,这个设计有多好,我该如何改进它