GameplayKit:超越游戏
苹果公司将GameplayKit宣传为“为构建游戏提供基础工具和技术的框架” ,这是一个出色的框架。 但是这里有很多解决方案,在构建任何其他应用程序时都可以完美使用。 我想描述一下那些在Bikemap中广泛使用的方法: 空间分区,状态机,规则系统和随机化。 四叉树的空间分区 四叉树用于组织二维空间中的空间数据。 在四叉树中,每个级别的每个节点都分为四个象限,如下所示。 当一个象限包含多个对象时,该树将该区域细分为四个较小的象限,从而在树上添加一个级别。 Bikemap应用程序可处理自行车路线,并且每个路线都有数百甚至数千个坐标。 当用户导航到轨道的最近点时,或者当显示或调出导航指令时,业务逻辑严重依赖于四叉树。 所有路线坐标,指令,POI都添加到树中,并且随着状态机的每次更新(请参见下文),都在树中查询要显示的项目和用户周围的项目。 例如,如果路线很长,则仅渲染屏幕上可见的多边形。 此外,如果用户在某个POI或曲目的结尾附近,则可以添加通知。 四叉树非常非常快。 在具有100,000个对象的树中查找最近的元素大约需要0.022秒。 尽管Apple有自己的实现,但其使用受到限制(例如,不搜索最近的元素)。 因此,我们最终实现了自己的四叉树。…