【问题标题】:Which datatype should I choose for a units selection in an RTS game?我应该为 RTS 游戏中的单位选择选择哪种数据类型?
【发布时间】:2019-04-10 21:26:12
【问题描述】:

对于 rts 中的单元集合,什么是好的数据类型? 我为an api that lets you write bots for the strategy game Starcraft2 in Python 做出了贡献。

现在 there is a class units 继承自 list。每一帧都会创建一个新的units 对象,然后选择这些单位,创建新的units 对象,例如使用过滤器过滤所有敌方单位或所有飞行单位。

我们使用这些选择来找到最近的敌人来控制我们的单位,选择我们现在可以攻击或需要不同顺序的单位等等。

但这也意味着我们要根据每一帧中每个单元的属性进行大量过滤,这需要花费大量时间。单独初始化一个units 对象的时间是 2e-5 到 5e-5 秒,我们在每场比赛中执行数百万次,这可以减慢机器人速度并进行大量测试,此外还有每个单元上的循环过滤过程在units 对象中。

有更好的数据类型吗? 也许不需要为一帧中的每个选择每次都重新创建一些东西,而只是从我们从协议缓冲区获得的所有单元的初始列表开始,然后可以在不重新创建对象的情况下应用选择和过滤器?实现这一点的好方法是什么,以便每帧多次过滤不会那么慢和/或复杂?

【问题讨论】:

    标签: python types protocol-buffers abstract-data-type


    【解决方案1】:

    这听起来根本不像是 ADT 问题。这听起来像是低效的编程。我们不可能告诉您要构建的正确信息以实现您的目标。

    如果您实际上不需要修改units 数据,您可能应该研究的是如何构造UnitView。考虑类似于 Python 3 中字典返回 views 的方式。See here for more details

    【讨论】:

      猜你喜欢
      • 2014-02-09
      • 2013-11-12
      • 2012-05-03
      • 2012-01-25
      • 1970-01-01
      • 2019-06-01
      • 1970-01-01
      • 2016-03-17
      • 1970-01-01
      相关资源
      最近更新 更多