标签:
UE4 架构在构建时就充分考虑了多人游戏因素。只要您遵守基本的架构原则,通常就无需太费事即可将单人游戏体验扩展为多人游戏。
UE4 网络连接是基于服务器/客户端模式构建。也就是说,这个模式中有一个担当主控(authoritative)的服务器端(做出所有重要决定),用于确保所有连接的客户端可以持续更新,以便其持续获得服务器环境的最新近似复本。
在单人游戏体验中,actor 被用于呈现游戏世界。而在多人游戏中,这一点丝毫没有变化,只不过客户端将获得每个 actor 的近似复本,而服务器将保持主控(authoritative)版本。
Actor 是服务器让客户端保持最新的主要途径。当服务器需要更新特定的客户端时,服务器将收集所有的相关 actor(也就是其认定在上次更新后发生变化的 actor),然后向客户端发送足够的信息,以便让这些 actor 保持最新状态。
监听服务器
UE4Editor.exe ProjectName MapName?Listen -game
专用服务器
UE4Editor.exe ProjectName MapName -server -game -log
客户端
UE4Editor.exe ProjectName ServerIP -game
主要步骤如下:
客户端发送连接请求。
如果服务器接受连接,则发送当前地图。
服务器等待客户端加载此地图。
加载之后,服务器将在本地调用 AGameMode::PreLogin。
这样可以使 GameMode 有机会拒绝连接
如果接受连接,服务器将调用 AGameMode::Login
该函数的作用是创建一个 PlayerController,可用于在今后复制到新连接的客户端。成功接收后,这个 PlayerController 将替代客户端的临时 PlayerController (之前被用作连接过程中的占位符)。
此时将调用 APlayerController::BeginPlay。应当注意的是,在此 actor 上调用 RPC 函数尚存在安全风险。您应当等待 AGameMode::PostLogin 被调用完成。
如果一切顺利,AGameMode::PostLogin 将被调用。
这时,可以放心的让服务器在此 PlayerController 上开始调用 RPC 函数。
标签:
原文地址:http://www.cnblogs.com/bodboy/p/5102974.html