用户登录到程序,凭据将根据MySQL数据库进行检查。
用户可以创建一个游戏ID或游戏#,并根据数据库进行检查,以查看是否已经有匹配的游戏ID并允许他们加入游戏,或者如果没有游戏,则将数据插入数据库,基本上等待另一个玩家加入(如果你想玩在线游戏,请考虑服务器浏览器)。
一旦用户加入了正在进行的游戏或创建了游戏,它就会调用Async BeginConnect()。
然后用户玩游戏,像("玩过的牌")或("失去生命")等数据会发送给当前游戏中唯一的其他玩家。
我的问题是如何只将信息发送给正确的玩家。游戏将只支持2名玩家1对1,但在一个给定的时间可能会有多个游戏进行。例如,可能有5个游戏在玩,每个游戏支持2个玩家。对我来说,跟踪这些插槽的最佳方法是什么,这样我就可以区分游戏ID。
-> user#1 is playing in game with ID #1 against user#2
--> user#1 "plays a card"
---> Only send this information to user#2
我很感激事先的帮助,如果我遗漏了一些内容,请告诉我,这将有助于回答我的问题。
更新
我一直在研究其他人如何处理跟踪每个用户的单个套接字的示例,或者在本例中是Game Room。我应该为ClientSocket创建一个类并为其分配属性吗?
您可以通过将每个连接添加到每个客户端的键值列表来跟踪,例如(伪代码):
Dictionary<string gameId, socket gameIdConnection> gameConnections;
你知道它所属的gameId的每个移动,所以你可以获得与它相关的连接/套接字,并将数据包写入该套接字。