有没有一种方法可以防止键盘宏在程序上运行?

4

我开发了一个在线游戏,可悲的是只有少数人使用录制键盘宏的程序(如Razer Synapse)来自动化游戏过程的一部分。

这是我不想允许的事情。

那么我的问题是,是否有一种方法在C++中确定是否正在使用宏来执行输入或确定最近的按键触发是由人类输入还是程序输入触发的?

我的第一个猜测是否定的...但我可能是错的。


3
你能猜测到人类的最高打字速度,其他的则由机器完成。而黑客则非常聪明且善于适应。 - user2249683
@DieterLücking 是的,但在这种情况下...他们正在使用记录用户输入的宏,以相同的速度记录...我想我可以跟踪每个玩家的输入时间...但是玩家数量和他们使用此类输入的次数...将会太多... - Ricky
1
一个想法可能是将模糊不可靠的输入(例如:武器的一些随机故障)作为游戏的一部分(但必须令人愉悦)。 - user2249683
这些宏通常有多长(需要多少按键)? - Daniel Jour
1
像暴雪这样的大公司仍然每天都需要应对这个问题,这是有原因的。客户端上的任何内容都不在您的控制之内,您放置在客户端中的任何防御机制都可以从该客户端中删除。您放置在服务器中的任何机制都可能会被规避。您可以让玩家更难作弊,但永远不可能做到不可作弊。 - Hatted Rooster
显示剩余3条评论
1个回答

3

如果您无法控制的客户端,无法阻止自动化。算法研究已有数百年历史,计算机最初的目的就是自动化设备。无论您提出什么新颖的想法,都很容易被打败,因为总会有人接受挑战。这并不意味着您应该避免解决方案,以确保机器人没有获得显着优势,例如上述评论中建议的输入速度,但如果您希望完全停止自动化,则正在攀登一个永无止境的陡峭山坡。

也许您应该评估和考虑猖獗的自动化是否表明您的某些游戏机制被视为无聊。我们应该努力为玩家提供足够的刺激,以使他们保持参与我们的游戏。


1
我们应该努力为玩家提供足够的刺激,让他们想要继续参与我们的游戏。但是有些玩家并不想为进度而努力,无论你如何让他们保持参与度,他们都会让机器人来完成肮脏的工作。 - Hatted Rooster
2
@GillBates 编写一个玩游戏的机器人本身就是一项有效的爱好;-) 当然,如果机器人把人类当作棋子或者通过将物品从机器人账户转移到人类账户来让某些玩家获得不公平的优势,那么问题就会变得棘手。但这似乎并不是这个问题的情况:这个问题是关于键盘宏的,它们只是玩家使他们与游戏的交互更高级的工具。这确实表明游戏用户界面过于低级/重复/无聊。 - cmaster - reinstate monica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接