多人在线对战开发指南 · C#

发布时间 2023-07-15 13:25:52作者: 夜刺

多人在线对战是一款基于 C# 编写的游戏 SDK,它为有强联网需求的网络游戏提供了一整套的客户端 SDK 解决方案,因此开发团队不再需要自建服务端,从而节省大部分开发和运维成本。多人在线对战提供的主要功能如下:
+

获取房间列表
创建房间
加入房间
随机加入(符合条件的)房间
获取房间玩家
获取、设置、同步房间的属性
获取、设置、同步玩家的属性
发送和接收「自定义事件」
离开房间
SDK 导入
请阅读 安装,获取 dll 库文件。
+

初始化
导入需要的命名空间。
+

using LeanCloud.Play;
接着我们需要实例化一个在线对战 SDK 的客户端对象。
+

var client = new Client({{appid}}, {{appkey}}, userId, playServer: "https://xxx.example.com", gameVersion: "0.0.1");
// 请将 xxx.example.com 替换为你的应用绑定的自定义 API 域名

其中, userId 作为客户端的唯一标识连接至服务器。 需要注意,这个 userId 有如下限制:
+

只允许英文、数字与下划线
长度不能超过 32 字符
一个应用内全局唯一
gameVersion 表示客户端的版本号,如果允许多个版本的游戏共存,则可以根据这个版本号路由到不同的游戏服务器。
+

连接
建立连接
通过下面的代码将当前玩家连接到多人对战服务:
+

try {
await client.Connect();
// 连接成功
} catch (PlayException e) {
// 连接失败
Debug.LogErrorFormat("{0}, {1}", e.Code, e.Detail);
}
大厅
我们推荐您「不要」将玩家加入大厅,因为在大厅中,服务端会不停的下发最新的全量房间列表,由玩家自行选择其中一个房间进行游戏,这种方式不仅对玩家体验不友好,同时来会带来很大的带宽压力。 我们推荐您像现在的绝大部分手游一样,直接通过房间匹配的方式,快速匹配开始游戏。
+

如果您有特殊的游戏场景需要获取房间列表,可以调用以下方法:
+

try {
await client.JoinLobby();
// 加入大厅成功
} catch (PlayException e) {
// 加入大厅失败
Debug.LogErrorFormat("{0}, {1}", e.Code, e.Detail);
}
当玩家加入到大厅后,服务端会将当前大厅的房间列表推送给客户端,开发者可以根据需求显示房间列表,或加入房间参与游戏。
+

client.OnLobbyRoomListUpdated += () => {
var roomList = client.LobbyRoomList;
// TODO 可以做房间列表展示的逻辑
};