2

我在空闲时间玩沙盒/世界模拟/powdertoy 类型的游戏,使用 clojure 和 quil。这里的想法是,世界上的每个坐标/单位都可以有一个具有某些属性(光/荒地等)的身份(沙子/水/空气/植物)。在每次迭代中,每个坐标都会更新,只考虑到它旁边的坐标(从更温暖的坐标接收热量/当空气下方有空气时水会下降)

世界越大,更新世界的计算就越密集。但是速度不是我的最高优先级(例如 5-10 次迭代/秒就足够了)。

我想知道使用 Rich蚁群中使用的并发原则并行更新世界上的每个单元是否可行每个蚂蚁都有自己的线程的演示。(所以世界上的每个单元都有自己的线程)。我真的很难将我的头脑围绕在蚁群演示中发生的所有事情上。例如,当 2 个沙子单元尝试同时移动到同一个空气单元时,会不会有问题?能存在那么多线程吗?(例如 500 000 个坐标 -> 500 000 个线程)。或者最好忘记所有这些,然后依次更新所有坐标。我也在考虑为每个坐标引入一种静态标志。所以我只需要更新可能发生变化的坐标。(在下一次迭代中使用可变坐标向量)

问候并感谢您的阅读。:)

4

1 回答 1

2

您应该查看Clojure Ants - 一个文学编程版本,它很好地解释了 Rich 的代码。

于 2013-09-14T12:38:24.487 回答