Javascript 在前端对数字进行编码(用于游戏)以保密

Javascript 在前端对数字进行编码(用于游戏)以保密,javascript,Javascript,有没有可能对一个数字进行编码,这样在前端(使用javascript)我就可以知道它并用它进行计算,而不会让黑客发现这个数字 我正在做一个使用服务器端逻辑和客户端逻辑的浏览器游戏 例如: 敌人的生命值是100。这可以在后端(服务器)中进行编码。 每秒炮塔伤害=1。后端知道,前端知道。 我想计算距离0还有多长时间(直到敌人死于炮塔)。 但我希望黑客不会通过查看我的源代码并重新描述它来发现敌人有100条生命。 我不能设置这样的东西:10分钟后会死吗。因为玩家知道确切的死亡时间后会发现这个敌人的生命值很

有没有可能对一个数字进行编码,这样在前端(使用javascript)我就可以知道它并用它进行计算,而不会让黑客发现这个数字

我正在做一个使用服务器端逻辑和客户端逻辑的浏览器游戏

例如:
敌人的生命值是100。这可以在后端(服务器)中进行编码。
每秒炮塔伤害=1。后端知道,前端知道。
我想计算距离0还有多长时间(直到敌人死于炮塔)。
但我希望黑客不会通过查看我的源代码并重新描述它来发现敌人有100条生命。
我不能设置这样的东西:10分钟后会死吗。因为玩家知道确切的死亡时间后会发现这个敌人的生命值很低。敌人的生命值从10到100k不等。出于战略目的,这一点不应为人所知。

我相信前端任何解析这个数字的解码功能也能被黑客发现,他们无论如何都能得到这个数字:)

另一个问题是我不能每分钟都问服务器,否则敌人已经死了。因为战场上有成百上千的敌人。我的服务器将完全超载。只能在前端执行此操作:)

这是一个基于服务器的浏览器HTML5 MMO。我相信有些人会努力破解我的代码,找出这些数字,制作有用的脚本/助手/包装,为其他玩家销售。这将导致不公平的PvP


到目前为止,我有两个选择:
1.只需向玩家显示敌人的确切生命值即可。

2.他知道这个敌人的确切死亡时间。例如Date.now()是14:00:00,死亡时间-今天是15:12:37。前端不知道这一点。但我不能每隔1-5-10秒询问服务器-是吗?它是?所以我的服务器给前端一个号码:14:02:37。在给定的时间后,前端仅每隔10分钟请求服务器一次-是吗?服务器总共回答了6次-回答为“否”,这个敌人还没有死亡,但是你不知道你要重复这个问题多久,直到它死亡。第七次,它回应道:“是的,它在一秒钟前就死了”,因为服务器知道它已经死了。所以,这会给服务器带来一些垃圾邮件,但不会太高,而且当垃圾邮件非常罕见时,它可能可以处理这些垃圾邮件。而且黑客无法发现敌人的健康状况。

由于浏览器完全由用户控制,这是不可能的。您可以混淆代码和值,但不能对它们进行加密,以便其他人无法解密它们。因为如果您以不可解密的方式对其进行加密,您的程序也将无法对其进行解密


服务器交互是必要的,因为你需要一个“保护区”来隐藏你的秘密。

是的,同样的i槽:D i槽可能已经发明了一些东西用于此目的:为什么不使用服务器?因为我不能每秒钟/分钟发一次垃圾邮件问我的服务器,否则敌人就死了。战场上有数百个敌人。此类字段中有2-5个可见字段。一台服务器上有10k个字段,我可能会聪明地为所有敌人使用cron作业,如果它死掉,每10秒就会有一次套接字推送通知。。我不在乎它有多复杂,但这听起来是一样的——太超载了。我目前的选择是放弃,只显示健康状况而不隐藏它。这样我就可以很容易地计算出每件事。但球员们可能不会很高兴。我现在不知道其他的选择:)你应该做的是在客户端和服务器端运行相同的逻辑,这样客户端就不会有太多明显的延迟。然后,将更新后的游戏状态从服务器发送到客户端的频率取决于游戏设计和硬件功能。快节奏的游戏每秒发送很多次更新包并不少见。
另一个问题是我不能每分钟都询问服务器,否则敌人已经死了。因为战场上有成百上千的敌人。我的服务器将完全超载。这只能在前端完成。
这是一个错误的想法。这一切都应该在服务器端计算,只有渲染应该在客户端完成。服务器需要是主状态,客户端需要尊重提供的任何数据。是的,我理解这一点。但它会使我的服务器超载。我在寻找一个选择,这甚至是可能的。但到目前为止,这似乎是不可能的,我能做的就是——在前端显示这种健康状况,玩家将知道敌人死亡的确切时间。在我的游戏中策略较少,但技术上我没有其他选择:)至于策略设计,你可以尝试在堆栈交换中询问他们,看看他们对如何围绕它构建一些策略是否有任何想法。我正在考虑这一点。但这是一个技术问题,而不是设计问题。因为我的项目已经太复杂,无法解释我当前的设计:)