【问题标题】:Kivy - Optimization For Hand-Helds (Android, IOS, etc)Kivy - 优化手持设备(Android、IOS 等)
【发布时间】:2016-11-30 03:55:14
【问题描述】:

我一直担心游戏设计的优化问题,需要向更有经验的 kivy 用户询问一些问题。

哪个真正更快?

假设您将图形指令存储在类属性中。如果您要每帧在屏幕上更新许多图形,但又不添加或删除画布,Ask_Update 似乎是合格的选择。

假设您确实添加和删除了足够多的图形片段。只清除 Canvas 和 canvas.add 存储的指令会更好吗?

每次删除或添加后调用 Clear 会更好吗?与 Clearing 和 canvas 相比,这似乎是一种痛苦。将图形添加回来。

矢量....

向量的优化程度如何?函数/方法是一个缓慢的过程吗?只是想知道,因为我过去使用过 3D 引擎,但调用速度很慢,而且通常是数学上的。

对于在手持设备上运行的游戏应用来说,什么才是好的帧速率?

我也想知道删除实例。 kivy 是否有删除实例的特殊调用,或者通常的 del 调用(在运行清理函数之后)和 python 垃圾收集就足够了吗?

我现在正在研究,因为我不想开发一些东西只是为了意识到我不知道 Kivy 的“dos-and-donts”。

【问题讨论】:

    标签: android optimization kivy frame-rate


    【解决方案1】:

    清除画布效率低下,除非您真的想删除所有内容,否则不要这样做。

    您通常不需要调用 ask_update。

    Kivy 的向量并没有特别优化,它们只是列表的包装器,但这对您来说实际上可能不是问题。

    一个好的帧率目标是 60fps。

    您可以查看KivEnt,了解 Kivy 性能特别好的游戏引擎。

    【讨论】:

    • 我进行了测试,发现不清除画布会导致帧率崩溃。如果您考虑 3D 引擎的工作原理,每帧都会重新绘制,从而清除最后绘制的帧。清除画布和重绘时遵循相同的逻辑。您所做的只是构建场景图...将需要绘制的内容发送到 gpu,而不是在下一帧中发送根本不需要绘制的任何内容(例如移除死去的怪物)。通过不清除画布,您会将最后一帧内容留在那里,这可以解释帧速率崩溃。
    • 听起来你没有清除画布,但确实在每一帧都添加了新的东西。不要那样做,更新已经添加到画布的现有画布对象。
    • 如果你想添加/删除对象,添加或删除那些特定的对象,而不是一次全部。当您这样做时,您会强制在 cpu 上重新计算所有内容并再次传递给 gpu,这正是您不希望发生的事情。
    猜你喜欢
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多