跳到主要内容

AI游戏调试

这是雷蛇QA智能助手的AI检测功能。

AI会生成缺陷的标题、描述、严重程度预估,以及详细的复现步骤。随后,QA测试人员可对所有内容进行编辑和审核,再提交至他们所选择的缺陷追踪工具(例如JIRA)。

QA测试人员可以专注于测试和游戏本身——因为AI负责处理“文书工作”,测试人员在发现问题时无需中断流程,目标是将平均报告时间“从分钟级缩短到秒级”。

请注意,目前AI功能仍处于Beta测试阶段,仅限特定访问。

AI游戏调试Unreal示例项目

我们提供了一个TPS游戏的应用示例,用于展示雷蛇QA智能助手的使用方法。
该示例同时提供Unreal项目和已编译版本。

使用前提:

  1. 持有有效企业版计划的雷蛇账户
  2. 可访问雷蛇QA智能助手网页端
  3. 在主机PC上运行雷蛇AI服务- 点击下载 - 查看安装说明
  4. 在主机PC上安装并运行雷蛇Chroma幻彩应用

按照以下步骤测试Unreal示例项目:

  • 步骤 1. 点此下载游戏设计文档PDF
  • 步骤 2. 在雷蛇QA智能助手网页端中设置项目,包括游戏工作室、游戏标题、类型、游戏设计文档等。
  • 步骤 3. 下载并复制应用提供的service.conf到以下路径(可替换已有文件)C:\Program Files (x86)\RazerAIService\RazerAIService\
  • 步骤 4. 下载示例项目 并运行示例场景。先完整游玩一遍关卡,让雷蛇QA智能助手模型完成初始化。
  • 步骤 5. 再次运行示例场景,验证雷蛇QA智能助手的缺陷追踪、视频捕获以及Jira集成功能。 该示例场景是一个简单的TPS场景,包含若干TPS游戏开发中常见的问题。

下载Unreal示例项目

点此下载最新版Unreal示例项目

使用方法

  1. 确保已安装Microsoft Visual C++。UE 5.5.4推荐编译器版本为v14.38-17.8。未在Clang上测试。
  2. 确保已安装并运行雷蛇Chroma幻彩应用
  3. 登录雷蛇QA智能助手。
  4. 使用 Content/GDD/Unreal Shooter GDD.pdf 创建游戏项目,并确保项目的 Game Title 设置为 RazerUnrealQADemo
  5. 前往设置页面下载并安装雷蛇AI服务(Razer AI Service)。
  6. 下载并替换service配置文件。
  7. 打开QACompanionDemo.uproject
  8. 点击运行。
  9. 你应该在左上角看到InitSDK_SUCCESS以及其他提示信息
  10. 游玩关卡,你应能看到更多SUCCESS提示。雷蛇QA智能助手的网页仪表盘会显示所有已检测到的缺陷。

雷蛇QA智能助手-事件

以下是示例项目中使用的蓝图列表,以及这些蓝图触发的事件说明。
事件通过SetEventName函数发送。
事件使用加粗表示,变量使用{}包裹。

BP_ThirdPersonGameMode

  • 在开始时调用 InitSDK
  • 初始化成功后发送 GameSessionStart
    由于示例项目只有一个关卡,因此游戏模式中 InitSDKGameSessionStart 在构造函数中触发
    同时确保 GameSessionStart 在其他事件(例如 PlayerSpawned;Player;{PlayerId};Room;{RoomId})之前触发

BP_ThirdPersonCharacter

  • 玩家生成时发送 PlayerSpawned;Player;{PlayerId};Room;{RoomId}。示例关卡被划分为 4 个房间,因此使用 RoomId(其他游戏中可能不适用)
  • 玩家生成时也发送 LevelStarted;Level;{LevelId},因为示例中玩家只有一条命,死亡后关卡会重置
  • 每秒发送 CurrentLocation;Player;{PlayerId};Location;{Location}
  • 玩家开火时发送FiredWeapon;Player;{PlayerId};Weapon;{WeaponId};CurrentAmmo;{Ammo}。示例中玩家只有一个弹匣,显示格式为(弹匣剩余)/(最大弹药)
  • 玩家受伤时发送ReceivedDamage;Player;{PlayerId};Damage;{Damage};CurrentHealth;{Health}
  • 玩家生命耗尽时发送OutOfHealth;Player;{PlayerId}
  • 玩家时间耗尽时发送OutOfTime;Player;{PlayerId}。示例中玩家完成关卡有时间限制。
  • 玩家移动状态变化时发送IsMoving;Player;{PlayerId};MovingState;{MovingState}

BP_AI_002

  • 敌人生成时发送BotSpawned;Player;{PlayerId};Room;{RoomId}
  • 敌人受伤时发送ReceivedDamage;Player;{PlayerId};Damage;{Damage};CurrentHealth;{Health} 当前存在一个问题:敌人死亡后仍然会继续接收伤害,因此如果玩家攻击已死亡敌人,雷蛇QA智能助手将触发一个缺陷报告
  • 敌人死亡时发送BotDead;Player;{PlayerId};CurrentRoundTimer;{TimeLeft}

BP_RoomCheck

  • 玩家进入房间时发送EnteredLocation;Player;{PlayerId};Room;{Room}
  • 玩家离开房间时发送LeftLocation;Player;{PlayerId};Room;{Room}

BP_Healthpickup

  • 玩家拾取生命时发送PickUpHealth;Player;{PlayerId};CurrentHealth;{Health}

BP_AmmoPickup

  • 玩家拾取弹药时发送PickUpAmmo;Player;{PlayerId};CurrentAmmo;{Ammo}

BP_Enggamepickup and WP_Pause

  • 玩家通过拾取结束物品或通过暂停菜单退出时发送GameSessionEnd;Player;{PlayerId}
    触发流程为:先发送事件 → 延迟 → 调用 UninitSDK → 退出游戏
    如果 SetEventNameUninitSDK 之间没有延迟,则事件不会被发送

事件表

以下事件是仅针对本示例定义,在类似游戏中不一定适用。

EventPurposeFound in Blueprint
GameSessionStart游戏会话开始。应在任何其他事件之前发送。会重置部分缓存状态。BP_ThirdPersonGameMode
PlayerSpawned;Player;{PlayerId};Room;{RoomId}表示玩家生成。重置 {PlayerId} 的缓存状态。BP_ThirdPersonCharacter
BotSpawned;Player;{PlayerId};Room;{RoomId}表示敌人生成。重置 {PlayerId} 的缓存状态。BP_AI_002
LevelStarted;Level;{LevelId}表示关卡开始。重置 {LevelId} 的缓存状态。BP_ThirdPersonCharacter
CurrentLocation;Player;{PlayerId};Location;{Location}更新 {PlayerId} 的位置(格式为UE的 “X= Y= Z=”)。BP_ThirdPersonCharacter
FiredWeapon;Player;{PlayerId};Weapon;{WeaponId};CurrentAmmo;{Ammo}更新 {PlayerId} 当前武器 {WeaponId} 的弹药数。BP_ThirdPersonCharacter
ReceivedDamage;Player;{PlayerId};Damage;{Damage};CurrentHealth;{Health}更新 {PlayerId} 的生命值为 {Health}BP_ThirdPersonCharacter, BP_AI_002
OutOfHealth;Player;{PlayerId}表示 {PlayerId} 已死亡。BP_ThirdPersonCharacter
OutOfTime;Player;{PlayerId}表示 {PlayerId} 时间耗尽,关卡失败。BP_ThirdPersonCharacter
IsMoving;Player;{PlayerId};MovingState;{MovingState}更新 {PlayerId} 是否在移动。BP_ThirdPersonCharacter
BotDead;Player;{PlayerId};CurrentRoundTimer;{TimeLeft}表示敌人 {PlayerId} 已死亡,并更新剩余时间 {TimeLeft}BP_AI_002
EnteredLocation;Player;{PlayerId};Room;{Room}更新 {PlayerId} 当前所在房间 {Room}BP_RoomCheck
LeftLocation;Player;{PlayerId};Room;{Room}清除 {PlayerId} 的房间位置信息BP_RoomCheck
PickUpHealth;Player;{PlayerId};CurrentHealth;{Health}更新 {PlayerId} 的生命值为 {Health}BP_Healthpickup
PickUpAmmo;Player;{PlayerId};CurrentAmmo;{Ammo}更新 {PlayerId} 的弹药数为 {Ammo}BP_AmmoPickup
GameSessionEnd;Player;{PlayerId}游戏会话结束。BP_Enggamepickup, WP_Pause

使用的资源包

  1. Animation Starter Pack(动画入门包)
  2. FPS Weapon Bundle(FPS 武器包)
  3. Modular SciFi Season 1 Starter Bundle(模块化科幻第一季入门包)

https://www.wyvrn.com
https://www.fab.com/listings/98ff449d-79db-4f54-9303-75486c4fb9d9
https://www.fab.com/listings/8aeb9c48-b404-4dcd-9e56-1d0ecedba7f5
https://www.fab.com/listings/86913335-3c75-42bf-8404-54fe9d9d7396