0

それで、私の友人と私は解決できない議論をしました。彼は、汎用 Web ゲーム ライブラリとマップ エディターを作成しています。マップ エディターはマップを XML として保存しますが、マップ エディターはマップの詳細を次のような Javascript ファイルにエクスポートする Lua スクリプトを読み込むこともできます (彼はコードを投稿したくなかったので、これは単なる名前が変更されたスニペット):

// This probably isn't valid code, but this is the idea of the code generator
(function() {
Game.Level1 = function (state) {
    GameEngine.Group.call(this);
            var Object0 = new Game.Lo(new GameEngine.Point(654 , 975.13), 15, state);
            var slot123 = new GameEngine.TimeSlot(123);        //Start
            slot123.addEvent(new GameEngine.Event(Object0, "x", "current", 15, 200));
...

ゲーム ライブラリは、マップ ファイルを解析してオンザフライでオブジェクトを生成する代わりに、このコードを実行するだけでよいという考えです。また、コードを生成するマップ エディターの Lua スクリプトは、別のライブラリ用に別の言語でコードを出力したい人なら誰でも変更できます。(スクリプト言語に限定されません)。

このアイデアは聞いたことがありません。通常、マップ データは JSON や XML などの標準形式であり、ゲーム ライブラリに解析させることを期待していました。

彼のライブラリが JavaScript で書かれており、彼のマップが JavaScript を生成してファイルをロードできることを考えると、生成されたコードを実行することと、JSON/XML を解析してそこからオブジェクトを生成することの間のトレードオフは何ですか?

4

1 に答える 1

0

一般的な意味で、別のスクリプトからメタデータをロードすると、データの送信方法、表示方法などについて、スクリプト ジェネレーターに柔軟性が追加されます。たとえば、ロードされたスクリプトの一部として完全な数式、条件などを含めることができます。スクリプトパーサー(インタープリター)によってシームレスに解析およびロードされます。XML や JSON を使用して同じことを行うのは難しいかもしれません (その場で XML を介してMiller Cylindrical Projectionを実行するための式を送信することを想像してください)。

アプリが独自のスクリプト言語 (MAXscript、Maya の MEL) を作成して、ユーザーに柔軟性を提供する状況を数多く見てきました。これらはおそらく、あなたの友人が Java スクリプトを使用してメタデータをロードする方法とは似ていません。しかし、IMHO は、メタデータ テキスト ファイルから始まり、XML、JSON、式の解析、本格的なスクリプトの解析に至るまで、連続的なスペクトルです。

一方、複雑なスクリプトを送信すると、コード ベースの一部が公開されます。また、誰もが XML の機能を知っているため、プログラマーでなくても XML ファイルを使用/変更することが期待できます。彼らはそれを快適にしています。彼らは、自分が「プログラム」や「スクリプト」と考えているものを読むことさえ快適ではないかもしれません。私の会社では、アーティストが Lua ファイルを変更することに不安を感じていました。単純なテキスト ファイルであれば、同じ情報を変更しても問題ありませんでした。セキュリティ上の問題もあるかもしれませんが、私はあまり詳しくないのでコメントできません。

于 2013-10-07T13:21:21.203 に答える