16个不稳定版本 (6个破坏性更新)

0.7.6 2024年6月2日
0.7.4 2024年5月11日
0.7.2 2024年3月17日
0.5.1 2023年8月11日
0.5.0 2023年7月18日

#236 in 游戏开发

Download history 4/week @ 2024-04-24 171/week @ 2024-05-08 21/week @ 2024-05-15 22/week @ 2024-05-22 289/week @ 2024-05-29 61/week @ 2024-06-05 10/week @ 2024-06-12 1/week @ 2024-06-19 4/week @ 2024-07-03 17/week @ 2024-07-10 24/week @ 2024-07-17 23/week @ 2024-07-24 49/week @ 2024-07-31

100 个月下载量
用于 bevy_sparse_tilemap

MIT 许可证

3.5MB
822

Bevy的快速瓦片地图

Crates.io docs

bevy提供闪电般的瓦片地图。

功能

  • 非常高的渲染性能(数百fps,很大程度上独立于地图大小)。
  • 可以通过多个地图实例或自定义着色器逻辑实现多个图层。
  • 矩形和轴测(例如等距)瓦片地图。
  • 坐标转换,例如计算鼠标光标在地图上的位置。
  • 瓦片可以通过“支配”规则或透视重叠。透视模式允许正交相机如3D查看,即瓦片不需要是平的,可以是等距的“对象”(见示例)。
  • 可选的自定义网格,地图作为纹理。
  • 颜色渐变以着色整个地图。
  • 可以应用自定义着色器代码以实现每瓦片效果,如着色或动画
  • 瓦片可以使用大于单个瓦片的纹理。(见下方的截图)。
  • 通过自定义着色器代码实现任意边界形状。
  • 支持两种类型的“动画”,你可以
    • 定期从系统更新瓦片索引(见 动画示例
    • 注入一些自定义着色器代码,该代码可以以任何方式在WGSL中表达的方式来动画化瓦片。

屏幕截图

iso_perspective

等距透视渲染。

custom_mesh

网格不一定是矩形。

patterns

瓦片可以使用更大的纹理,并且(通过自定义着色器代码)具有任意边界形状。

查看screenshots/了解更多。

工作原理

整个地图作为一个单个四边形渲染,并使用自定义着色器负责在正确位置渲染正确的瓦片。

该功能通过使用具有瓦片索引的存储缓冲区和包含瓦片的瓦片图集来实现。通过一些巧妙的采样,瓦片可以以正确的视角重叠,因此“瓦片”实际上可以是任何等距对象。《em>Bevy-fast-tilemap 将存储缓冲区存储在特殊材质中,您可以访问和修改它(见 examples/)。瓦片图集应由您提供(见 assets/ 以获取图集示例)。

截至本文撰写之时,这应该比大多数其他 Bevy 瓦片图实现要快得多。

局限性

  • 仅在 Windows/WSL 上进行了测试,不支持 WASM
  • 目前不支持旋转或缩放持有地图的实体(它看起来不会像您预期的样子)。当然,您仍然可以缩放/旋转摄像机以实现任何此类效果。
  • 目前不支持在 3D 环境中使用地图。

如果您不需要 bevy_fast_tilemap 的全部性能,并且正在寻找一种支持更多瓦片形状并允许将每个瓦片视为单独实体的方法,请查看 bevy_ecs_tilemap,它(以及其他一些内容)启发了这项工作。

示例

查看 examples/ 文件夹以获取概述。您可以像这样运行示例

cargo run --example bench
cargo run --example animation
cargo run --example iso_perspective
cargo run --example custom_shader_code
cargo run --example patterns
cargo run --example updates
...

Bevy 兼容性

bevy bevy_fast_tilemap
0.10 0.1.0 - 0.4.0
0.11 0.5.0
0.12 0.6.0
0.13 0.7.0 - 0.7.6

依赖项

~20–47MB
~755K SLoC