码迷,mamicode.com
首页 > 其他好文 > 详细

UE4 服务器模式

时间:2016-01-05 18:14:08      阅读:307      评论:0      收藏:0      [点我收藏+]

标签:

概述

UE4 架构在构建时就充分考虑了多人游戏因素。只要您遵守基本的架构原则,通常就无需太费事即可将单人游戏体验扩展为多人游戏。

UE4 网络连接是基于服务器/客户端模式构建。也就是说,这个模式中有一个担当主控(authoritative)的服务器端(做出所有重要决定),用于确保所有连接的客户端可以持续更新,以便其持续获得服务器环境的最新近似复本。

Actor

在单人游戏体验中,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

连接过程

主要步骤如下:

  1. 客户端发送连接请求。

  2. 如果服务器接受连接,则发送当前地图。

  3. 服务器等待客户端加载此地图。

  4. 加载之后,服务器将在本地调用 AGameMode::PreLogin。

    • 这样可以使 GameMode 有机会拒绝连接

  5. 如果接受连接,服务器将调用 AGameMode::Login

    • 该函数的作用是创建一个 PlayerController,可用于在今后复制到新连接的客户端。成功接收后,这个 PlayerController 将替代客户端的临时 PlayerController (之前被用作连接过程中的占位符)。

    • 此时将调用 APlayerController::BeginPlay。应当注意的是,在此 actor 上调用 RPC 函数尚存在安全风险。您应当等待 AGameMode::PostLogin 被调用完成。

  6. 如果一切顺利,AGameMode::PostLogin 将被调用。

    • 这时,可以放心的让服务器在此 PlayerController 上开始调用 RPC 函数。

 

UE4 服务器模式

标签:

原文地址:http://www.cnblogs.com/bodboy/p/5102974.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!