20 releases (10 breaking)
new 0.11.0 | Oct 7, 2024 |
---|---|
0.10.0 | Jul 5, 2024 |
0.10.0-rc.1 | Jun 16, 2024 |
0.7.0 | Mar 4, 2024 |
0.2.2 | Nov 30, 2023 |
#184 in Game dev
229 downloads per month
550KB
13K
SLoC
Bevy EntiTiles 🗺️
NO WASM SUPPORT SO FAR!
A 2d tilemap library for bevy. With many useful algorithms/tools built in.
It's NOT recommended to use the code in the dev
branch! There's full of incomplete code and even errors in it! But the master
branch would be ok if you can't wait to try out new features.
Currently, documentation is not very comprehensive. If you encounter any problems, please feel free to open an issue or simply ping me or DM @443eb9 on the bevy discord server.
This crate is largely inspired from bevy_ecs_tilemap
(Rendering) and bevy_ecs_ldtk
(LDtk entity spawning)
Why EntiTiles
- Up-to-date Once the new version of bevy is released,
bevy_entitiles
will catch up mostly in 12 hours. - Performant Able to render 1000x1000 tilemaps at 200+fps on 10600KF + 3070.
- Various Built-in Stuff Useful algorithms(pathfinding, WFC...) and tools(LDtk and Tiled importer...) are built in.
Warning!
You should NEVER install the following versions! They contain critical bugs and are not recommended to use!
0.6.0
Limitations
- Supports up to 4 rendered layers* per tilemap.
* Rendered layer means the layer that will be rendered. You can insert as many layers as you want, but only the 4 top layers will be rendered.
Future Goals
The higher the priority, the more towards the front in the following list.
- More Tilemap Shapes (Triangle, Voronoi)
- Pathfinding (Parallel A* Pathfinding, Jump Point Search)
- LDtk Support (Automatically map
EntityRef
to real entities) - Tiled Support (Algorithm stuff, auto map
object
type to real entities) - Tilemap Serializing (Custom Binary Format)
- Wang Tiling
- Tilemap Mask
Frustum CullingPhysicsInfinite TilemapChunk UnloadingCustom Material
Looking for render features that have been removed? They're moved into bevy_incandescent
(a 2d lighting crate currently wip)!
Feature Flags
Flag | Funtionality |
---|---|
algorithm |
Implementation of algorithms |
atlas |
Use calculated uv coordinates on a entire texture instead of using texture arrays. |
debug |
Show some debug info including aabbs for chunks and tilemaps, path finding results etc. |
ldtk |
LDtk support. |
multi-threaded |
Support algorithms to run asynchronously. Disable this if you are targeting wasm. |
physics |
Physics support using bevy_xpbd . |
serializing |
Save and load the tilemap from files. Also contains tools for upgrading files. |
tiled |
Tiled support. |
Coordinate Systems
The x and y axes in the tilemaps are the index axes. And those x and y on a single tile mean the actual mesh size. Which you can control using tile_render_size
.
legs
here are mathematically incorrect, please consider it as a new concept.
Showcases
See the README
in examples
Assets
Versions
LDtk version is the version that json api has changed. So you can also use 1.5.2 in 0.2.7. See this for more information.
It doesn't mean all the features from the corresponding versions of LDtk and Tiled are supported, but this crate is using the source tilemap file generated from them!
Bevy ver | EntiTiles ver | LDtk ver | Tiled ver |
---|---|---|---|
0.14.x | 0.10.0 | 1.5.3 | 1.11.0 |
0.13.x | 0.6.0-0.9.0 | 1.5.3 | 1.10.2 |
0.12.x | 0.4.0-0.5.0 | 1.5.3 | 1.10.2 |
0.12.x | 0.3.0 | 1.5.3 | Not supported |
0.12.x | 0.2.7 | 1.5.1 | Not supported |
0.12.x | 0.2.3-0.2.6 | 1.4.1 | Not supported |
0.12.x | 0.2.0-0.2.2 | Not supported | Not supported |
0.11.x | 0.1.x | Not supported | Not supported |
Versions before 0.3.0 are not named following Semantic Versioning
Dependencies
~38–76MB
~1.5M SLoC