Actionscript 3 AS3中游戏的无限地图尺寸

Actionscript 3 AS3中游戏的无限地图尺寸,actionscript-3,Actionscript 3,最近,我一直在计划如何使用能够无限维的环境/地图来运行游戏(无限是一个松散的术语,因为内存中存储的数据量显然有限制,等等)。我使用一个“网格”实现了这一点,该网格包含以字符串形式存储的级别数据,该字符串可以转换为表示对象及其属性的二维数组 以下是存储为字符串的两个对象的示例: "game.doodads.Tree#200#10#terrain$game.mobiles.Player#400#400#mobiles" “网格”是一个3D数组,其中的内容表示网格单元的x/y坐标。比如说,网格单元是

最近,我一直在计划如何使用能够无限维的环境/地图来运行游戏(无限是一个松散的术语,因为内存中存储的数据量显然有限制,等等)。我使用一个“网格”实现了这一点,该网格包含以字符串形式存储的级别数据,该字符串可以转换为表示对象及其属性的二维数组

以下是存储为字符串的两个对象的示例:

"game.doodads.Tree#200#10#terrain$game.mobiles.Player#400#400#mobiles"
“网格”是一个3D数组,其中的内容表示网格单元的x/y坐标。比如说,网格单元是600x600

该“网格”阵列的示例如下:

var grid:Array = [[["leveldata: 0,0"],["leveldata 0,1"]],
                  [["leveldata: 1,0"],["leveldata 1,1"]]];
环境将处理加载一个网格正方形及其8基于给定点的周围正方形。运动员的位置。它将具有以下功能:

function loadCells(xp:int, yp:int):void
这也将处理之前装载的电池的卸载,这些电池的距离不再足够近,无法满足要求。在卸载过程中,网格[x][y]上的数据将被新数据覆盖,新数据是通过循环该单元格中的对象并将每组新数据附加到网格单元格数据中创建的

在向某个方向移动、卸载/保存单元格以及加载新单元格时,一切正常。问题是:

假设这是一个僵尸横行的大城市。如果你朝任何方向走三个方格,然后返回,一切都和你离开时一样。我正在努力寻找一种方法,至少可以模拟所有仍然在移动的物体,并完成它们的工作。举个例子,当你扔了一枚手榴弹,走开,回来,手榴弹还没有引爆时,这看起来很傻

我考虑过在卸载级别时在每个对象上存储一个时间戳,当它初始化时,会有一个循环多次运行它的“step”函数。这里的问题很明显,当你5分钟后回来时,20个僵尸会尝试并移动248932489次,游戏就会崩溃


想法?

我不知道AS3,但让我试着给你一些建议

似乎你想创造一个无缝的世界,因为你在玩家移动时加载/卸载
单元格。那是个好主意。这里您应该做的是决定单元格应该加载/卸载哪些数据(或者,更进一步,单元格应该保存或处理哪些数据)

例如,该单元不应卸载手榴弹,因为即使在玩家离开单元后也需要更新手榴弹一个游戏单元管理所有游戏对象并不是一个好主意,因为它们位于游戏单元中。相反,玩家对象可以作为所有者处理手榴弹。或者,可以有一个EntityManager来处理所有游戏实体,如手榴弹或僵尸


有了这个想法,你可以更新你的20个僵尸,即使他们在一个卸载的区域(他们的位置不再重要),而不是一次调用update()248932489 tiems。但是,您真的需要不断更新僵尸吗?也许,卸载所有僵尸并生成新的僵尸,以及单元格中最新活动僵尸的数量将起作用。这取决于你的游戏设计,但通常情况下,你不必更新不可见或离玩家不够远的实体。希望能有帮助。祝你好运D

我不知道AS3,但让我试着给你一些提示

似乎你想创造一个无缝的世界,因为你在玩家移动时加载/卸载
单元格。那是个好主意。这里您应该做的是决定单元格应该加载/卸载哪些数据(或者,更进一步,单元格应该保存或处理哪些数据)

例如,该单元不应卸载手榴弹,因为即使在玩家离开单元后也需要更新手榴弹一个游戏单元管理所有游戏对象并不是一个好主意,因为它们位于游戏单元中。相反,玩家对象可以作为所有者处理手榴弹。或者,可以有一个EntityManager来处理所有游戏实体,如手榴弹或僵尸


有了这个想法,你可以更新你的20个僵尸,即使他们在一个卸载的区域(他们的位置不再重要),而不是一次调用update()248932489 tiems。但是,您真的需要不断更新僵尸吗?也许,卸载所有僵尸并生成新的僵尸,以及单元格中最新活动僵尸的数量将起作用。这取决于你的游戏设计,但通常情况下,你不必更新不可见或离玩家不够远的实体。希望能有帮助。祝你好运这是一个有趣的问题。当然,游戏不能精确地模拟无限的环境。如果你离开某个区域几分钟,你不需要精确模拟僵尸(或那里的任何演员)的每一步。每个游戏都有自己的简化。也许近似模拟将对您有所帮助。例如,如果幸存者长时间处于严重感染区,您的模拟器可以决定他变成僵尸,而无需计算过程的每一步。或者,如果部落在城市的某个地方猖獗,这部分应该被随机破坏。

有趣的问题。当然,游戏不能精确地模拟无限的环境。如果你离开某个区域几分钟,你不需要精确模拟僵尸(或那里的任何演员)的每一步。每个游戏都有自己的简化。也许近似模拟将对您有所帮助。例如,如果幸存者长时间处于严重感染区,您的模拟器可以决定他变成僵尸,而无需计算过程的每一步。或者,如果部落在城市的某个地方猖獗,这一部分应该被随机破坏。

关于如何处理这个问题,我有两种方法

第一:你有英语