ConnectX - 强大的跨平台异地跨网多人游戏库

一个跨平台的 Minecraft P2P 在线多人库,支持异地跨网联机,采用 C# 开发

工具实用辅助
❤️0
👁️3
⬇️0

详细介绍

ConnectX

README in English

CodeFactor Grade
GitHub
Maintenance
GitHub commit activity
GitHub closed pull requests
GitHub repo size
DotNet Version
GitHub Actions Workflow Status

一个跨平台的 Minecraft P2P 在线多人库,支持异地跨网联机,采用 C# 开发,使用高性能套接字实现出色的转发性能,由 Zerotier SDK 实现 P2P 功能。

由我们的另一个开源项目提供支持: Hive.Framework

Demo Screenshot

## 架构图

ConnectX cn drawio
ConnectX cn dark drawio

## 快速开始!

我们使用 MSDI(Microsoft.Extensions.DependencyInjection)作为 DI 容器。最佳做法是在程序中使用 .NET Generic Host

首先,为服务器配置添加以下方法,ConnectXServerIp 将是 ConnectX.Server 的后台地址。

c#<br>private static IClientSettingProvider GetConnectXSettings()<br>{<br> var serverIp = IPAddress.None;<br><br> try<br> {<br> var ips = Dns.GetHostAddresses(ConnectXServerIp);<br> var ipv4Addresses = ips<br> .Where(ip => ip.AddressFamily == AddressFamily.InterNetwork)<br> .Where(ip => !ip.IsLocalIpAddress())<br> .ToArray();<br><br> if (ipv4Addresses.Length > 0)<br> serverIp = ipv4Addresses[0];<br> }<br> catch (Exception ex)<br> {<br> Log.Logger.Error(ex, "Failed to resolve ConnectX server IP.");<br> }<br><br> return new DefaultClientSettingProvider<br> {<br> ServerAddress = serverIp,<br> ServerPort = ConnectXServerPort,<br> JoinP2PNetwork = true<br> };<br>}<br>

然后,只需要再添加一行即可完成配置!

diff<br>private static void ConfigureServices(IServiceCollection services)<br>{<br> // ...<br>+ services.UseConnectX(GetConnectXSettings);<br> // ...<br>}<br>

## 如何使用?

IServerLinkHolderClient 注入要管理房间实例的 ViewModel 当中。

### 连接到服务器
c#<br>await _serverLinkHolder.ConnectAsync(CancellationToken.None);<br>

### 执行任何房间相关操作

> [!IMPORTANT]
> 请确保在执行任何房间操作前您已经成功和服务器建立了连接,否则可能会出现预期之外的结果!
>
> c#<br>> await TaskHelper.WaitUntilAsync(() => _serverLinkHolder is { IsConnected: true, IsSignedIn: true });<br>>

c#<br>var message = new CreateGroup<br>{<br> UserId = _serverLinkHolder.UserId,<br> RoomName = createRoomRecord.RoomName,<br> RoomDescription = createRoomRecord.RoomDescription,<br> RoomPassword = createRoomRecord.RoomPassword,<br> IsPrivate = createRoomRecord.IsPrivateRoom,<br> MaxUserCount = 3<br>};<br><br>var (groupInfo, status, err) = await _multiPlayerClient.CreateGroupAsync(message, CancellationToken.None);<br><br>if (groupInfo == null || status != GroupCreationStatus.Succeeded || !string.IsNullOrEmpty(err))<br>{<br> // Error process<br> return;<br>}<br><br>_multiPlayerClient.OnGroupStateChanged += MultiPlayerClientOnGroupStateChanged;<br><br>// Other actions<br>

## 开源协议

MIT。这意味着您可以出于任何目的修改或使用我们的代码,但您的软件的所有副本或重要部分都应包含版权声明和许可声明。

## 统计信息

Alt

## 免责声明

ConnectX 与 Mojang 或其软件的任何部分均无关联。

## 耻辱柱

在此,我们将列出所有使用我们的代码但未遵守 MIT 许可的程序。

更新记录

查看更多 →
4dbe570
2025-03-06
下载

评论区 (0)

登录后发表评论
暂无评论,快来抢沙发吧!

创作者信息

CoronaStudio
创作者

资源信息

类型工具软件
发布时间2025/3/6
更新时间2026/3/11
游戏版本1.19.2
运行平台windows
运行环境client-and-server