繁体   English   中英

Andengine-一个好的红宝石装载机?

[英]Andengine - a good rube loader?

我看了一下在这里找到的那​​两个项目:AndEngineJb2dJson AndEngineRubeLoaderExtension

如你们中某些人所知,我正在开发基于滚动场景的游戏,我正在从XML文件加载所有实体,并在最近的“加载场景”中创建它们,因此我增加了游戏宽度,并在整个级别上大约500个实体(而不是250 +-),但这会导致性能问题,游戏处于“滞后” \\“跳跃”状态,并且一切运行缓慢。

我的问题是,如果这些Rube Loader支持性能问题,请像常规andengine loader一样进行一些改进,或者它需要手动将XML \\ JSON中的每个实体加载

是否有人开发具有相同数量实体的基于滚动场景的游戏,并告诉我实现它的正确方法是什么?

谢谢

由于您实际上并未提供有关特定实现的详细信息,因此我仅向您提供一种处理此类游戏的通用方法。

首先,您需要为游戏世界定义一个“活动”区域-这将是需要模拟的世界区域(即,该区域中的实体将移动并与世界互动)。

您的世界布局可能看起来像这样:

范例世界

在此示例中,您的世界是灰色块,并且超出了屏幕边界(即黑框 )。 红色框表示活动区域-请注意,它超出了显示屏的大小,但并不覆盖整个世界。 该区域的大小将取决于您的特定实施/需求。

活动区域通常会随玩家一起移动,因此可以轻松地表示为与玩家的距离(在两个方向上)。

基本思想是,仅当实体(以蓝色显示 )处于活动区域内时才对其进行仿真。 处于活动区域右侧的所有实体在进入它们之前都应该处于非活动状态,此时可以开始进行模拟-出于这个原因,活动区域应向显示区域右侧扩展一定数量,以便实体具有一些初始时间在显示之前运行其模拟。 一旦实体离开活动区域(向左),它们就可以停止其模拟-如果需要,可以将其删除。

因此,在示例图片中:

  • E1已经通过活动区域,不再需要(可以将其禁用/删除)
  • E2处于活动状态并且可见(当前显示)
  • E3处于活动状态但尚不可见
  • E4E5尚未激活,并且仅在玩家靠近它们进入活动区域后才会变为活动状态

至于如何处理实体,这取决于世界的大小,实体的数量等。

一种方法是在实体进入活动区域后创建/加载它们-在这种情况下,实体应延伸到显示右侧足够远的位置,以便它们在进入显示区域之前有足够的时间来创建/加载。 对于可能有成千上万个实体的大世界,这是最好的方法。 在这种情况下,您可能还需要对您的世界进行某种细分,以便可以在不检查每个实体的情况下排除大量实体,而无需检查每个实体-固定大小的“块”阵列(每个包含其中的实体)将起作用在大多数情况下,对于一个简单的2D侧滚动条来说,效果很好。

另一种方法是在开始时加载所有对象,并在它们进入活动区域后才对其执行仿真更新(例如物理,运动,碰撞检测)。 这种方法适用于较小的领域,并提供了更容易的实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM