这种多线程程序生成算法有哪些潜在的问题?

时间:2011-10-26 05:04:46

标签: algorithm procedural-generation

我知道这与游戏设计有关,但我已阅读StackOverflow常见问题解答,并说明可以在此处询问软件算法问题。如果这在游戏设计中更好,那么我希望有人可以帮助我移动它,谢谢!

我正在设计一个多线程程序地下城生成器。但是,我想知道我可能会遇到哪些类型的问题 - 我无法找到许多清晰显示多线程的算法。

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

当前算法的工作方式如下:

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

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

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

是否有更多问题,是否有人对开发此类算法有任何建议或经验?

1 个答案:

答案 0 :(得分:2)

首先,您提到的问题不是真正的问题,因为您应该只使用3个步骤:

  1. 生成世界
  2. 同时生成房间
  3. 同时生成对象
  4. 按此顺序,确保所有房间都在场。无论如何,你在保持2 + 3的表现方面并没有太大的收获。

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