Skip to Content
CrossingNet

概览

CrossingNet 是 UE 5.8 的服务器权威对局网络层:身份、匹配、对局实例、房间、结算、重连、观战与运维收在一个 C++ 插件里,蓝图只订阅事件做表现。

CrossingNet 把「开一局」拆成服务端上的固定几段:玩家进来先有身份,队列里按维度聚合成组, 大厅把组交给一个实例进程,实例进程里跑权威对局,结束时结算并回传大厅。客户端只跟房间说话, 大厅和房间之间走一条带票据的控制通道。

插件不是一套玩法框架:它不判胜负、不做 UI、不接管登录。它管的是「这一局在服务端怎么被组织、 怎么被分配到一台机器上、怎么保证结算不丢、失败之后怎么回来」。

第一次来? 按学习路径走八章:从装进项目、起大厅、拉起房间, 到客户端进房、结算、自动匹配、局域网开房与封禁。每章一个可执行案例、一条完成判据。

一眼看上去

大厅侧为一个已配对的 2v2 拉起房间进程,签发票据;房间结束时把结果传回去:

FGuid Room;
int32 Port;
FString Error;
Session->SpawnInstance(TEXT("2v2"), Room, Port, Error);

const FString Token = Session->CreateJoinToken(Room, PlayerId, ECrossingJoinRole::Player, Team);

RoomSub->EndGameWithWinner(TEXT("Completed"), 0);

规模

项值
插件版本0.1.0
引擎Unreal Engine 5.8.2(源码版)
运行时 / 编辑器模块CrossingNet / CrossingNetEditor
源文件68 个(.h + .cpp)
配置项146 个,分 13 类(CrossingNetSettings.h)
蓝图事件35 个(UCrossingEventsSubsystem)
设置预设6 份(Config/Presets/)
依赖无外部依赖,不依赖 OnlineSubsystem

模块

插件按职责拆成九块,每块只回答自己那段问题:

模块主要类负责不负责
IdentityUCrossingIdentitySubsystem、ACrossingPlayerState、ICrossingAuthProvider分配 CrossingPlayerId 并复制;Guest 与团队账号两种来源不碰 UniqueId(无 OSS 时无效)
SessionUCrossingSessionSubsystem实例进程、端口、健康探测、状态机、回收、占位、预热池、票据、重连登记、结算落盘不处理身份,只按人数
RoomUCrossingRoomSubsystem座位、准备、开局、结算、健康回复、重连、投降、系列赛、观战、迟到不负责匹配和旅行
MatchUCrossingMatcherSubsystem、ICrossingMatchDimension、IMatchPolicy队列、配对、多队、维度、Elo 窗口、自动拉起、Bot 补位不直接创建实例(调 Session)
PartyUCrossingPartySubsystem建队、邀请、整队入队、队长移交、赛后返回不做跨局社交关系
ProfileUCrossingProfileSubsystem、UCrossingProfileStore档案块存储、分块传输、Elo、战绩、赛季、行为分不做账号系统
AdminUCrossingAdminSubsystem踢人、封禁、强制结算、关实例不做权限系统
EventsUCrossingEventsSubsystem35 个蓝图事件总线不保存业务状态
NetACrossingGameMode、ACrossingPlayerController、CrossingControlProtocol旅行、RPC、票据校验、控制帧不参与业务判定
LANUCrossingLANSubsystemUDP 发现、开房广播、直连加入不做认证与加密

它解决什么

问题插件的回答
谁来开房间、开在哪SpawnInstance 拉起实例进程,端口从 GamePortRange 里取
房间还活着吗大厅每秒探一次健康端口,连续 5 次失败判卡死
玩家怎么进房大厅签发 JoinToken,客户端带着票据旅行,房间校验后才分座位
掉线还能回来吗座位保留到 ReconnectWindowSeconds(默认 120 秒),重连票据回到原座位
匹配怎么放宽Elo 窗口按 MatchEloGrowthPerSecond 随时间放宽,到 MatchMaxWaitSeconds 失败
结算丢了怎么办结果带 matchId 幂等落盘,房间侧等 ACK 才停止重试
谁在乱刷设备指纹只做辅助信号,弱指纹与候选指纹不自动封

从哪里读

想做的事读这篇
把插件放进项目、配好第一段 DefaultGame.ini安装与启用
跑通第一次开房:大厅 + 两个客户端第一个对局
明白服务端怎么分层、谁管什么架构
实例、玩家、对局各有哪些状态生命周期
调匹配窗口、预热池、多队、Party匹配
大厅 API、端口、健康、回收大厅与实例
票据、座位、结算、重连、投降房间与结算
控制帧、JOIN 票据格式、trace协议
身份与档案身份与档案
同一条网线开房局域网开房
封设备、查日志、敲命令设备与封禁、运维
35 个蓝图事件逐个查事件参考
146 个配置项按类查配置参考

On this page