【问题标题】:Is it efficient to use lua to store game data?使用lua存储游戏数据效率高吗?
【发布时间】:2013-01-03 02:14:11
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

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


【解决方案1】:

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

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

【讨论】:

  • 谢谢!这是一个很大的帮助。但是我把所有的怪物都实现为一个类,它们之间的不同只是数据和外观。因此,我可能需要另辟蹊径。
  • 你可以在每个怪物实例中存储一个怪物数据的引用/索引。
【解决方案2】:

如果你通过lua_load() 加载 Lua 文件,你会得到一个编译后的块作为 Lua 函数。

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

【讨论】:

    【解决方案3】:
    1. 从磁盘加载 X,然后在需要时从内存中读取。
    2. 每次需要数据时从磁盘加载 X。

    对于任何 X 值(XML、Lua),#1 都将比 #2 快。

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

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

    假设您将 Lua 用作加载 数据(而不是行为)的一种方式,看起来您正在这样做,您应该将数据提取到某些结构化数据类型中反正。一旦数据被吞入,该数据(XML、Lua 等)的来源对程序来说就不再重要了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-01
      • 2014-01-30
      • 1970-01-01
      相关资源
      最近更新 更多