2

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

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

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

当前算法的工作原理如下:

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

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

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

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

4

1 回答 1

2

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

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

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

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

于 2011-10-26T05:10:01.803 回答