#tile #tilemap #bevy #game-engine #engine #game

bevy_tilemap

适用于Bevy游戏引擎的块状瓦片地图,一个简单驱动的游戏引擎和应用框架

9个不稳定版本 (3个破坏性更新)

0.4.0 2021年4月7日
0.3.1 2021年1月12日
0.2.2 2020年11月22日
0.1.1 2020年11月4日

#1829 in 游戏开发

Download history 23/week @ 2024-03-11 18/week @ 2024-03-18 5/week @ 2024-03-25 34/week @ 2024-04-01 13/week @ 2024-04-08 13/week @ 2024-04-15 24/week @ 2024-04-22 12/week @ 2024-04-29 14/week @ 2024-05-06 16/week @ 2024-05-13 16/week @ 2024-05-20 10/week @ 2024-05-27 17/week @ 2024-06-03 9/week @ 2024-06-10 13/week @ 2024-06-17 15/week @ 2024-06-24

56 每月下载次数

MIT 许可证

540KB
4K SLoC

Bevy Tilemap

Bevy Tilemap logo

基于块的Bevy游戏引擎瓦片地图。

Bevy Tilemap允许以块为基础高效地构建地图,以实现Bevy原生的批量渲染瓦片。

实现简单但经过精心设计,旨在附加到其他可扩展插件,以进一步增强其功能。手工制作的瓦片地图,注重性能和低数据使用。

警告

此项目仍处于实验阶段,API可能会在第一次发布之前经常发生变化。它使用一个实验性的游戏引擎,这也可能破坏API。尽可能遵循语义版本控制,并且贡献者将尽可能尝试保持API稳定。

如果您有API建议,现在是时候提出建议了。

功能

  • 非常适合游戏马拉松。
  • 易于使用且基本上稳定的API,拥有详尽的文档。
  • 无限或有限维度瓦片地图。
  • 批量渲染多个瓦片。
  • 正方形和六边形瓦片。

构建功能

  • Serde支持
  • 额外类型

设计

这不仅仅是一个瓦片地图。它旨在成为一个框架,并且像Bevy一样具有可扩展性。同时,还进行了工作,以使其尽可能接近Bevy API,同时考虑Rust API的最佳实践。它不是为了复杂而设计的,而是为了简单易用,但提供了足够的功能以满足高级用户的需求。

减少调整时间,增加构建时间

使用方法

将以下内容添加到您的Cargo.toml文件中

[dependencies]
bevy = "0.5"
bevy_tilemap = "0.4"

简单的瓦片地图构建

在最基本的实现中,以下列出的内容不是必需的,以使瓦片地图开始运行。

use bevy_tilemap::prelude::*;
use bevy::asset::HandleId;
use bevy::prelude::*;

// This must be set in Asset<TextureAtlas>.
let texture_atlas_handle = Handle::weak(HandleId::random::<TextureAtlas>());

let mut tilemap = Tilemap::new(texture_atlas_handle, 32, 32);

// Coordinate point with Z order.
let point = (16, 16, 0);
let tile_index = 0;
tilemap.set_tile(point, tile_index);

tilemap.spawn_chunk_containing_point(point);

当然,使用Tilemap::builder()可以构建具有更多高级功能的瓦片地图。

  • 3D和2D瓦片地图。
  • 纹理图集。
  • 瓦片地图的尺寸。
  • 块的尺寸。
  • 瓦片的尺寸。
  • 添加Z渲染层
  • 自动创建块。
  • 根据视图自动生成瓦片。

未来更新将增加更多功能,使其与其他项目的瓦片地图实现相匹配。

未来计划

还有很多事情要做,但API现在已稳定,应该可以维持一段时间。下一个版本将专注于添加自动化方法和系统。

  • 自动瓦片:根据瓦片的邻居选择正确的瓦片。
  • 瓦片导入:从多种格式的文件导入瓦片。

构建

bevy_tilemap仅保证从稳定的Rust工具链开始工作。这是与Bevy引擎的其他部分保持一致。

一旦您有了开发环境,就可以使用git获取Bevy Tilemap

$ git clone --recursive https://github.com/joshuajbouw/bevy_tilemap/

然后使用cargo进行构建

$ cargo build --example random_dungeon

cargo还可以用于运行测试

$ cargo test

依赖项

~26–69MB
~528K SLoC