ベテランの 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
-
質問:
- 何らかの形でJavascriptコードを保護しているのはEmscriptenおよび/またはasm.jsですか? どのように?
- それは安全ですか?私が本当に一生懸命やれば、このコードから何かを「盗み」、ゲームのハック/チートを書くことができます: https://files.unity3d.com/jonas/AngryBots/Release/AngryBots.js
- すでに JavaScript ゲームを作成している場合、Emscripten が Unity3D ゲームに対して行うことを行うにはどうすればよいですか? (#2が真であると仮定)