我正在开发一款具有相当大的正方形2D游戏区域的游戏.游戏区域是无框的,有边界(没有缠绕).我试图找出如何最好地划分这个世界以提高碰撞检测的性能.我不想检查每个实体是否与所有其他实体发生碰撞,而只是检查附近的实体是否存在碰撞和避障.
我对这个游戏世界有一些特别关注......
我希望能够同时在游戏世界中使用大量实体.但是,%的实体不会与相同类型的实体发生冲突.例如,射弹不会与其他射弹碰撞.
我希望能够使用大量的实体大小.我希望最小实体和最大实体之间存在非常大的差异.
游戏世界中很少有静态或非移动实体.
我有兴趣使用类似于答案中描述的内容:Qualeree vs Red-Black树用于C++游戏?
我担心的是,世界的树细分能够处理实体中的大尺寸差异吗?为了让较小的实体足够分裂世界,较大的实体需要占据大量的区域,我担心这将如何影响系统的性能.
我的另一个主要问题是如何正确地保持被占领区列表的最新状态.由于存在大量移动实体和一些非常大的移动实体,看起来分割世界将产生大量开销以跟踪哪些实体占据哪些区域.
我主要寻找任何有助于减少碰撞检测次数和避障计算的好算法或想法.