我正在使用Unity(只是次要相关)中的C#创建一个游戏场景,它实际上是.NET,因为它在Unity中。这个场景是二维的,并且通过细化方法基于细胞自动机生成,可以使场景的形状“可用”于我的意图。
目前,基础游戏场景的数据(活着的单元格或死亡的单元格,开放的或关闭的,通道或墙壁)以二进制值的形式存储在一个
其他数据将包括关于以下事项的信息:玩家是否访问过此单元格、当前玩家是否能看到该单元格(LoS)、该单元格中是否有敌人或物品/项目。
显然,LoS、hasVisited和敌人数据将是动态的,随着玩家导航和敌人沿其路径移动而变化。
我希望从一开始就设计并开发时考虑性能,因为早期错误可能会导致性能瓶颈,这可能需要重构,浪费宝贵的开发时间,接近项目结束时。
我的问题是:
更新一个或多个数组来跟踪数据是否会以线性或指数方式变得资源密集?换句话说,如果mapA是[80,80],而mapB是[160,160],那么mapB在维护方面要消耗大约4倍的资源,还是更多或更少?如果大小超过某个
我的初始想法是使用类似于
谢谢!
目前,基础游戏场景的数据(活着的单元格或死亡的单元格,开放的或关闭的,通道或墙壁)以二进制值的形式存储在一个
int [,]
数组中。最终,还将在该数组中存储其他数据,或者可能存储在与该int [,]
数组映射回的辅助集合中。其他数据将包括关于以下事项的信息:玩家是否访问过此单元格、当前玩家是否能看到该单元格(LoS)、该单元格中是否有敌人或物品/项目。
显然,LoS、hasVisited和敌人数据将是动态的,随着玩家导航和敌人沿其路径移动而变化。
我希望从一开始就设计并开发时考虑性能,因为早期错误可能会导致性能瓶颈,这可能需要重构,浪费宝贵的开发时间,接近项目结束时。
我的问题是:
更新一个或多个数组来跟踪数据是否会以线性或指数方式变得资源密集?换句话说,如果mapA是[80,80],而mapB是[160,160],那么mapB在维护方面要消耗大约4倍的资源,还是更多或更少?如果大小超过某个
int [,]
值,使用类似于Dictionary或自定义集合这样的东西是否有好处?我的初始想法是使用类似于
Dictionary<int [,],Dictionary<string,string>>
的东西。我在工作中经常使用字典,但是我不考虑性能,因为它是内部的,非常具体化,所以我对Dictionary<>
的性能不太熟悉。与同一个网格的多个不同数据的多个数组相比,字典的好处是我可以拥有有意义的键,而不仅仅是需要跟踪的其他值。然而,我怀疑数组可能只是更快,而长期来看不太可读。谢谢!