首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript游戏/服务器通信/答案验证

Javascript游戏/服务器通信/答案验证
EN

Stack Overflow用户
提问于 2010-01-30 07:41:48
回答 2查看 434关注 0票数 1

我有一个类似测验的javascript游戏,它应该是快节奏的。用户需要在短时间内回答尽可能多的问题。他会看到一个是/否的问题,答案被发送到服务器,在那里进行验证,并向他显示反馈(正确/不正确)。我使用Javascript和AJAX。

问题是由于服务器正在进行验证,导致两个连续问题之间的延迟。这些问题彼此独立(结果不会改变下一个问题)。我希望用户在回答后立即得到反馈,然后才能看到下一个问题。

目前,我在服务器端验证答案时停止客户端的时钟,并在反馈和下一个问题到达时恢复它。我还确保,在服务器端,游戏会话不会超过允许的时间外加网络延迟的合理松弛。

我能想到的消除延迟的唯一也是显而易见的解决方案是向客户端发送一批问题和答案,并在客户端进行验证。这将最小化与服务器的通信(每个会话一次),并提供流畅的播放体验。显然,任何可以阅读传入消息的用户都可以创建一个脚本,该脚本将自动播放并完美播放。混淆客户端代码和答案可能会有所帮助,并增加编写此类恶意脚本的成本,但这并不能消除决心坚定的用户创建自己的脚本。

我的问题有两个方面。首先,我想确定我没有犯一个巨大的错误,并且错过了这个问题的一个明显的解决方案,这个解决方案也完美地处理了怀有不良意图的用户。我想理论上不可能想出这样的解决方案,但是我没有足够的地方在这里写下证明(!)。

其次,考虑到在游戏结束时没有金钱奖励,我不希望任何无聊的程序员来搞乱我的小游戏。但是,我仍然想听听你的意见和在更严重的情况下处理它的策略。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-30 07:45:51

作为热身,我想给出一个我脑海中浮现的粗略的解决方案。

偶尔会在批次中包含错误的问答组合。你可以检测到自动机器人,因为它应该比真正的玩家更频繁地给出“正确”(实际上是错误的)答案(另外,其他问题和这些虚假问题的准确性之间不应该有任何显着差异)。代价是真正的玩家会发现他们的合法答案偶尔会被认为是错误的。如果你减少这种虚假问题的数量,你就牺牲了机器人检测的准确性。

我假设这些脚本在后续答案之间的时间间隔方面表现得像人类一样,它们足够聪明,不会每次都给出正确的答案。否则就太容易了。

票数 1
EN

Stack Overflow用户

发布于 2010-01-30 08:08:23

只使用Javascript是不可能完成你想要完成的事情的。想想看:如果Javascript,一种纯文本的客户端语言,正在做验证,没有什么可以阻止玩家做同样的事情,Javascript会做同样的事情并获取正确的答案。

为了最大限度地减少滥用,您可以混淆Javascript并以散列形式(md5/sha1/etc)向客户端提供答案,对用户提交的答案进行散列,然后根据散列进行验证。这样一来,答案在明文中是不可见的,但如果你的游戏只有有限的多项选择答案,那么作弊的人只需对所有答案进行散列并与一批答案进行比较,这将是微不足道的。

我们在这里讨论的延迟时间到底有多长?Ajax相当快……我见过一些响应时间在100-200ms范围内的应用程序。这应该足够低,以便不会破坏用户体验。如果您的响应时间比这更慢,那么您最好的选择可能是研究如何优化应用程序的服务器端部分,以更快地计算响应。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2166051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档