反作弊接口

了解在EOS产品中接入反作弊功能时涉及的先决条件、网络架构、平台组件和其他要素。

Preview Only

反作弊接口 要求SDK为1.12或更高版本。反作弊接口客户端接口支持Windows、Mac和Linux平台,并且需要64位操作系统。

你可以使用 反作弊接口(Anti-Cheat interfaces) (也称为 轻松反作弊(Easy Anti-Cheat))来帮助减少在线多玩家游戏中的作弊现象。该提供了多种工具,可以在反作弊保护模式下启动游戏客户端,接口接受游戏服务器或另一个游戏客户端的验证。这些接口不是数字权利保护(DRM)或代码混淆工具,不可以用于纯在线游戏。

反作弊接口提供两种类型的保护:

  • 作弊预防(Cheat prevention),主动防止常见的作弊技术,例如使用直接方法来读取和写入游戏进程内存。

  • 作弊检测(Cheat detection),辨识使用更具针对性的方法来操控游戏的账号,以便随后对其进行制裁。

要使用反作弊接口,必须:

  1. 审核和遵守开发先决条件

  2. 确定你的网络架构客户端政策类型。

  3. 配置你的客户端模块文件完整性工具反作弊启动加载器可执行文件。

  4. 仅限Windows)配置Windows服务安装程序

  5. 将反作弊接口与你的游戏代码集成:

    1. 使用连接接口确定用户身份。

    2. 注册客户端-服务器点对点模式的回调。

    3. 设置受保护的会话通知

  6. 使用集成核对清单来确认反作弊接口的运行情况。

开发先决条件

要使唤反作弊服务生效,必须以遵循最佳安全实践的坚实游戏为基础,并在游戏出现问题时主动解决。

游戏架构

我们强烈建议使用专用的服务器对尽可能多的游戏状态进行授权。

例如,作弊可以让玩家飞翔、传送或极速移动,通过向游戏服务器授予玩家位置和移动方面的的权限,这种作弊现象就可以在游戏架构级别进行阻止。

游戏弱点

游戏的逻辑错误、漏洞或边缘状况经常被玩家发现和利用。但是,反作弊功能会将这种现象视为游戏代码按照编写方式运行,无法解决这些问题。作为游戏开发人员,在持续开发和发现新弱点的过程中必须解决这些问题。

游戏级别反作弊

你自己的开发团队可以使用他们掌握的游戏特定详细信息,在游戏级别防止和检测作弊。若游戏被作弊功能贩卖者盯上,如果组建一个小型开发团队来解决游戏问题和完善反作弊服务,将大有裨益。

玩家举报

实施举报接口是一项非常关键的措施,当玩家认为有人在游戏会话中作弊时,可以举报。这样可以为每个游戏中反作弊保护的有效性提供有价值的背景和反馈。

玩家进度管理

反作弊服务无法有效保护单机或单人玩家场景,因为进度同步到游戏服务器时存在延迟。

游戏网络架构

反作弊接口支持适用于各种游戏网络架构的不同模式。反作弊客户端接口支持所有这些游戏网络,而反作弊服务器接口专门针对专用的服务器(客户端-服务器模式)。

专用的服务器(客户端-服务器模式)

在权威游戏服务器上使用此模式,并同时实施反作弊客户端和服务器接口。

客户端-服务器模式的通讯流

单个游戏服务器的操作人员可以在他们的服务器中操控网络连接或通过其他方式来主动禁用或断开反作弊服务。这对于支持社区操作的服务器的游戏而言是公认的风险。为了降低这种风险,用户接口可以区分"官方"和"非官方"游戏服务器。

你必须将客户端的受保护会话与游戏服务器调用进行匹配,以便客户端在加入游戏并触发游戏服务器调用 EOS_AntiCheatServer_RegisterClient 之前,调用 EOS_AntiCheatClient_BeginSession

点对点模型(点对点模式)

此模式的使用对象为:每个游戏客户端都与所有其他游戏客户端交换网络消息但没有任何一个游戏客户端对游戏会话具有完整权限的全互联布局。

点对点模式的通讯流

在此模式中,不使用反作弊服务器接口。而是让每个玩家使用反作弊客户端接口来验证激活了反作弊保护的其他玩家。

针对参与了本地用户所在游戏会话的每个对等端,调用 EOS_AntiCheatClient_RegisterPeer函数。

监听服务器

当单个玩家充当游戏会话的权威游戏主机时,你必须使用点对点或客户端-服务器模式。

监听服务器的通信流程

对于点对点模式:

  • 授权游戏主机客户端应该通过将每个客户端注册为一个对等端并相应地交换数据,以此验证游戏会话中的每个玩家。

    • 如果触发了某个对等端的删除操作所需的回调,权威游戏主机应该从游戏会话中踢掉这个玩家。

  • 非权威游戏客户端只能通过将游戏主机客户端注册为对等端并适当交换数据来验证该客户端。

    • 如果触发了游戏主机的删除操作所需的回调,非权威客户端应该断开连接并显示相应的错误消息。

对于客户端-服务器模式:

  • 这种方法更简单,但权威游戏主机客户端具有权限更高的角色,更容易被滥用。

  • 实施方法与专用的服务器相同,不同之处在于必须在针对 EOS_AntiCheatServer_BeginSession的调用中指定登录的本地玩家。

客户端凭证和策略配置

在为反作弊接口配置你的客户端凭证时,需要考虑你的网络架构和用例。

对于反作弊客户端接口,应该使用预定义的_GameClient_策略类型。应该始终对游戏客户端启用 用户必需(User Required) 标记。

对于反作弊服务器接口和仅使用受信任的官方服务器的游戏,应该使用预定义的_TrustedServer_策略类型并保留凭证密码。

可能需要使用其他预定义策略类型或自定义策略,但需要慎重考虑这种选择。

以下策略操作可供使用:

authenticateForLocalUser 必需 允许客户端凭证持有者使用客户端-服务器或点对点反作弊客户端模式在反作弊后端对自身进行身份验证。

authenticateForAnyUser 仅当客户端使用客户端-服务器模式托管监听服务器时使用此策略操作。 允许客户端凭证持有者使用反作弊服务器接口对其他用户进行身份验证。

sendTrustedGamePlayDataForAnyUser 仅针对受信任的官方专用服务器使用此策略操作。绝不对游戏客户端或社区托管的游戏服务器使用或发布。 允许客户端凭证持有者提交任何用户的反作弊Gameplay数据,并且应该仅针对你相信不会被篡改的受信任官方专用服务器使用。

平台组件

使用反作弊接口时,需要将一些二进制文件分发到游戏客户端,这些文件包含在EOS SDK包中。在EOS SDK压缩文件中,浏览到 SDK > 工具(Tools) > EOS_AntiCheatToolsDist 子目录中的文件仅能作为游戏客户端的一部分发布给玩家。其他文件仅用于开发,不能发布。每次更新到新的EOS SDK版本时,你必须更新使用的平台组件文件。

Windows

反作弊功能仅支持64位Windows操作系统。如果操作系统安装了64位支持,也可以支持32位游戏。

组件

文件名

说明

服务安装程序

EasyAntiCheat_EOS_Setup.exe

必需(Required)) 用于安装、修复或卸载反作弊Windows服务

反作弊启动加载器

start_protected_game.exe

准备反作弊并使用可用的常规反作弊客户端保护来启动游戏进程

服务

EasyAntiCheat_EOS.exe

Windows服务可执行文件,用于允许反作弊服务初始化其他组件

Windows 'dist' 子目录结构

<GameRoot>\start_protected_game.exe
<GameRoot>\EasyAntiCheat\EasyAntiCheat_EOS_Setup.exe
<GameRoot>\EasyAntiCheat\Settings.json
<GameRoot>\EasyAntiCheat\SplashScreen.png
<GameRoot>\EasyAntiCheat\Localization

Windows服务安装程序

对于Windows,必须配置反作弊系统服务才能通过你的游戏进行安装和卸载。这要求Windows用户在安装游戏时具有管理员权限,但在稍后启动游戏时不需要管理员权限。当受到反作弊服务保护的游戏启动时,反作弊启动加载器将会自动启动Windows服务。当游戏退出时,Windows服务自动停止。

配置
  1. 从开发人员门户获取你的ProductId

  2. 对你的安装程序进行配置,以运行下列命令:

    • EasyAntiCheat_EOS_Setup.exe install <Your ProductId>

    • EasyAntiCheat_EOS_Setup.exe uninstall <Your ProductId>

  3. 如果成功,此命令的进程退出代码将为0。进程退出代码非零意味着失败。

特定于商店的先决条件
Epic Games商店

请参阅提供给你的Epic Games商店。

Steam

请参阅Steamworks安装脚本文档。通常情况下,你定义"运行进程"块来触发服务安装操作,定义"在卸载时运行进程"块来触发服务卸载操作。

Steam安装脚本功能在Windows之外的平台上可能不可用。

Mac

组件

文件名

说明

反作弊启动加载器

start_protected_game

准备反作弊并使用可用的常规反作弊客户端保护来启动游戏进程

Mac **dist** 子目录结构

<GameRoot>\start_protected_game
<GameRoot>\EasyAntiCheat\Settings.json
<GameRoot>\EasyAntiCheat\SplashScreen.png
<GameRoot>\EasyAntiCheat\Localization

Linux

组件

文件名

说明

反作弊启动加载器

start_protected_game

准备反作弊并使用可用的常规反作弊客户端保护来启动游戏进程

Linux **dist** 子目录结构

<GameRoot>\start_protected_game
<GameRoot>\EasyAntiCheat\Settings.json
<GameRoot>\EasyAntiCheat\SplashScreen.png
<GameRoot>\EasyAntiCheat\Localization

Linux的Wine/Proton支持

借助Wine或Proton兼容层,你可以在Linux上运行Windows游戏,并且反作弊客户端保护能够支持这种配置。如需要启用这类支持,你必须使用SDK 1.14版或更高版本,并激活Linux平台的客户端模块

使用Wine或Proton运行游戏的玩家会用到Linux客户端模块,所以除了Windows,你还应该定期测试和激活Linux的客户端的模块更新。

主机支持

主机平台通常依赖硬件安全功能来防止任意代码执行,这是大部分作弊类型的先决条件。由于这些特定于平台的安全功能涵盖了大部分需求,因此未针对主机提供反作弊客户端保护。

要在电脑和主机用户之间支持跨平台运行,必须确定用户在加入受保护的游戏会话时是否正在使用不需要客户端保护的平台。此检查不得信赖玩家的游戏客户端未被篡改的声明。仅仅让游戏客户端发送消息来表明所使用的平台是不够的,因为恶意用户可以操纵数值来避免执行反作弊。

平台各不相同,但你可以利用游戏客户端生成的平台票证或令牌来执行可靠的检查,游戏服务器或后端将进行独立验证。当这些检查验证用户在不需要反作弊客户端保护的主机平台上时,可以使用 EOS_ACCCT_UnprotectedClient 标记将客户端注册到反作弊服务,让客户端不再需要执行反作弊客户端检查。这让检查仍然可以在服务器端反作弊Gameplay数据收集中引用。

关于ID令牌的更多详情,请参阅EOS ID令牌。关于Epic账户令牌的详情,请参阅EAS ID令牌