{"id":15137983,"url":"https://github.com/joshuajbouw/bevy_tilemap","last_synced_at":"2025-09-29T06:31:13.841Z","repository":{"id":43333274,"uuid":"309298480","full_name":"joshuajbouw/bevy_tilemap","owner":"joshuajbouw","description":"Tilemap with chunks for the Bevy game engine.","archived":true,"fork":false,"pushed_at":"2022-03-07T19:02:45.000Z","size":1584,"stargazers_count":177,"open_issues_count":31,"forks_count":45,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-01-11T18:48:45.551Z","etag":null,"topics":["bevy","game-jam"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/joshuajbouw.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-11-02T08:05:48.000Z","updated_at":"2024-09-11T00:49:51.000Z","dependencies_parsed_at":"2022-08-31T05:10:11.629Z","dependency_job_id":null,"html_url":"https://github.com/joshuajbouw/bevy_tilemap","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshuajbouw%2Fbevy_tilemap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshuajbouw%2Fbevy_tilemap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshuajbouw%2Fbevy_tilemap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshuajbouw%2Fbevy_tilemap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joshuajbouw","download_url":"https://codeload.github.com/joshuajbouw/bevy_tilemap/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234597573,"owners_count":18857980,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bevy","game-jam"],"created_at":"2024-09-26T07:04:06.759Z","updated_at":"2025-09-29T06:31:08.458Z","avatar_url":"https://github.com/joshuajbouw.png","language":"Rust","funding_links":[],"categories":["Plugins and Crates"],"sub_categories":["2D"],"readme":"\u003ch1 align=\"center\"\u003eBevy Tilemap\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg width=\"600\"\n        alt=\"Bevy Tilemap logo\"\n        src=\"https://github.com/joshuajbouw/bevy_tilemap/raw/master/docs/img/logo.gif\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/joshuajbouw/bevy_tilemap\" alt=\"github\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/github-joshuajbouw/bevy__tilemap-8da0cb?style=for-the-badge\u0026logo=github\" height=\"20\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://crates.io/crates/bevy_tilemap\" alt=\"crates.io\"\u003e\n        \u003cimg src=\"https://img.shields.io/crates/v/bevy_tilemap.svg?style=for-the-badge\" height=\"20\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://docs.rs/bevy_tilemap\" alt=\"docs.rs\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/docs.rs-bevy__tilemap-66c2a5?style=for-the-badge\u0026logoColor=white\u0026logo=data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPjxwYXRoIGZpbGw9IiNmNWY1ZjUiIGQ9Ik00ODguNiAyNTAuMkwzOTIgMjE0VjEwNS41YzAtMTUtOS4zLTI4LjQtMjMuNC0zMy43bC0xMDAtMzcuNWMtOC4xLTMuMS0xNy4xLTMuMS0yNS4zIDBsLTEwMCAzNy41Yy0xNC4xIDUuMy0yMy40IDE4LjctMjMuNCAzMy43VjIxNGwtOTYuNiAzNi4yQzkuMyAyNTUuNSAwIDI2OC45IDAgMjgzLjlWMzk0YzAgMTMuNiA3LjcgMjYuMSAxOS45IDMyLjJsMTAwIDUwYzEwLjEgNS4xIDIyLjEgNS4xIDMyLjIgMGwxMDMuOS01MiAxMDMuOSA1MmMxMC4xIDUuMSAyMi4xIDUuMSAzMi4yIDBsMTAwLTUwYzEyLjItNi4xIDE5LjktMTguNiAxOS45LTMyLjJWMjgzLjljMC0xNS05LjMtMjguNC0yMy40LTMzLjd6TTM1OCAyMTQuOGwtODUgMzEuOXYtNjguMmw4NS0zN3Y3My4zek0xNTQgMTA0LjFsMTAyLTM4LjIgMTAyIDM4LjJ2LjZsLTEwMiA0MS40LTEwMi00MS40di0uNnptODQgMjkxLjFsLTg1IDQyLjV2LTc5LjFsODUtMzguOHY3NS40em0wLTExMmwtMTAyIDQxLjQtMTAyLTQxLjR2LS42bDEwMi0zOC4yIDEwMiAzOC4ydi42em0yNDAgMTEybC04NSA0Mi41di03OS4xbDg1LTM4Ljh2NzUuNHptMC0xMTJsLTEwMiA0MS40LTEwMi00MS40di0uNmwxMDItMzguMiAxMDIgMzguMnYuNnoiPjwvcGF0aD48L3N2Zz4K\" height=\"20\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/joshuajbouw/bevy_tilemap/actions\" alt=\"build status\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/workflow/status/joshuajbouw/bevy_tilemap/CI/master?style=for-the-badge\" height=\"20\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/joshuajbouw/bevy_tilemap/blob/master/LICENSE\" alt=\"license\"\u003e\n        \u003cimg src=\"https://img.shields.io/crates/l/bevy_tilemap.svg?style=for-the-badge\" height=\"20\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch4 align=\"center\"\u003eChunk based tilemap for Bevy game engine.\u003c/h4\u003e\n\nBevy Tilemap allows for Bevy native batch-rendered tiles in maps to be \nconstructed with chunk based loading, efficiently.\n\nSimple yet refined in its implementation, it is meant to attach to other \nextensible plugins that can enhance its functionality further. Hand-crafted\ntilemaps with an attentive focus on performance, and low data usage.\n\n## WARNING\nThis project is still experimental and the API will likely break often before \nthe first release. It uses an experimental game engine which too may break the\nAPI. Semantic versioning will be followed as much as possible and the \ncontributors will as much as they possibly can try to keep the API stable.\n\nIf you have API suggestions, now is the time to do it.\n\n## Features\n* Perfect for game jams.\n* Easy to use and *mostly* stable API with thorough documentation.\n* Endless or constrained dimension tilemaps.\n* Batched rendering of many tiles.\n* Square and hex tiles.\n\n## Build Features\n* Serde support\n* Extra types\n\n## Design \nThis is not intended to be just another Tilemap. It is meant to be a framework \nand extensible by design, like Bevy. As well as work done to keep it as close to \nBevy API as possible while keeping in mind of Rust API best practices. It is not\nmeant to be complicated and created to be simple to use but give enough \nfunctionality to advanced users.\n\nLess time fiddling, more time building\n\n## Usage\nAdd to your `Cargo.toml` file:\n```toml\n[dependencies]\nbevy = \"0.5\"\nbevy_tilemap = \"0.4\"\n```\n\n## Simple tilemap construction\n\nAt the most basic implementation, there is not a whole lot that is required to\nget the tilemap going as shown below.\n\n```rust\nuse bevy_tilemap::prelude::*;\nuse bevy::asset::HandleId;\nuse bevy::prelude::*;\n\n// Build a default Tilemap with 32x32 pixel tiles.\nlet mut tilemap = Tilemap::default();\n\n// We need a Asset\u003cTextureAtlas\u003e. For this example we get a random one as a placeholder.\nlet texture_atlas_handle = Handle::weak(HandleId::random::\u003cTextureAtlas\u003e());\n\n// Set the texture atlas for the Tilemap\ntilemap.set_texture_atlas(texture_atlas_handle);\n\n// Create tile data\nlet tile = Tile {\n    // 2D location x,y (units are in tiles)\n    point: (16,16),\n    \n    // Which tile from the TextureAtlas\n    sprite_index: 0,\n    \n    // Which z-layer in the Tilemap (0-up)\n    sprite_order: 0,\n    \n    // Give the tile an optional green tint\n    tint: bevy::render::color::Color::GREEN,\n    };\n\n// Insert a single tile\ntilemap.insert_tile( tile);\n```\n\nOf course, using the `Tilemap::builder()` this can be constructed with many more\nadvanced features.\n\n* 3D and 2D tilemaps.\n* Texture atlas.\n* Dimensions of the tilemap.\n* Dimensions of a chunk.\n* Dimensions of a tile.\n* Adding Z render layers\n* Automated chunk creation.\n* Auto-spawning of tiles based on view.\n\nWith many more features planned for future updates to bring it up to par with\nother tilemap implementations for other projects.\n\n## Future plans\n\nThere is still a lot to do but the API is now stable and should be fine for a\nwhile now. The next release is focused on added automated methods and system.\n\n- **Auto-tile**: Picks the right tile based around the neighbours of the tile.\n- **Tile import**: Imports tiles from a file from multiple formats.\n\n## Building\n\n`bevy_tilemap` is only guaranteed to work from stable Rust toolchain and up. This\nis to be inline with the rest of Bevy engine.\n\nOnce you have a development environment, Bevy Tilemap can be fetched using git:\n\n```bash\n$ git clone --recursive https://github.com/joshuajbouw/bevy_tilemap/\n```\n\nand then built using cargo:\n\n```bash\n$ cargo build --example random_dungeon\n```\n\ncargo can also be used to run tests:\n\n```\n$ cargo test\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoshuajbouw%2Fbevy_tilemap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoshuajbouw%2Fbevy_tilemap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoshuajbouw%2Fbevy_tilemap/lists"}