0

如何在动作脚本 2 中以最小的延迟实现无限/巨大的程序生成世界?例如,在像 Terraria 或 Minecraft 这样的游戏中。处理这样的巨大世界的最佳方法是什么?

显然循环遍历每个块并以这种方式移动它们是行不通的。我尝试将块放入 50x50 的“块”中,然后移动每个块,但结果并不像应有的那样平滑。

如果玩家不在附近,有什么方法可以完全禁用地图的某些部分?是否可以简单地将它们存储在内存中并在需要时加载它们?

任何帮助表示赞赏,谢谢!

4

1 回答 1

0

如果您的游戏主要基于图块,也就是说,世界具有与其基本单元相同大小的块,那么将您的世界存储在数组中是最实用的。像下面这样的数组可以存储与特定块类型相对应的键,而不是手动放置块:

"grass" "grass" "grass" "water" "water"
"grass" "water" "water" "water" "water"
"grass" "grass" "woods" "woods" "woods"
"grass" "grass" "woods" "woods" "woods"
"grass" "grass" "woods" "woods" "woods"
"grass" "grass" "grass" "woods" "woods"

想象在上面的例子中,玩家一次只能看到九个方块,即

"grass" "woods" "woods"
"grass" "woods" "woods"
"grass" "woods" "woods"

这是世界数组中位置 2,2 的玩家。

每当玩家移动时,其相对于数组的位置分别递增或递减。所以向上移动会将位置值减小到 2,1 并加载位于更北的块。

从数组中,您将检索到紧接在上面的块是"water" "water" "water",并将加载三个water影片剪辑。以防万一,这个答案显示了如何动态加载影片剪辑。

此外,相对于世界移动玩家而不是相对于玩家移动整个世界的一种快速方法是更改​​值_root._x_root._y

最后,如果游戏的图形过于密集,你是否考虑过在“基于房间”的系统上穿越世界,玩家的位置不是固定的,每 50 个方块左右就会进入一个新的方块屏幕?这很容易减轻压力。

AS2 非常适合处理您希望快速启动和运行的简单游戏,尽管 AS3 的性质可能更适合动态加载许多对象。

于 2013-10-04T16:16:15.570 回答