Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

基于UE5 开发的联网FPS游戏:GhostShot

GhostShot 是一款基于 Unreal Engine 5 开发的多人在线对战射击 Demo,
项目采用 C++ + 蓝图混合架构,实现了完整的联网同步框架、状态驱动角色系统、射击与动画融合机制,以及基于行为树与 EQS 的 AI 战斗系统。

本项目的核心特色为原创玩法机制 —— “生死转换 / 幽灵态复活系统”,在保证射击手感的同时,引入更具策略性的战斗循环。


💻项目概述

1. 原创玩法机制:生死转换系统(Life – Ghost – Revive)

  • 玩家生命值归零后不会立即出局,而是进入 Ghost(幽灵态)

  • 幽灵态玩家:

    • 可移动与观察战场
    • 不可攻击、不可阻挡子弹
    • 可主动或被动复活
  • 引入战斗资源 “灵契(ReviveTickets)”:

    • 击杀敌人可获得灵契
    • 复活消耗灵契
    • AI 与玩家共享资源系统

该机制有效:

  • 减少被击杀后的挫败感
  • 增强团队协作与战术选择
  • 提升观战与战局感知体验

2. 多人联网架构设计(Listen Server)

项目基于 UE5 监听服务器(Listen Server)模型实现多人对战:

  • 服主玩家同时承担服务器与客户端职责
  • 其他玩家作为客户端连接服主

网络同步策略

  • 关键变量复制(Replication)

    • 生命状态 LifeState
    • 当前血量 CurrentHealth
    • 比赛计时 MatchTimer
  • 远程过程调用(RPC)

    • Client → Server:射击请求 Server_Fire()
    • Server → All:特效广播 Multicast_PlayFireFX()
  • 权限控制

    • 所有伤害计算、状态切换、资源变更仅在 服务器端执行
    • 客户端仅接收同步结果,避免作弊与状态错乱

3. 角色状态机与输入控制系统

生命状态机设计

角色拥有三态:

  • Alive:正常战斗状态

  • Ghost:幽灵态(可移动不可攻击)

  • Dead:完全失效状态

  • 使用 ReplicatedUsing 同步状态变更

  • 在回调中统一处理:

    • 材质替换
    • 碰撞开关
    • UI 刷新

复活保护机制

  • 复活后开启 bIsInvincible 无敌标志
  • 叠加 Overlay 材质进行视觉提示
  • 5 秒后自动关闭保护状态

输入与物理拦截

  • 倒计时阶段锁定移动与射击输入
  • 幽灵态:
    • 保留 Walking 模式
    • 调整重力比例保持真实手感
    • 碰撞忽略 Pawn,仅阻挡场景物体

4. 射击系统与动画融合实现

高精度射击检测

  • Hitscan 实现:LineTraceSingleByChannel

  • 使用 ECC_Visibility 通道进行命中检测

  • 特殊设计:

    • 幽灵态 Pawn 对射线 Ignore
    • 存活 Pawn 对射线 Block
    • 实现“子弹可穿过幽灵,不被友军遮挡”

瞄准偏移系统(Aim Offset)

  • Mesh Space Additive 叠加动画
  • 在 NativeUpdateAnimation 中:
    • 计算 ControlRotation 与 ActorRotation 差值
    • 插值平滑驱动 Pitch / Yaw

效果:

  • 上半身瞄准与武器方向完全对齐
  • 不受下半身移动或转身动画干扰

后坐力仿真

  • 使用 UCurveFloat 曲线驱动
  • 定时采样并调用 AddControllerPitchInput
  • 搭配 Niagara 枪口火焰与音效,形成完整射击闭环

5. AI 行为树与战术决策系统

目标感知与过滤

  • AI 自动忽略 Ghost 状态玩家
  • 仅对 Alive 状态目标进行追踪与攻击
  • 最近目标写入黑板 TargetActor

战斗与生存逻辑

  • 距离判定进入射击态
  • 引入随机散布模拟真人误差
  • 战斗态平滑切换动画姿态

自救与救人机制

  • AI 幽灵态超过 5 秒且持有灵契自动复活

  • 行为树支持:

    • 搜索 Ghost 队友
    • 移动至目标
    • 消耗资源复活队友
  • 血量过低时触发 EQS 查询掩体,主动避战回血


6. UI 系统与联网时序修复

多人视角同步

  • 头顶 UI 始终朝向本地相机
  • 动态计算 LookAtRotation 保证可读性

倒计时显示修正

  • 使用 CeilToInt 向上取整
  • 解决 0.9 秒显示为 0 的视觉错误

多分辨率适配

  • Anchor + Alignment 组合
  • 适配 1080P – 4K 分辨率
  • 防止 UI 拉伸与遮挡

联网初始化时序修复

  • 同时处理:
    • OnRep_PlayerState
    • PossessedBy

确保:

  • 阵营颜色正确
  • 灵契数量即时显示
  • 断线重连 UI 不错乱

输入模式残留修复

  • 跨关卡强制重置 Input Mode
  • 延迟 0.2 秒恢复输入,避免操作冻结

🧠 技术栈与工具

  • 引擎:Unreal Engine 5
  • 语言:C++ / Blueprint
  • 网络:Listen Server / Replication / RPC
  • AI:Behavior Tree / Blackboard / EQS
  • 动画:Aim Offset / Mesh Space Additive
  • 特效:Niagara
  • UI:UMG / DPI Scaling / Anchor Layout

🏁 项目总结

GhostShot 实现了一套完整的小型多人射击技术闭环:

  • 联网同步与权限控制
  • 状态驱动角色系统
  • 高精度射击与动画融合
  • AI 战斗、避战、复活协作
  • UI 多分辨率与时序稳定性修复

About

GhostShot 是一款基于 Unreal Engine 5 开发的多人在线对战射击 Demo, 项目采用 C++ 与 蓝图混合架构,实现了完整的联网同步框架、状态驱动角色系统、射击与动画融合机制,以及基于行为树与 EQS 的 AI 战斗系统。 本项目的核心特色为原创玩法机制 —— 生死转换 / 幽灵复活系统,在保证射击手感的同时,引入更具策略性的战斗循环。

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages