【发布时间】: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