#bevy-ecs #tilemap #maps #sparse #tile #map #size

bevy_sparse_tilemap

一个针对Bevy游戏引擎的瓦片地图Crate,专注于大型地图大小和ECS稀疏地图

8个版本

0.2.5 2024年7月8日
0.2.4 2024年7月8日
0.1.0 2024年3月2日
0.0.1 2023年8月12日

676游戏开发

Download history 116/week @ 2024-07-01 609/week @ 2024-07-08 23/week @ 2024-07-15 20/week @ 2024-07-22 137/week @ 2024-07-29

每月205次下载

MIT/Apache

125KB
2.5K SLoC

bevy_sparse_tilemap

Crates.io docs license Crates.io

一个针对Bevy游戏引擎的瓦片地图Crate,专注于大型地图大小和ECS稀疏地图

特性

ECS稀疏瓦片地图

bevy_sparse_tilemap 仅生成必要的最少实体,并不将瓦片与实体一对一映射。这允许它避开当前与渲染相关的Bevy性能问题,并解锁对额外大型地图的显著更高的基线性能。

bevy_sparse_tilemap 中的瓦片在每个块上使用自定义存储。当您真的需要保存额外的信息或需要访问ECS以获取特定瓦片类型时,bevy_sparse_tilemap 支持随意生成映射到特定瓦片的实体。

bevy_sparse_tilemap 内置API来处理生成、销毁和访问瓦片可选实体以及瓦片数据。

内部支持稀疏和密集内部存储。两者都是ECS稀疏(生成的实体数量最少),但稀疏地图不需要用户为每个瓦片提供数据。

多种地图类型

bevy_sparse_tilemap 使用基于泛型特质的系统支持不同的地图类型,这提供了极大的灵活性,以支持许多不同的地图类型。

当前支持

  • 六边形
  • 正方形

巨型地图大小

由于Crate的ECS稀疏性质,bevy_sparse_tilemap 避开了与渲染性能问题相关的Bevy当前的限制。这些限制是其他瓦片地图Crate遇到并阻碍其性能的原因。这使得 bevy_sparse_tilemap 在基线性能方面表现出色,允许使用类似 bevy_fast_tilemap 的智能渲染轻松处理高达15k x 15k的地图。

仅瓦片地图逻辑

此Crate专注于瓦片地图逻辑,并将渲染留给用户。

示例

有关如何使用 bevy_sparse_tilemap 以及简短示例的文档,请参阅 Docs.rs

有关Crate每个功能的更长时间示例,请参阅 Github示例

关于 bevy_ecs_tilemap 呢?

bevy_ecs_tilemap 是一个极好的Crate,可能将满足您的所有需求,您应首先考虑使用它。

如果您需要使用,请使用 bevy_ecs_tilemap

  • 您不需要非常大的地图(在我的测试中,bevy_ecs_tilemap 在200x200左右遇到性能问题)
  • 您希望每个瓦片都是一个独立的实体,以便进行ECS集成(此crate试图避免不必要的实体,并使用类似Voxel的方法)
  • 您希望有一个更成熟且功能更丰富的插件
  • 您希望瓦片地图渲染由您处理

如果您需要使用,请使用 bevy_sparse_tilemap

  • 您需要非常非常大的地图,与 bevy_ecs_tilemap 相比,bevy_sparse_tilemap 可以达到更大得多的地图尺寸。(bevy_fast_tilemap_example当前生成一个15000x15000的瓦片地图,运行在约900 fps)
  • 您愿意自己实现瓦片地图渲染(此crate提供了一个与bevy_fast_tilemap集成的示例,但该功能目前不是此crate的原生支持功能)

Bevy 版本

BST 版本 Bevy 版本
0.3 0.14
0.2 0.13
0.1 0.13

依赖项

~24–63MB
~1M SLoC