2015-09-12 46 views
1

我做游戏的Android与libGDX,并使用游戏引擎的这个特点:libGDX奇怪的FPS下降和调试

  • 声音,音乐
  • TextureAtlas(这个OBJ总数:2)
  • tilemap的
  • 简单手势检测
  • 良好AssetsManager的使用与使用后处置对象。

我有时会碰到一些奇怪的FPS滴。 FPS通常在59左右,然后第二次下降到39-42左右,此时游戏“冻结”一点,因此两帧之间的暂停很大。

我不知道究竟是什么问题,以及如何找到问题的根源,因为我无法用我的调试技巧掩盖它。

  1. 我检查了内存分配和GC acitivity =>没问题,那时候GC没有激活。
  2. 我试过方法跟踪,但它在追踪错误方面没有用处,因为只有跟踪使用了大量的资源,而FPS在启动时大约是10。
  3. 我经历了我的代码,并试图找到问题,但每个框架我做同样的事情,没有理由让FPS下降。

我不会在帖子上发布一些代码,因为我真的不知道代码的哪一部分可以造成问题。

我问你:你有没有用libGDX进行小测验,你是如何解决这个问题的,你知道我怎么用调试工具来发现错误。

感谢您的建议。

回答

0

有声音和Android的一些已知的小问题,特别是在三星设备(这可能是您的模拟器是什么)。

我怀疑这是造成这个问题的原因,并且如果您检查多个并发声音播放时的帧频,它会像您所描述的那样稍微下降。

尽你所能克服这一点的方法是尽可能降低声音/音乐文件的采样率,也可以将音乐存储为.mp3和声音作为.wav。

原因是声音作为wav文件会跳过不必要的解码,这会在.mp3中发生,当声音在内存中混合时。

希望这会有所帮助。

0

尝试禁用一个接一个的东西,直到看到FPS稳定。比如,评论一下粒子效应,爆炸声或者任何游戏效果。 看看libGDX Profiling

  • 检查您是否进行过多绘制调用或纹理切换。

  • 在渲染循环中的每个方法中逐个使用性能计数器 并查看哪一个花费的时间比应该多。