使用 AWS Game Analytics Pipeline、Amazon Quick 和 Kiro agentic IDE 实现游戏完整性与作弊检测
Game integrity and cheat detection using AWS Game Analytics Pipeline, Amazon Quick, and Kiro agentic IDE
在线游戏中的作弊行为会侵蚀玩家信任、损害竞技公平性,并可能导致玩家流失。游戏工作室需要一个可扩展的分析管道来检测异常玩家行为。在本文中,我们将展示如何使用AWS 上的游戏分析管道指南、Amazon Athena,和Amazon Quick构建一个游戏完整性概念验证(POC)。通过逐步演示每个阶段所使用的 Kiro 提示,您将学习如何自行搭建该系统。
操作概览
本指南在四个阶段中为游戏分析管道扩展了作弊检测功能:
- 数据收集 – 使用修改后的 handler.py 为游戏事件添加完整性指标
- 数据转换 – 创建 Athena SQL 视图以展平、分析和标记数据
- 数据传输 – 将 Athena 数据集导入 Amazon Quick Sight
- 数据分析 – 构建由 机器学习(ML)驱动的仪表板,以揭示作弊模式
您将构建一个由 ML 驱动的仪表板,自动检测跨平台的作弊峰值。
下图展示了从事件生成到分析的四个阶段流程。游戏事件从 handler.py 流入 Amazon Simple Storage Service(Amazon S3),由 Athena SQL 视图进行转换(展平、聚合和 Z 分数分析),并在 Quick Sight 中以 ML 洞察和仪表板进行可视化。
图 1:架构图
前提条件
要完成本操作指南,您需要以下内容:
- 已部署游戏分析管道的 AWS 账户
- 已配置为查询该管道的 S3 存储桶的 Amazon Athena
- Amazon Quick Sight。有关更多信息,请参阅Amazon Quick Sight 用户指南
- 用于运行数据生成器的 Python 3.9 或更高版本
- Kiro(可选,但本指南中会用到)
- 熟悉 SQL 以及 AWS 管理控制台 的基本操作会有所帮助,但并非必需
本操作指南使用 Amazon Kinesis 和 Amazon S3 进行数据摄入和存储,使用 Athena 进行 SQL 分析,使用 Quick Sight 进行可视化和机器学习。
数据收集
游戏分析管道包含一个 handler.py 脚本(可在 GitHub 仓库 中获取),用于生成模拟游戏事件,例如 logins、purchases 和 match results。默认情况下,match_end 事件仅包含基本游戏字段:match ID, map, result, experience gained, 和 spell used。要检测作弊行为,请添加能够捕获可疑行为的指标。
添加完整性指标
部署 Game Analytics Pipeline 后,在 Kiro 中打开其目录:
- 在 文件 下,选择 打开文件夹。
- 选择已克隆的
guidance-for-game-analytics-pipeline-on-aws仓库。 - 导航到
source/services/events/handler.py。这是生成模拟游戏事件的脚本。
使用以下 Kiro 提示词:
Kiro 提示词:我正在使用 Game Analytics Pipeline 构建一个游戏完整性/反作弊检测的概念验证。handler.py 生成了比赛事件,但缺少我检测作弊所需的指标。我想在 match_end 事件中添加开火频率违规、最大加速度、反应时间、后坐力模式以及其他完整性指标。同时添加 player_id 字段和 platform 字段(从 PC、Xbox 360、iOS 中随机选取),以便进行按玩家和按平台的分析。将 match_end 事件的权重从 0.03 提高到 0.30,以生成更多比赛数据。
Kiro 修改了 match_end 事件,新增了覆盖四种作弊类别的完整性指标。瞄准辅助(自瞄)检测使用 recoil_score,、shots_per_sec 和 avg_reaction_ms。移动修改检测依赖 max_accel,、slope_violations 和 air_control_ratio。透视指标包括 shots_no_los 和 shots_through_walls。射速漏洞检测追踪 fire_rate_violations、ammo_mismatch 和 reload_cancels。
Kiro 在每次运行时可能会生成略有不同的变量名(例如,fire_rate_violations 或 fireRateViolations)。这是预期行为。请使用 Kiro 生成的任何名称,并在后续各阶段中保持一致。具体名称的重要性不如在 handler、SQL 视图和 Quick Sight 数据集中保持对齐。
为机器学习分散时间戳
机器学习洞察需要随时间分布的历史数据来检测模式。使用以下提示词:
Kiro 提示词:match_end 事件都集中在非常短的时间窗口内。数据点不足以让 ML insights 检测到模式。请将事件时间戳随机分布在过去的 60 天内,而不是使用当前时间,并以每批 100 个事件的方式生成。
Kiro 修改了 generate_event(),将每个事件分配过去 60 天内的随机时间戳,而不是使用当前时间。这为 ML insights 提供了足够的历史数据来构建异常模型。
注入异常尖峰
为了验证 ML insights 能够检测到作弊模式,数据需要包含明显的异常。向 Kiro 发送提示词:
Kiro 提示词:我想在数据中添加异常尖峰,以便 ML 洞察能够检测到明确的异常模式。在不同的日期范围内创建三个不同的尖峰窗口,每个窗口模拟一种不同的作弊类型(例如,自瞄、加速外挂、射速漏洞利用),其指标相比正常基线有显著升高。
Kiro 在 handler.py 中添加了平台特定的异常尖峰窗口,由三个不同的时间簇组成,每个簇具有不同的作弊特征。例如,一个窗口可能模拟具有非人类精准度的自瞄浪潮,另一个可能模拟具有较高射速违规率的改装控制器,第三个可能模拟具有极端加速度值的加速外挂。
Kiro 生成的具体日期范围、平台和指标值可能因每次运行而异。重要的是,你拥有三个明显分离的峰值窗口,其指标远超正常基线。这使 ML insights 能够在正常模式和异常模式之间实现清晰分离。完成这些更改后,运行 handler.py 将丰富后的事件发送到管道中。
数据转换
Amazon S3 中的原始事件数据将游戏指标存储在嵌套的 JSON event_data 字段中。为简化重复分析并为 Quick Sight 提供干净的数据集,请创建用于展平和分析数据的视图。
- 输入 – Amazon S3 中带有嵌套
event_data字段的原始 JSON 事件 - 输出 – 七个 Athena 视图,提供展平的指标、Z 分数异常标记和聚合摘要
- 为什么 – 视图提供了可复用性、正确的类型转换,以及用于 Quick Sight 导入的干净接口
要展平嵌套的事件数据,在 Kiro 中,输入提示:
Kiro 提示:raw_events 表中的 event_data 是一个嵌套的 JSON 对象。我需要能够查询 fire_rate_violations、反应时间等各个字段。请给我可以在 Athena 查询编辑器中运行的原始 SQL。不要修改任何项目文件。
Kiro 创建了一个 gaming_events_flattened视图,使用json_extract_scalar从嵌套 JSON 中提取每个指标,并进行了正确的类型转换。它还添加了派生列:reaction_time_category(快、中或慢)、recoil_control_rating(优秀、良好、一般或差)以及total_violations(合并的射速和坡度违规)。
修复时间戳
向 Kiro 输入提示:
Kiro 提示词:event_timestamp 采用 Unix 纪元格式。ML 洞察需要正确的 datetime 格式才能正常工作。请给我原始 SQL,以便在 Athena 查询编辑器中运行。不要修改任何项目文件。
Kiro 创建了一个 gaming_events_flattened_with_time 视图,将 Unix 时间戳转换为正确的 datetime 列,并提取 platform 字段用于分组。
构建异常检测
向 Kiro 询问最有效的方法:
Kiro 提示词:表示数据以发现异常的最有效方法有哪些?请给我原始 SQL,以便在 Athena 查询编辑器中运行。不要修改任何项目文件。
Kiro 推荐了 Z 分数方法,并创建了 anomalous_matches 视图,该视图计算每位玩家的指标偏离总体均值多少个标准差。比赛在四项指标 violations、reaction time、recoil score 和 shots per second 上被标记为 CRITICAL(|z| > 3)、SUSPICIOUS(|z| > 2)或 NORMAL。
创建其余视图
提示 Kiro 获取额外的分析视图:
Kiro 提示词:既然我们已经有了包含完整性指标的游戏扁平化数据,哪些 Athena 视图对于分析作弊检测模式和玩家行为最有用?给我可以在 Athena 查询编辑器中运行的原始 SQL。不要修改任何项目文件。
Kiro 推荐并创建了四个额外的视图。daily_platform_metrics 视图按平台提供每日汇总,直接为 ML 洞察的异常检测提供数据。player_performance_summary 视图汇总每位玩家的统计数据和违规总数。map_performance_analysis 视图揭示每张地图的违规模式和胜率。最后,event_type_distribution 提供数据组成概览。在 Athena 查询编辑器中运行 Kiro 生成的 SQL 来创建每个视图。
数据传输
在 Athena 视图就绪后,将它们连接到 Quick Sight:
- 在 Amazon Quick 控制台 上,将 Athena 添加为新的数据源。
- 选择包含您视图的数据库,并导入四个数据集:
anomalous_matches、gaming_events_flattened_with_time、daily_platform_metrics和player_performance_summary。 - 创建一个新的 Quick Sight 分析,基于这些数据集构建可视化。
Quick Sight SPICE 会摄取 Athena 的查询结果,以便进行快速、交互式的数据探索,而无需在每次交互时重新查询 Amazon S3。
数据分析
数据集加载完成后,使用 Kiro 来指导可视化策略。
ML 洞察:按平台进行异常检测
向 Kiro 输入提示:
Kiro 提示词:我想使用 ML 洞察来检测各平台随时间变化的违规总数中的异常。
Kiro 建议使用 daily_platform_metrics 数据集,以 event_date 作为时间维度,platform 作为类别,sum_total_violations 作为指标。ML 洞察自动检测到了这三个注入的尖峰窗口,无需任何手动阈值配置。下图展示了这些结果。
图 2:ML 洞察
我们成功检测到了 PC 异常尖峰(第 10–12 天),准确率分数从约 0.2 的基线跃升至接近 1.0。Xbox 360 和 iOS 的尖峰也分别在各自的时间窗口内被检测到。
散点图
向 Kiro 提示:
Kiro 提示:我想直观地查看各平台上后坐力分数与射速违规之间的关系,以确认 Xbox 360 改装手柄的尖峰。
Kiro 建议使用散点图,X 轴为 fire_rate_violations,Y 轴为 recoil_score,按异常标志着色,按 total_violations 调整大小。该散点图在视觉上将有正常玩家(聚集在低开火频率违规和中等后坐力分数区域)与异常值区分开来。后坐力分数异常高且开火频率违规过多的玩家是改装控制器硬件的典型特征。以下散点图显示了多达 2,500 个数据点,表明正常玩家聚集在中心位置,以及具有高 Z 分数的重要异常值,按异常标志标签分隔。
图 3:后坐力分数与开火频率违规散点图
违规表
提示 Kiro:
Kiro 提示: 机器学习洞察显示全平台范围的尖峰,但我需要确定哪些具体玩家在作弊。
Kiro 建议了一个按 total_violations 降序排列的玩家表格,来自 anomalous_matches 视图,其中被标记为严重违规的玩家排在最前面。Kiro 解释说,虽然 ML 洞察可以检测跨平台随时间出现的异常峰值,但违规表格是唯一能深入查看单个作弊者的方式。因此,你可以展示负责被标记行为的具体玩家 ID。
下表按最高 total_violations 对玩家进行排名,由 anomalous_matches 视图生成。虽然 ML 洞察可以检测平台范围内随时间出现的峰值,但违规表格是唯一能识别单个作弊者的方式。它展示了具体的玩家 ID 及其严重异常标记以供查看。
| player_id | platform | total_violations |
|---|---|---|
| 606e804c-ea00-4320-95ad-8e53820f3d28 | iOS | 50 |
| ad97be51-ad0f-4ab5-9c58-c692bd2c53e9 | iOS | 46 |
| 626bc429-da56-4638-a2e7-7d110f051483 | xbox_360 | 42 |
| c289504d-7d06-4667-afe1-4e825e547ee0 | iOS | 36 |
Narratives
向 Kiro 提示:
Kiro 提示:我想要一份面向利益相关者的数据高层摘要。
Kiro 建议添加 Quick Sight 叙述可视化,该功能可生成自然语言摘要,包括各平台的违规总数、异常率最高的平台以及关键统计亮点。Narratives 会随底层数据的变化而动态更新。
例如,一条叙述可能会显示:“PC 平台在第 10 至 12 天的违规率为正常水平的 6 倍,主要由 fire_rate_violations 驱动。” 这将使安全工程师无需手动解读图表即可获得即时、可操作的上下文信息。
清理
为避免持续计费:
- 删除 Quick Sight 分析和数据集。
- 删除七个 Athena 视图(
gaming_events_flattened、gaming_events_flattened_with_time、anomalous_matches、daily_platform_metrics, player_performance_summary、map_performance_analysis和event_type_distribution)。 - 如果您已部署本指南中的管道,请按照清理说明删除该堆栈。
结论
这一概念验证扩展了 Game Analytics Pipeline,加入了自定义完整性指标、Athena 中的 Z 分数异常检测,以及 Amazon Quick Sight 中由机器学习驱动的仪表盘。Kiro 加速了每个阶段:Python 数据生成器的修改、复杂 SQL 视图的编写,以及可视化策略建议。
要开始使用,请访问 Game Analytics Pipeline 解决方案页面 和 GitHub 仓库。如果您有任何问题或建议,请在本帖下留言。
来源:AWS for Games · 游戏技术与运营 · aws.amazon.com


