通过LAN或Internet进行数据传输
使用XNA Game Studio创建网络游戏时,有两种类型的在线多人游戏:
- 系统链接游戏会话(LAN)
- 现场会议。(互联网)
可用的会话类型:
- 使用系统链接进行局域网游戏
- 登录Windows的Xbox LIVE和游戏-LIVE服务器
- 在游戏开发过程中,使用LIVE通过Internet连接到其他计算机
使用LocalNetworkGamer类(Xbox 360支持)在连接的Xbox和PC单元之间进行数据传输,并使用PacketWriter写入数据,如下所示:
foreach (LocalNetworkGamer gamer in session.LocalGamers)
{
// Get the tank associated with this player.
Tank myTank = gamer.Tag as Tank;
// Write the data.
packetWriter.Write(myTank.Position);
packetWriter.Write(myTank.TankRotation);
packetWriter.Write(myTank.TurretRotation);
packetWriter.Write(myTank.IsFiring);
packetWriter.Write(myTank.Health);
// Send it to everyone.
gamer.SendData(packetWriter, SendDataOptions.None);
}
网络拓扑
对于系统链接游戏,您可以使用以下任何一种硬件配置来测试网络游戏:
一台开发计算机和一台Xbox 360
(在开发计算机上运行游戏的一个实例,在Xbox 360上运行一个实例)。创建者需要一个Xbox LIVE Silver和一个Creators Club成员身份才能在Xbox 360上运行代码。
一台开发计算机和一台客户端计算机
(在每台计算机上运行一个游戏实例)。创建者不能在同一台计算机上同时运行两个联网的XNA Framework游戏。创建者需要第二台机器来运行第二个游戏实例以进行测试。在这种情况下,不需要Xbox LIVE成员身份或Creators Club成员身份。
一台开发计算机和两个Xbox 360控制台
(在每个Xbox 360上运行一个游戏实例)。在这里,创建者在两个Xbox 360上部署和调试游戏。在这种情况下,创建者至少需要两个Xbox LIVE Silver成员和两个Creators Club成员(每个Xbox 360一对)。
网络语音传输
语音数据将自动传输和重放,而无需任何标题工作。标题可以使用它来实现团队聊天或邻近语音。
XNA Framework不会公开程序对语音数据流的直接访问。
- 他们有语音访问权吗?-NetworkGamer.HasVoice
- 他们目前在说话吗?-NetworkGamer.IsTalking
- 他们被静音了吗?-NetworkGamer.IsMutedByLocalUser