作为经验丰富的 Web 开发人员,我知道 javascript 代码不安全,而只能是缩小/模糊处理。
然而,许多游戏引擎有足够的信心允许他们的引擎代码和客户的游戏代码被下载并在客户端/浏览器中可见。
-
试图了解 Unity3D 是如何做到这一点的,我遇到了客户端/浏览器下载的文件的以下细分:
一个包含 asm.js 运行时和 JavaScript 插件的 MyProject.asm.framework.unityweb 文件。`
包含播放器的 asm.js 模块的 MyProject.asm.code.unityweb 文件。
一个包含二进制图像的 MyProject.asm.memory.unityweb 文件,用于初始化播放器的堆内存。
包含资产数据和场景的 MyProject.data.unityweb 文件。
来源: https ://docs.unity3d.com/Manual/webgl-building.html
-
然后我看到他们正在使用 emscripten 将他们的 C/C++ 代码编译为 Javascript:
To run in WebGL, all code needs to be JavaScript. We use the emscripten compiler toolchain to cross-compile the Unity runtime code (written in C and C++) into asm.js JavaScript. asm.js is a very optimizable subset of JavaScript which allows JavaScript engines to AOT-compile asm.js code into very efficient native code.
来源: https ://docs.unity3d.com/Manual/webgl-gettingstarted.html
-
问题:
- 是 Emscripten 和/或 asm.js 以某种方式保护 Javascript 代码吗?如何?
- 它甚至安全吗?如果我真的很努力,我可以从这段代码中“窃取”一些东西并为游戏编写一个 hack/cheat:https ://files.unity3d.com/jonas/AngryBots/Release/AngryBots.js
- 如果我已经编写了一个 javascript 游戏,我现在可以做什么来做 Emscripten 为 Unity3D 游戏所做的事情?(假设#2是真的)