我想知道即使在多线程处理过程中,如何使用具有给定种子的 PRNG 来获得相同的结果。
说明:
世界将使用 Perlin 或 Simplex 等相干噪声来生成高度,该噪声将由 a 确定World Seed。然后我希望每个块产生一些随机性,例如在块内放置了多少棵树,放置树的位置,应该放置多少花等等。每次World Seed给出相同的随机性时,这种随机性应该是相同的。根据玩家来自的方向,可以在每次游戏运行时以不同的顺序加载块,(如果玩家来自北方,那么如果玩家来自南方,则顺序不同)。
如何跨线程使用 Seeded RNG,以使块可以按任何顺序生成,并且仍然获得与上次相同的结果。
编辑:
解决方案可能是使用块位置(这将是 x,y 坐标)和世界种子为每个块生成一个新的 PRNG。然而,这意味着每个块都需要生成一个新的 PRNG 来获得一些随机数,这真的是避免这个问题的最好方法吗?