使用lua存储游戏数据是否有效?

时间:2012-12-30 11:52:21

标签: xml database cocos2d-iphone lua game-engine

我是lua的新手,我想知道,使用lua存储游戏数据(例如怪物的描述,法术)是否有效。

我的问题是, 当我尝试每秒创建一个怪物对象时,我必须运行lua文件并重复获取数据, 我认为这可能效率不高。

在我尝试使用lua之前,我使用XML来存储数据。 在游戏开始时,我读了一次“monster.xml”文件,并将其保存在内存中,每次我需要创建一个怪物时,我只是参考它。 这种XML方法比lua方法更有效吗?或者还有其他更好的解决方案吗?

谢谢!

3 个答案:

答案 0 :(得分:5)

为什么不只读一次Lua文件,将数据存储在内存中并在需要时复制它?

或者,如果(某些)数据没有改变,您甚至不需要复制它;让这种类型的所有怪物都引用相同的数据副本。

答案 1 :(得分:3)

如果您通过lua_load()加载Lua文件,则会获得一个已编译的块作为Lua函数。

因此所有文件读取和解析只发生一次。运行这个函数并从Lua状态读取结果需要它自己的成本,但是我想比从XML结构中获取数据要快。

答案 2 :(得分:3)

  1. 从磁盘加载X,然后在需要时从内存中读取。
  2. 每次需要数据时从磁盘加载X.
  3. 对于X(XML,Lua)的任何值,

    #1将比#2快。

    您将#1(X = XML)与#2(X = Lua)进行比较,这是一个苹果与橙子的比较。

    如果您更喜欢使用Lua作为您的数据存储格式 - 无论出于何种原因(更简洁,更灵活等) - 没有理由它不能像使用XML一样快,假设您将加载的数据视为相同。

    假设你正在使用Lua作为加载数据(而不是行为)的一种方式,它看起来就像你正在做的那样,你应该将数据拉出来用于某些结构化数据类型无论如何。一旦数据被插入,该数据的(XML,Lua,无论如何)应该对程序无关紧要。