当前位置: 首页 > article >正文

UE GameMode

定义和功能
  • 定义GameMode 是Unreal Engine中定义游戏规则、控制游戏进程的类,是每个游戏世界(World)的逻辑核心。

  • 功能

    • 类注册:管理游戏中所需的类信息,如玩家和AI控制器、默认Pawn等。

请添加图片描述

  • 实体Spawn:控制游戏中角色和对象的生成,玩家Pawn和PlayerController,AIController也都是由GameMode负责。最主要的SpawnDefaultPawnFor、SpawnPlayerController、ShouldSpawnAtStartSpot这一系列函数都是在接管玩家实体的生成和释放。
  • 游戏状态管理:控制游戏的暂停、开始、结束等状态。
  • Level切换:管理游戏的关卡(Level)切换,包括无缝旅行(Seamless Travel)的实现。
  • 多人游戏同步:在多人游戏中同步玩家的状态和游戏进度,比如一起开始。
设计理念
  • 游戏逻辑的中心GameMode 设计为控制游戏核心逻辑的中心点,从游戏规则到玩家行为的管理。
  • 灵活的控制:通过提供多种控制接口和函数,使开发者可以自定义游戏的行为和规则,以适应不同的游戏类型。
  • 支持网络游戏:设计了多种机制来支持网络游戏的需要,如匹配状态、玩家登录等。
相关类关系
  • PlayerControllerPawn的关系:负责生成和管理玩家的控制器和Pawn,确保游戏逻辑与玩家互动的实现。
  • GameState的关系GameMode 控制游戏逻辑,而GameState 用来保存游戏的状态信息,两者配合确保游戏状态的正确同步。

请添加图片描述

游戏场景例子
  • 在线多人射击游戏GameMode 管理玩家的生成、队伍分配、比赛开始和结束。
  • 战略游戏:根据不同的游戏模式(如死亡竞赛、占领旗帜等),GameMode 定义不同的胜利条件和规则。

当配置多个Level具有不同的GameMode时,应用的原则如下:

  • 在Unreal Engine(UE)中,每个World仅会有一个GameMode实例。如果一个World包括一个PersistentLevel和多个StreamingLevel,UE仅在创建World并加载PersistentLevel时创建GameMode实例。此后,在加载StreamingLevel过程中,不会创建新的GameMode实例。因此,无论StreamingLevel配置了何种GameModeClass,整个World的GameMode始终只有一个,即PersistentLevel所配置的GameMode。

关于Level迁移时GameMode的保持情况:

  • 如果使用bUseSeamlessTravel进行travelling,即使travelling到一个配置有不同GameModeClass的新Level,当前的GameMode、GameState和GameSession可以暂时迁移到一个中间的TransitionWorld中。在迁移过程中,这些元素首先被移到TransitionWorld,然后在完成迁移至新World时,这些状态会被释放,根据新World配置的GameModeClass创建新的GameMode实例。
  • 如果未开启bUseSeamlessTravel,在travelling时,当前的World及其GameMode会被完全释放,新的World将根据其配置的GameModeClass重新创建GameMode。

哪些逻辑应该写在GameMode里?哪些应该写在Level Blueprint里?

GameMode的职责:

  1. 游戏玩法逻辑:GameMode主要负责游戏的核心玩法规则,例如胜利条件、玩家得分、游戏状态(如开始、结束)的管理,以及怪物的生成和管理。这些逻辑是全局性的,应适用于整个World中的所有Level。
  2. 玩家管理:处理玩家的加入、退出、重生等逻辑。GameMode在服务器上运行,确保所有游戏状态的同步和游戏规则的强制执行。
  3. 服务器逻辑:因为GameMode只存在于服务器端,所以它是处理所有需要中央控制的游戏逻辑的地方,例如同步时间、游戏进度等。

Level Blueprint的职责:

  1. 特定级别的表现逻辑:Level Blueprint适合编写仅与当前Level相关的逻辑,如特定事件的触发、环境效果的控制(如天气变化、特效播放),以及对Level内特定Actor的行为控制。
  2. 环境交互:处理玩家或游戏内对象与当前Level环境的互动,比如开关门、激活机关等。
  3. 表现层面的反馈:虽然UI通常由PlayerController或GameInstance处理,Level Blueprint仍可以用于处理那些与玩家直接交互且效果立即可见的元素,如局部特效和动画。

总结:

  • 将全局性或影响整个游戏流程的逻辑放在GameMode中,确保游戏的整体规则和逻辑一致性。
  • 将与特定Level直接相关或只在某个Level中发生的视觉和环境交互逻辑放在Level Blueprint中,这有助于保持各个Level的独立性和特色。
  • 游戏的UI和玩家特定的交互逻辑应主要在PlayerController中处理,而GameMode应避免涉及任何客户端特定的UI逻辑,保持服务器端的职责清晰。

http://www.kler.cn/a/532160.html

相关文章:

  • sql表的增删改、替换
  • hypermesh中用tcl脚本生成多个线段
  • OPENPPP2 —— VMUX_NET 多路复用原理剖析
  • 【自然语言处理(NLP)】深度学习架构:Transformer 原理及代码实现
  • Spring WebFlux揭秘:下一代响应式编程框架,与Spring MVC有何不同?
  • 计算机网络——流量控制
  • Java 数据库连接池:HikariCP 与 Druid 的对比
  • 进程的环境变量
  • 期末数据库课程设计基于Java+MySQL+JDBC+JavaSwing实现的图书进销管理系统源代码+数据库
  • 基于RK3588/RK3576+FPGA的巡检机器人六自由度机械臂的系统设计
  • vulkan入门--1windows环境搭建超详细版
  • 【算法】动态规划专题② ——LIS(最长递增子序列) python
  • 19C RAC在vmware虚拟机环境下的安装
  • openssl 中 EVP_aes_256_gcm() 函数展开
  • k8s二进制集群之负载均衡器高可用部署
  • C#面试常考随笔12:游戏开发中常用的设计模式【C#面试题(中级篇)补充】
  • Lua语言的云计算
  • el-table表格点击单元格实现编辑
  • windows电脑-ubuntu,传输文件
  • 启元世界(Inspir.ai)技术浅析(四):演化学习
  • 结构体和类
  • 【学术投稿-2025年计算机视觉研究进展与应用国际学术会议 (ACVRA 2025)】从计算机基础到HTML开发:Web开发的第一步
  • 超详细UE4(虚幻4)第一人称射击(FPS)游戏制作教程
  • Spring Boot统一异常拦截实践指南
  • 后盾人JS--继承
  • 流程驱动应用系统设计