【虚幻引擎】GameMode和GameSate

Sunday, Apr 21, 2024 | 1 minute read | Updated at Sunday, Apr 21, 2024

@

GameMode是服务器端权威的游戏规则管理者,定义核心逻辑;GameState则负责在服务器与客户端间同步全局游戏状态,如比分和时间。

image-20250422211945454
image-20250422211945454

在虚幻引擎(Unreal Engine)中,GameModeGameState 都是多人游戏中的核心类,但它们的分工和用途有显著区别。以下是它们的对比和典型应用场景:


1. GameMode(游戏规则管理者)

职责

  • 仅存在于服务器端(不会复制到客户端)。
  • 定义游戏的核心规则:胜利条件、玩家生成逻辑、回合制规则等。
  • 管理玩家登录/退出(通过Login/Logout等事件)。
  • 生成并持有PlayerController、PlayerState等

典型用途

1
2
3
4
5
6
7
8
// 示例:在GameMode中设置玩家生成逻辑
void AMyGameMode::PostLogin(APlayerController* NewPlayer) {
    Super::PostLogin(NewPlayer);
    // 生成玩家角色
    if (NewPlayer->GetPawn() == nullptr) {
        SpawnPlayerAtTransform(NewPlayer, SpawnTransform);
    }
}

关键特性

  • 服务器权威:客户端无法修改GameMode的逻辑。
  • 不复制:客户端无法直接访问GameMode。

2. GameState(游戏状态同步者)

职责

  • 存在于服务器和客户端(自动复制到所有客户端)。
  • 存储并同步游戏全局状态:比分、剩余时间、玩家列表等。
  • 提供客户端可见的数据(如通过PlayerArray访问所有玩家的PlayerState)。

典型用途

1
2
3
4
5
// 示例:在GameState中同步比分
void AMyGameState::OnRep_TeamScores() {
    // 客户端更新UI显示比分
    UpdateScoreboardUI(TeamAScore, TeamBScore);
}

关键特性

  • 数据同步:通过属性复制(Replicated)或RPC同步到客户端。
  • 客户端可读:UI可以直接绑定GameState的数据(如剩余时间)。

核心区别对比

特性GameModeGameState
存在位置仅服务器服务器 + 客户端(复制)
用途定义规则、逻辑控制存储和同步全局状态
是否复制到客户端❌ 否✅ 是
客户端访问权限无法直接访问可读取数据(如显示比分)
生命周期游戏开始时创建,结束时销毁随游戏运行持续存在

协作流程示例

  1. 服务器
    • GameMode决定玩家生成规则(如出生点选择)。
    • GameState更新并同步比分到所有客户端。
  2. 客户端
    • 通过GameState获取实时比分,更新UI。
    • 无法修改规则(必须通过服务器GameMode)。

何时使用?

  • 用GameMode
    • 需要权威控制游戏逻辑(如判断胜利条件)。
    • 处理玩家登录/退出等敏感操作。
  • 用GameState
    • 需要让所有客户端知道全局状态(如倒计时、玩家列表)。
    • UI需要绑定的动态数据(如实时比分)。

通过这种分工,虚幻引擎实现了逻辑与状态的分离,确保多人游戏的同步性和安全性。

© 2021 - 2026 古月月仔的博客

🌱 Powered by Hugo with theme Dream.

关于我
  • 我是古月月仔
  • Ethan Hu
  • 分享技术学习笔记与生活点滴
  • 现居: 上海 中国
  • 家乡: 平遥 山西
在用的学习工具
  • 📝 Typora —— 极致简洁的 Markdown 编辑器,助力沉浸式文档撰写与知识记录。
  • 📓 Notion —— 一站式工作空间,用于搭建个人知识库、项目管理与深度协作。
  • 🔗 N8N —— 强大的基于节点的自动化工作流工具,轻松实现不同应用间的逻辑联动。
  • 🤖 Gemini —— 智能 AI 助手,在代码辅助、创意激发与信息检索中提供强力支撑。
我的爱好
  • 🚀 喜欢折腾各种好玩的技术
  • 📸 业余摄影爱好者
  • 🎮 各类游戏玩家
  • 💻 数码产品折腾爱好者
  • 📚 阅读:赫尔曼·黑塞 & 阿尔贝·加缪
  • 🎞️ 追番中:《电锯人:蕾塞篇》
  • 🎬 经典重温:《命运石之门》
最近正在学