巨大的2d地图世界游戏?

时间:2018-02-08 20:05:42

标签: java c++ performance 2d-games

我一直在考虑一个游戏创意,我正在考虑一些技术性的东西,并想出地图需要360,000x360,000像素大小随机生成。

360,000 * 360,000 == 129,600,000,000像素。 假设我只使用16色调色板,因此每个像素只能使用4位指定其颜色。 129,600,000,000像素*每像素4位== 518,400,000,000位。每字节除以8位给出64,800,000,000字节。除以每千字节1024字节,然后除以每兆字节1024千字节,你得到大约61,798兆字节。让我们把它关闭,称之为60千兆字节。

因此我将地图世界划分为小块“瓷砖”。 当我将它平铺到360x360时,我可以用((360,000 / 360)*(360,000 / 360))=(10 ^ 6)百万个图块来表示我的游戏世界。每个磁贴我需要的唯一数据是磁贴的ID号。所以存储在机器ram存储器中的数据是360 * 360的数组,其大小为360 * 360 * 4 = 518,400位,即64,800字节,即63.28千字节,即0.061兆字节

没关系,但我想我还有问题。 地图世界的显示图块将是360 * 360像素,因为当玩家移动鼠标时,玩家可以将鼠标移动到[右,左,下,上]。所以我必须删除显示的图块的最后一行,并显示为当前上一个图块的最后一行的第一行。如果显示的当前图块是四个图块的组合,但它不是问题,它只需要编码技能,它也会更复杂。 但问题是我必须将所有瓷砖记忆成机器内存,所以我再次回到第一点的记忆空间。

如何构建360,000x360,000像素的地图并能够处理它

1 个答案:

答案 0 :(得分:1)

将大部分地图留在磁盘上。仅在玩家移动时加载(异步)您需要的局部/可见邻域。并卸载超出范围的瓷砖。另外,压缩磁盘上的版本。当然,只有16种瓷砖类型,你不会有很多变化。如果它是"地图"类似瓦片类型的区域然后运行长度压缩可能会有所帮助。