怎么用wordpress建外贸网站,优秀画册设计欣赏,南昌网站建设和推广,国家骨干院校建设网站目录 0 引言1 核心内容1.1 Gameplay各部分创建的流程1.2 Gameplay框架在DS和客户端的存在情况1.3 数据是独立存在于DS和客户端的 2 Gameplay框架各自负责的功能2.1 GameMode2.2 GameState2.3 PlayerController2.4 PlayerState2.5 Pawn2.6 AIController2.7 Actor2.8 HUD2.9 UI ♂️ 作者海码007 专栏UE虚幻引擎专栏 标题【UE 网络】Gameplay框架在DS架构中的扮演的角色❣️ 寄语书到用时方恨少事非经过不知难 最后文章作者技术和水平有限如果文中出现错误希望大家能指正同时有问题的话欢迎大家留言讨论。 0 引言
今天早上思考了一下UE的Gameplay框架。发现自己对Gameplay框架的理解从浅入深最开始做的是数字孪生类型的项目所以没有游戏的概念只知道ActorUObjectComponent几个组合运用对于其他的部分不太熟悉不知道为什么要这样区分设计。
随着然后做了一个单机游戏之后发现不用部分分别管理不同的功能例如GameMode是用于游戏规则的定义PlayerController是用于玩家控制角色Pawn等。最后做了几个多人游戏项目又对框架又有了更新的理解不同部分在网络中扮演的角色也不一样例如PlayerController是充当DS服务器和客户端通信的桥梁GameMode仅存在于DS服务器游戏规则中需要所有玩家都知道的信息则依赖GameState同步信息给客户端。
b站安宁Ken视频教程非常好 绿洲编辑器网络框架参考视频讲的非常好
1 核心内容
1.1 Gameplay各部分创建的流程
为了更清晰地理解 UE4 在Dedicated ServerDS网络框架中的关键部分创建过程将详细解释一下每个步骤 DS服务器启动 Dedicated ServerDS启动后首先会初始化游戏世界并创建必要的管理对象。 创建GameMode对象服务器上会创建一个GameMode对象。GameMode是服务器端的游戏规则管理器负责处理游戏逻辑、规则和流程。注意GameMode只存在于服务器上客户端没有这个对象。 创建GameState对象服务器上会创建一个GameState对象。GameState是一个可复制的对象用于在服务器和所有客户端之间共享游戏状态信息。GameState会被复制到所有客户端以确保每个客户端都能访问到一致的游戏状态。 等待客户端加入游戏会话服务器初始化完成后会等待客户端的连接请求。当客户端请求加入游戏会话时服务器会处理该请求。 创建PlayerController当客户端成功加入游戏会话后服务器会为该客户端创建一个PlayerController对象。PlayerController负责处理玩家的输入和控制逻辑。服务器上的PlayerController会将必要的信息同步到客户端客户端会创建一个对应的PlayerController实例。 创建PlayerState对象服务器会为每个PlayerController创建一个PlayerState对象。PlayerState是一个可复制的对象用于存储与玩家相关的状态信息如分数、生命值等。PlayerState会被复制到所有客户端以确保每个客户端都能访问到一致的玩家状态。 创建PlayerPawn对象 服务器会为每个PlayerController创建一个PlayerPawn对象。PlayerPawn是玩家在游戏世界中的表示负责处理物理和视觉表现。PlayerController会控制PlayerPawn的行为。 同步信息到客户端服务器会将PlayerController、PlayerState和PlayerPawn的相关信息同步到客户端。客户端会创建对应的实例并根据服务器的指令更新这些对象的状态。 客户端与服务器的交互客户端的PlayerController会将玩家的输入如移动、射击等发送到服务器上的PlayerController。服务器上的PlayerController会处理这些输入并更新游戏状态然后将更新后的状态同步回客户端。
总结来说整个过程确保了服务器端的权威性同时通过网络复制机制将必要的信息同步到客户端以确保客户端能够正确地响应玩家的输入并显示一致的游戏状态。 1.2 Gameplay框架在DS和客户端的存在情况
理解Gameplay框架各个关键部分在DS和客户端上存在的情况能极大的帮助网络游戏的开发。如下图所示
下面这个图是 Listen Server 的图在DS模式下Server端是没有UI的也没有PlayerController_Server。
在理解了各个部分的存在位置我们就可以避免一些常见的错误逻辑例如
在某个客户端上获取所有的PlayerController在服务器上获取HUD对象在客户端上直接生成Actor在客户端获取AIControllerAIController只存在于服务器上
1.3 数据是独立存在于DS和客户端的
在服务器和客户端上各自的数据其实是独立的只是通过复制的方式让数据保持一致。本质上还是两份数据为什么要强调这一点呢因为有些时候会有一些错误的操作例如通过Server RPC将一个Actor通过参数的形式传递给服务器在服务器上对这个Actor进行一些操作这样是不对的。
在Unreal EngineUE的网络框架中服务器和客户端上的数据确实是独立的尽管通过网络复制机制保持一致性。这一点非常重要因为它影响了如何正确地进行网络编程和数据同步。下面是一些关键的解释 独立的数据副本服务器和客户端各自维护独立的数据副本。通过网络复制Replication机制服务器会将其数据状态同步到客户端但本质上它们是两份独立的数据。 网络复制机制网络复制是指服务器将其数据状态如Actor的属性、位置等复制到客户端以确保客户端显示的状态与服务器一致。这种复制是单向的即从服务器到客户端。 Server RPCRemote Procedure CallServer RPC是客户端请求服务器执行某些操作的机制。客户端可以通过Server RPC向服务器发送请求服务器接收到请求后执行相应的逻辑。 错误的操作示例错误操作是指通过Server RPC将一个Actor作为参数传递给服务器然后在服务器上对这个Actor进行操作。这是不正确的因为客户端和服务器上的Actor实例是独立的直接传递客户端的Actor实例到服务器是无效的。
2 Gameplay框架各自负责的功能
将游戏中不同的功能部分划分给对应的框架模块可以让整个工程逻辑清晰管理方便。
2.1 GameMode
功能
游戏规则定义游戏的规则和逻辑如胜利条件、回合机制等。玩家生成管理玩家的生成点和生成逻辑。游戏流程控制游戏的整体流程如游戏开始、结束等。仅在服务器上存在GameMode只在服务器上存在负责管理服务器端的游戏逻辑。
作用GameMode是服务器权威性的核心部分确保游戏规则和流程在服务器上得到正确执行。
2.2 GameState
功能
全局状态存储游戏的全局状态信息如当前游戏时间、回合数、比分等。所有玩家都需要知道的信息存储在这里状态同步通过网络复制Replication将状态同步到所有客户端。在服务器和客户端上都存在GameState在服务器和所有客户端上都存在确保所有客户端都能访问到一致的游戏状态。
作用在服务器和客户端之间共享游戏状态确保所有玩家看到一致的游戏信息。
2.3 PlayerController
功能
玩家输入处理玩家的输入并将其转换为游戏中的动作。控制逻辑管理玩家的控制逻辑如移动、攻击等。在服务器和对应的客户端上都存在PlayerController在服务器和对应的客户端上都存在负责处理 本地玩家 的输入和控制。
作用
输入处理在客户端上接收玩家输入并通过 Server RPC 将其发送到服务器。控制同步在服务器上处理输入并更新游戏状态同时通过 Client RPC 将必要的信息同步到客户端。
2.4 PlayerState
功能
玩家状态存储与玩家相关的状态信息如分数、生命值、攻击力、buff等。状态同步通过网络复制将状态同步到所有客户端。在服务器和客户端上都存在PlayerState在服务器和所有客户端上都存在确保所有客户端都能访问到一致的玩家状态。
作用 在服务器和客户端之间共享玩家状态确保所有玩家看到一致的玩家信息。
2.5 Pawn
功能
玩家表示表示玩家在游戏世界中的位置和状态。物理和视觉表现处理玩家的物理和视觉表现如移动、动画等。在服务器和客户端上都存在Pawn在服务器和所有客户端上都存在负责同步玩家的状态。
作用通过网络复制将Pawn的状态如位置、旋转等同步到所有客户端确保所有玩家看到一致的游戏世界。
2.6 AIController
功能
AI逻辑管理AI角色的行为和决策逻辑。控制AI角色控制AI角色的移动、攻击等行为。在服务器上存在AIController通常 只在服务器上存在负责管理服务器端的AI逻辑。
作用在服务器上管理AI角色的行为和决策确保AI角色在游戏中的表现符合预期。
2.7 Actor
功能
游戏对象表示游戏中的任何对象如道具、环境物体等。功能模块可以包含各种组件如渲染、物理、音频等来实现特定功能。在服务器和客户端上都存在Actor可以在服务器和客户端上都存在也可以仅在服务器或客户端上存在具体取决于Actor的类型和用途。
作用在服务器和客户端之间管理和同步游戏对象确保游戏世界的一致性。
2.8 HUD
功能
用户界面在屏幕上显示游戏信息如健康条、分数等。仅在客户端上存在HUD只在客户端上存在负责显示本地玩家的游戏信息。
作用在客户端上显示游戏信息提供玩家与游戏的交互界面。
2.9 UI
功能
用户界面包括菜单、按钮、文本等用于与玩家进行交互。交互逻辑处理用户输入并触发相应的游戏逻辑。仅在客户端上存在UI元素通常只在客户端上存在负责显示和处理本地玩家的交互。
作用在客户端上提供用户界面允许玩家与游戏进行交互如选择菜单选项、查看状态信息等。