【发布时间】:2011-12-16 18:37:56
【问题描述】:
我正在创建一个基于文本的游戏,并尝试实现程序世界生成。
我最初的计划有点随意:每个宇宙都有一个星系、太阳系的 3D 阵列,然后依次通过随机天体传播。我计划单独生成实际的本地区域,但我不确定目前是否有可能完成我拥有的任务。
Each universe is a Galaxy[10][10][10] (arbitrary number at the moment),
each galaxy is a randomly sized SolarSystem[50-150][50-150][50-150],
each SolarSystem is a randomly sized CelestialBody[5-20][5-20][5-20].
所有这些都将被写入数据文件以供以后读取。
现在看,如果我没记错的话,这需要 (((ClassSize^3)^3)^3) 个字节,即使 ClassSize 只有 4 个字节也无法存储。
我最初使用数组数组的目的是能够有效地将集群分组在一起,并更好地帮助确定玩家在宇宙中的位置。
我的问题是:我怎样才能更有效地生成如此规模的世界?
【问题讨论】:
-
对此有一条评论:在 Java 数组中,如果
_int_是 真的 会浪费空间,因为 java 的a[2][2][2]表示两个引用的数组到两个数组引用整数数组。所以,你有 6 个 refs 和 8 个 int(在这种情况下)。在计算位置时最好使用一维数组 -
实际上你会有类大小*(每个系统的身体^3)*(每个星系的系统^3)*(每个宇宙的星系^3)。因此,对于您的最小数字,4 字节 *5^3 *50^3 * 10*3 ~= 58GB。从玩家的角度来看,在每个身体上花费 5 秒需要 2500 年,因此您可能需要重新考虑该设计的一部分。
标签: java multithreading memory procedural-generation