#tilemap #json #tile #2d #json-schema #json-format #map-editor

ldtk

用于读取LDtk 2D瓦片地图格式的crate

7个不稳定版本 (3个重大更改)

0.4.1 2021年4月26日
0.4.0 2021年4月25日
0.3.0 2021年3月10日
0.2.0 2021年1月26日
0.1.0 2021年1月3日

#1038游戏开发


3 个crate中使用 2 个直接使用

自定义许可

50KB
293

ldtk

Crates.io Docs.rs Katharos License

读取LDtk瓦片地图格式的crate。

此crate实现了使用serde序列化和反序列化LDtk地图格式的Rust结构。

示例

Cargo.toml:

# Note: We must specify the version of LDtk we want to support in a feature flag
ldtk = { version = "0.4.0", features = ["ldtk-v0-9-3"] }

main.rs:

use ldtk::Project;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Load the map
    let map: Project =
        serde_json::from_slice(include_bytes!("../examples/full-features.ldtk"))?;

    // Debug print the map
    dbg!(map);

    Ok(())
}

额外文档

有关在游戏中使用LDtk项目结构的更多信息,请参阅LDtk文档

命名约定

此crate在几乎所有情况下都使用与原始JSON格式相同的结构字段名称。此规则的例外是名称为type的字段。在这种情况下,字段的名称将以其结构名称为前缀,转换为蛇形,例如field_def_type

__field_name约定

LDtk地图格式的约定是使用两个下划线前缀某些便利字段,例如__tile_src_rect。这些字段是冗余的,因为这些信息也在项目结构中的其他地方存在,但在某些情况下,它们可以使得遍历项目结构变得更加方便。

双下划线前缀表示该字段是私有字段或实现细节。

构建配置 & 功能

整个crate自动从JSON Schema生成,该Schema来自LDtk仓库,并且可以自动更新为LDtk版本。

默认情况下,crate需要您传递一个功能,指明内置crate的JSON Schema版本,这样就不需要网络访问来构建,但您也可以提供download-schema cargo功能,以便crate从LDtk仓库下载JSON Schema(请参阅以下“下载Schema”)。

此crate目前内置以下LDtk版本的Schema

  • v0.9.3
  • v0.8.1(已修复,见下文说明)
  • v0.7.0

特定版本的特性标志格式如下:ldtk-v0-9-3。注意,版本中的点已被替换为破折号,以符合 cargo 的特性命名约定。

注意:在版本 0.8.1 中,有一个在 JSON 架构中被标记为非空的字段,但在 LDtk 样本地图中的一个字段是空的。我们修复了 JSON 架构,使该字段可空,以便地图可以正确加载。

随着 LDtk 新版本的发布,我们可能会添加新的内置架构。这些架构将各自位于新的特性标志下,这样架构的更新就不需要是破坏性更改。

下载架构

当提供 download-schema 特性时,您可以在构建时通过设置环境变量 LDTK_VERSION 来指定为哪个版本的 LDtk 构建这个包。默认情况下,LDTK_VERSION 将为 master,这将从 LDtk git 仓库的 master 分支拉取最新架构。

许可

LDtk-rs 使用 Katharos 许可证,该许可证对您可以使用它进行的内容施加某些限制。在使用 LDtk-rs 为您的项目之前,请阅读并理解这些条款。

类似项目与 Bevy 集成

  • bevy_ldtk:一个用于加载 LDtk 地图的 Bevy 插件,使用此包。
  • ldtk_rust:由 QuickType 创建的 LDtk 绑定的修改版本,包含一个很好的 Bevy 示例,希望对非 Bevy 游戏引擎也很有用。
  • 另一个 bevy-ldtk:用于加载 LDtk 地图的 Bevy 插件(进行中)。

依赖项

~0.6–2.4MB
~41K SLoC