bevy_entitiles 0.2.0

A tilemap library for bevy. With many algorithms built in.
docs.rs failed to build bevy_entitiles-0.2.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: bevy_entitiles-0.12.0

Bevy EntiTiles 🗺️

A tilemap library for bevy. With many algorithms built in.

This crate is still in need of optimization and development. So don't use this in your formal projects. Anyway, I think it's already capable to be a part of your project.

Strongly recommend that you take a look at the bevy_ecs_tilemap library first. I took this crate as the reference and learnt the basis of bevy rendering.

This repo is under maintenance as long as this message exists. ( Hope this message can bring you peace of mind. Yeah, that's childish :p )

Notice that the following progress may not up to date. Check the README.md in dev brach to get the latest progress!

Currently Working On

  • Optimize Frustum Culling
  • Optimize the data structure of wfc and pathfinding

Future Goals

  • Wave Function Collapse ( Optimization )
  • Pathfinding ( Optimization )
  • Tilemap-Link
  • Runtime Mesh & Texture Baking
  • Tilemap Serializing
  • SSAO
  • Volumetric Clouds / Fog
  • Wang Tilling
  • Tilemap Mask
  • Frustum Culling ( Isometric Specific Optimization )
  • Physics ( With bevy_rapier and bevy_xpbd )

Show Case

Platform: 10600KF

Frustum Culling

Bevy 0.11.3, crate 0.1.1, 1000x1000 tiles

Wave Function Collapse

In the following case, each tile has at least one corresponding color gap with its neighboring tiles

Due to the lack of optimization and the straightforward implementation of this algorithm, its execution time increases rapidly as the map size grows. And the likelihood of failure also increases.

Size Time(avg of 3 tests)
5x5 3.92 ms
10x10 33.312 ms
20x20 490.950 ms
30x30 2280.121 s
50x50 18838.542 s

Bevy 0.11.3, crate 0.2.0 (dev), None weighted, retrace_strength = 2

Versions

Bevy ver EntiTiles ver
0.12.x 0.2.x
0.11.x 0.1.x