这种多线程过程生成算法的潜在问题是什么?



我知道这与游戏设计有关,但我已经阅读了StackOverflow常见问题解答,它指出可以在这里询问软件算法问题。如果这是更好的游戏设计,那么我希望有人可以帮助我移动它,谢谢!

我正在设计一个多线程程序地牢生成器。然而,我想知道我可能会遇到什么样的问题——我还没能找到许多清楚地显示多线程的算法。

我有三个不同的对象必须创建。一个容纳多个"房间"的"世界",每个房间都将容纳潜在的"对象"。'

当前的算法是这样工作的:

Step 1: Generate World
Step 2: Generate Rooms and Objects concurrently

The World包含一个房间列表和一个"可用对象列表"。Room创建方法将生成房间并将它们添加到World的房间列表中。对象创建过程不会以任何方式与房间过程通信。相反,对象创建过程将从World的房间列表中随机选择房间,并在房间中生成随机对象。

我看到的唯一问题是——如果对象创建过程提前完成。换句话说,只有房间列表中的一些房间会在其中创建对象,因为房间创建过程比对象创建过程晚完成。

是否还有更多的问题,有没有人对开发这样的算法有任何建议或经验?

首先,你提到的问题不是一个真正的问题,因为你应该简单地按照3个步骤来处理:

  1. 生成世界
  2. 同时生成房间
  3. 并发生成对象

按此顺序,确保所有房间都在。无论如何,在性能方面,将2+3放在一起并不能获得太多好处。

然而,与并发性一样,主要问题是当您将结果连接在一起时。如果您的房间保存在列表中,则需要同步添加到该列表,这会减慢处理速度。一个更复杂的问题出现了,一旦你开始在世界空间中实际创建房间,并且必须确保并行生成的房间不占用相同的空间(对于房间内的对象来说是相同的)。

相关内容

最新更新