我在闲暇时间玩沙盒/世界模拟/粉末游戏,使用clojure和quil。这里的想法是世界上的每个坐标/单元可以具有一个具有某些属性(光/荒地等)的身份(沙/水/空气/植物)。在每次迭代中,每个坐标只更新时考虑到它旁边的坐标(从较暖的坐标接收热量/当空气不足时水倒下)
在世界变得越大的情况下,更新世界可能会导致计算密集。但速度不是我的最高优先级(例如5-10次迭代/秒就足够了)。
我想知道使用Rich ants colony演示中使用的并发原则来更新parralel中的每个单元是否可行,其中每个ant都有自己的线程。 (所以世界上每个单位都有自己的线索)。我很难把我的头脑包围在蚁群演示中发生的所有事情。例如,当2个砂单位试图同时移动到同一个空气单元时会出现问题吗?可以存在那么多线程吗? (例如500 000个坐标 - > 500 000个线程)。或者最好忘记所有这些并且只是更新所有坐标。我还在考虑为每个坐标引入一种静态标志。所以我只需要更新可能发生变化的坐标。 (在下一次迭代中使用可变坐标向量)
问候和感谢阅读。 :)