2012-03-19 82 views
1

我的类RPG游戏有随机战斗。当玩家进入随机战斗时,我的游戏需要加载该战斗中使用的纹理(动画怪物,动画等)。纹理相当多,而且相当大(战斗非常强烈)。加载纹理时的动画屏幕

这样的过程消耗大量时间。当它加载时,整个屏幕冻结

游戏的地图会暂停,等待时间是显著 - 我个人觉得这恼人。

我买不起,因为,做一些数学后,我意识到预加载纹理

  • 如果我预装在游戏开始时所有的纹理,应用程序肯定会崩溃。
  • 如果我预装了在特定的地图中使用时,玩家进入地图纹理,应用非常有可能崩溃,以及。
  • 我只能买得起,当我需要他们来加载纹理,并且一旦战斗结束他们的处置。

我更喜欢,因为它影响了我的游戏的设计和概念,不使用“加载屏幕”的形象。我想避免这种方法。

如果我可以做一些动画载入纹理,这将是巨大的,这导致我的问题:这可能吗?你问什么样的动画?那么,怎么样......你还记得最终幻想在显然加载纹理时用于扭曲屏幕吗?类似的东西。但是,扭曲也是一个相当耗时的过程,所以也许只是一个很酷的逐帧动画或其他东西。

在写这个,我意识到,我可以做小的停顿纹理之间(有多个纹理),和这样的暂停期间,我更新屏幕代表动画的状态。然而,这是不太可能发生的,因为每个纹理都是2048x2048,所以动画会以相当缓慢(和烦人)的速度刷新。我宁愿避免这种情况。

回答

0

由于战斗应该是随机的,有可能预加载纹理并将其战斗发生之前,接下来的战斗?然后,只要加载完成,战斗就可以开始。

  1. 博弈决定战斗应该很快发生
  2. 生成随机相遇(怪物/背景的/ etc?)
  3. 的遭遇
  4. 启动纹理已加载后会遇到负载纹理

战斗仍然是随机的,只是在用户意识到战斗即将发生之前就已经确定了相遇。

+0

但即便如此,我不得不加载这种战斗所需的纹理。如果游戏决定“即将发生战斗”,它将不得不开始加载纹理。但如果这样做,游戏将会冻结并滞后。更糟糕的是,因为玩家不知道为什么会发生这种情况。 – Voldemort 2012-03-19 00:58:22

+0

@Omega:您无法在后台线程上加载纹理? – Coeffect 2012-03-19 01:00:02

+0

这是我不知道的。那会是怎样的呢? – Voldemort 2012-03-19 01:05:22

0

你可以先加载较低分辨率的纹理,并在后台线程(的NSOperation我认为)揭开序幕,负荷较大的纹理,并在完成时“交换”他们。

至于动画,很多游戏通过加载小纹理当玩家远离开始,越靠近,更高清晰度的纹理会“淡出”在

1

在类似的困境,我选择了

  1. 将我所有的动画纹理转换为压缩的PVR。加载时间(取决于设备)提高了2到4倍。任何由转换为PVR引起的人为因素在运动中都不明显。
  2. 我预加载了空闲的动画(几乎总是打开,除了在技能使用或伤害时),我在战斗场景淡入时做了这个,我以50毫秒的跳动速度控制淡入,每一帧我都会预热一个空闲空间(最多有8个,他们需要20个左右)。当一个动画成为联合国需要,我卸载它。另外,“伤害”动画过程中,我预取下技能动画。有趣的

负荷。祝您好运与您的游戏。

ps。不要相信模拟器的实际响应时间。快速转到设备以确定您是否确实存在性能问题。

pps。关于第1点,导致我的应用程序显着减小尺寸。