【问题标题】:How many surfaces is reasonable?多少个表面是合理的?
【发布时间】:2017-05-11 19:57:52
【问题描述】:
同时使用多少个pygame.Surface是合理的?
更准确地说,成本是多少:
- 在记忆中保留一个表面?
- 将一个表面粘贴到另一个表面上?
因此,对于与应用程序相关的其他操作,可以在列表(或任何其他容器)中保留多少个表面,以及在每一帧可以对多少个表面进行 blitted?
由于这可能过于宽泛,这里是一个具体的情况。我想制作一个带有重复图案的动画背景。我希望图案的每个元素都独立移动,因此我为每个元素使用一个表面。
如果我想显示一百个元素,每个元素使用一个表面是否仍然可以接受?
【问题讨论】:
标签:
python
performance
pygame
pygame-surface
【解决方案1】:
我制作的游戏中有超过一万个表面的阵列。它运行得很好。你不应该害怕使用很多表面,发疯吧。
如果你看过《饥荒》游戏,我正在制作一款类似的游戏。我有十五个不同的生物群落,每个生物群落都有多个地砖以供变化。仅此一项就将其推向了 100 多个表面。然后我有一堆不同的植物,比如树木、浆果丛、肉食性快乐植物等。这些植物种类繁多,你可以在某些地方一次加载一百个。同样,这些中的每一个都有变化。我也有很多移动的实体,比如巨型蜘蛛和类似的东西。某些类型的实体需要超过一百个表面,仅用于它们的各种可能动作可能发生的所有动画。
总而言之,我可能一次最多显示一千个表面,加载超过两万个。游戏运行良好,甚至可以以 60 fps 运行;但并非没有像预期的那样广泛使用线程。
结论:假设没有限制,因为可能没有限制。