反作弊接口

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

阅读时间9分钟

反作弊接口要求EOS SDK为1.12或更高版本。

接口有两个:反作弊客户端接口和反作弊服务器接口。

  • 反作弊客户端接口仅支持Windows、macOS、ChromeOS和Linux 64位操作系统。不支持虚拟机(VM)。
  • 反作弊服务器接口支持所有平台,包括VM。

(反作弊接口也称为“轻松反作弊”(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必需 )用于安装、修复或卸载反作弊Windows服务
反作弊启动加载器start_protected_game.exe准备反作弊并使用可用的常规反作弊客户端保护来启动游戏进程
服务EasyAntiCheat_EOS.exeWindows服务可执行文件,用于允许反作弊服务初始化其他组件

Windows 'dist' 子目录结构

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.app准备反作弊并使用可用的常规反作弊客户端保护来启动游戏进程

Mac dist 子目录结构

Linux

组件文件名说明
反作弊启动加载器start_protected_game准备反作弊并使用可用的常规反作弊客户端保护来启动游戏进程

Linux dist 子目录结构

Linux Wine/Proton支持

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

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

主机支持

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

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

EOS Connect接口提供了EOS ID令牌,其中包括一个设备类型字段,可用来安全验证玩家是否在常见主机上运行游戏。至于其他平台,你必须查阅平台供应商自己的文档,并找到一种方法来实现安全验证(利用游戏客户端生成的平台票证或令牌)。游戏服务器、后端或同行玩家将会进行独立验证。当这些检查验证用户在不需要反作弊客户端保护的主机平台上时,可以使用 EOS_ACCCT_UnprotectedClient 标记将客户端注册到反作弊服务,让客户端不再需要执行反作弊客户端检查。这样他们仍可参与受保护PC玩家的点对点模式会话,或在服务器端反作弊游戏数据收集期间被引用。

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