繁体   English   中英

生成代码与文件格式

[英]Generating code vs file format

所以我和我的朋友有一个争论,我们无法解决。 他正在编写通用网络游戏库和地图编辑器。 地图编辑器将地图另存为XML,但是地图编辑器也可以加载Lua脚本,该脚本会将地图的详细信息导出到看起来像这样的Javascript文件中(他不想发布代码,因此这只是一个名称已更改的代码段):

// 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和从中生成对象之间的权衡是什么?

从一般意义上来说,从另一个脚本加载元数据可以使脚本生成器在数据发送,显示等方面具有更大的灵活性。例如,可以将完整的数学表达式,条件等作为加载脚本的一部分,将由脚本解析器(解释器)无缝解析和加载。 使用XML或JSON来做同样的事情可能会更困难(想象一下,通过XML发送一个表达式来执行Miller圆柱投影 )。

我已经看到许多情况下,应用程序会创建自己的脚本语言(MAXscript,Maya的MEL)来为用户提供灵活性。 这些可能与您朋友使用Java脚本加载元数据不相似。 但是恕我直言,这是一个连续的过程,从元数据文本文件开始,到XML,JSON,表达式解析,再到完整的脚本解析。

另一方面,发送复杂的脚本意味着要公开部分代码库。 而且每个人都知道XML的功能,并且您可以期望非程序员使用/修改XML文件。 他们这样做很自在。 他们甚至可能不习惯阅读他们认为的“程序”或“脚本”。 我在公司里亲眼目睹了这首手,在那儿,艺术家们不安地修改Lua文件。 如果它是一个简单的文本文件,则他们很乐意修改相同的信息。 可能还存在一些安全问题,但是我实际上并不那么熟悉,因此我无法发表评论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM