2013-10-06 72 views
0

所以,我的朋友,我不得不说,我们解决不了的争论。他正在编写一个通用的网页游戏库和一个地图编辑器。地图编辑器保存映射为XML,但地图编辑器还可以加载一个Lua脚本,出口地图的细节,看起来像这样(他不想张贴代码的JavaScript文件,所以这只是一个与更改的名称)片段:生成代码VS文件格式

// 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加载文件,什么是运行生成的代码VS解析JSON/XML以及从该对象之间的权衡?

+1

这里有很多问题。这不符合SO设计的Q&A格式。将问题分解为更多重点项目并再次提问。见[help/on-topic] – 2013-10-06 07:45:43

+0

@MikeW编辑了我绝对需要知道的问题。 –

+0

这真的是一个基于意见的问题吗?我不知道代码生成是加载数据的有效策略。 –

回答

0

从一般意义上说,从另一个脚本加载元数据可以为脚本生成器提供有关数据如何发送,显示等的更多灵活性。例如,可以将完整的数学表达式,条件等作为该脚本将被脚本解析器(解释器)无缝地解析和加载。通过使用XML或JSON来做同样的事情可能会更困难(想象一下,通过XML,发送表达式来执行Miller Cylindrical Projection)。

我见过其中的应用程序创建自己的脚本语言(MAXScript中,MEL为Maya),以提供灵活的用户很多情况下。这些可能与您朋友使用Java脚本加载元数据不同。但恕我直言,这是一个连续的频谱,从元数据文本文件开始,到XML,JSON,表达式解析,到完全成熟的脚本解析。

在另一方面,发送复杂的脚本,将意味着部分露出你的代码库。此外,每个人都知道XML的功能,并且您可以期望非程序员使用/修改XML文件。他们很舒服。即使阅读他们认为的“程序”或“脚本”,他们也可能不舒服。我在我的公司看到了这个第一手资料,艺术家不安地修改了一个Lua文件。如果它是一个简单的文本文件,他们很容易修改相同的信息。可能还有一些安全问题,但我真的不太熟悉它,所以我不能发表评论。