我正在实现一个基于 cocos2d-x 的游戏应用程序。为了从技术上防止作弊,其中一个思路是使用 HTTPS 进行所有客户端-服务器通信,这使得获取数据格式/游戏逻辑和发送修改请求进行作弊变得困难。(我知道“预防”实际上是不可能的,但为了增加游戏作弊的成本,没关系:)。我的问题是,
- 在 Cocos2d-x 中,如何进行 HTTPS 请求?可能的?
- 在更一般的情况下,从技术上讲,如何减少此类游戏黑客攻击?持有什么策略?
我正在实现一个基于 cocos2d-x 的游戏应用程序。为了从技术上防止作弊,其中一个思路是使用 HTTPS 进行所有客户端-服务器通信,这使得获取数据格式/游戏逻辑和发送修改请求进行作弊变得困难。(我知道“预防”实际上是不可能的,但为了增加游戏作弊的成本,没关系:)。我的问题是,
对于本机跨平台 C++ 网络,您可以考虑使用 Boost C++ 库。Boost.Asio 是用于网络的。
Boost.Asio 链接: http: //www.boost.org/doc/libs/1_53_0/doc/html/boost_asio.html
Boost.Asio 教程链接: http: //www.boost.org/doc/libs/1_53_0/doc/html/boost_asio/tutorial.html
虽然没有官方支持(仅由于缺乏对 iOS 和 Android 的回归测试),但 Boost 在 iOS 和 Android(可能还有其他基于 C++ 的移动平台)上运行没有任何问题。
为了防止作弊,您通常依赖外部资源(可以是您的游戏服务器),例如,如果您的游戏依赖于一天中的时间,您可能会从外部服务器获取时间。您可以使用加密库在客户端和服务器端进行数据传输。
通过使用 curl 库,您可以建立 https 连接。如果您想从技术上保护您的游戏,请使用您自己的强大加密技术。
谢谢
您好,这是我们一直面临的问题。如果作弊仅限于作弊者的实例,则问题是学术性的,应该在您的业余时间进行研究。
另一方面,当您的收入受到影响或作弊者的行为影响其他玩家并降低游戏体验时,您应该努力测试游戏状态是否存在不一致,保护客户端/服务器交易并以非常微妙的方式处理作弊避免完全阻止作弊者的兴趣。
C++ https 实现可用于 curl 和 boost。
关于游戏数据,测试不一致的最简单方法是分数。您可以添加一些指标以避免污染您的排行榜。如果您可以在服务器上重新计算分数并且如果发现不一致,您可以根据分数的组成部分(在游戏中花费的时间、上电次数和收到的分数乘数...)添加特殊校验和。
您还可以获取游戏状态的瞬间和一些命令,对其进行编码并在服务器上重播序列以检查不一致之处。随心所欲地与作弊者打交道。
在服务器上玩游戏时,让服务器管理游戏状态,并且不允许任何会影响玩家的客户端游戏状态更改。检查输入一致性等...
使用微交易时,每个微交易都应在完全提交到玩家帐户之前与供应商服务器进行验证。
即使 Valve 的这些论文1、2提到了 fps 游戏,它们也应该为您提供一些关于如何处理状态不一致(由通信延迟引入)的指导。它应该有助于避免假阳性并破坏非作弊者的体验。