3个不稳定版本
0.4.0 | 2021年4月7日 |
---|---|
0.1.1 | 2021年1月12日 |
0.1.0 | 2021年1月11日 |
#36 in #tilemap
57 每月下载量
用于 bevy_tilemap
37KB
1K SLoC
Bevy Tilemap
基于块的面片地图,适用于Bevy游戏引擎。
Bevy Tilemap允许使用基于块的加载,有效地构建地图中的原生批量渲染面片。
实现简单而精致,旨在附加到其他可扩展插件,以进一步增强其功能。手工制作的地图,注重性能和低数据使用。
警告
此项目仍处于实验阶段,API可能在第一个版本发布之前经常中断。它使用实验性游戏引擎,这也可能破坏API。尽可能遵循语义版本控制,贡献者将尽可能保持API的稳定性。
如果您有API建议,现在是时候了。
特性
- 非常适合游戏制作马拉松。
- 易于使用且大部分稳定的API,具有详尽的文档。
- 无限或有限维度的地图。
- 大量面片的批处理渲染。
- 正方形和六边形面片。
构建功能
- Serde支持
- 额外类型
设计
这不仅仅是一个Tilemap。它旨在成为一个框架,并且像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::*;
// Build a default Tilemap with 32x32 pixel tiles.
let mut tilemap = Tilemap::default();
// We need a Asset<TextureAtlas>. For this example we get a random one as a placeholder.
let texture_atlas_handle = Handle::weak(HandleId::random::<TextureAtlas>());
// Set the texture atlas for the Tilemap
tilemap.set_texture_atlas(texture_atlas_handle);
// Create tile data
let tile = Tile {
// 2D location x,y (units are in tiles)
point: (16,16),
// Which tile from the TextureAtlas
sprite_index: 0,
// Which z-layer in the Tilemap (0-up)
sprite_order: 0,
// Give the tile an optional green tint
tint: bevy::render::color::Color::GREEN,
};
// Insert a single tile
tilemap.insert_tile( tile);
当然,使用 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
lib.rs
:
Bevy Tilemap 类型
所有Bevy或Glam不支持但有用的类型都包含在这里。
依赖关系
~24–61MB
~485K SLoC