#map #game #story #validation #detail #mission2teegarden-b #teegarden

bin+lib mission2teegarden-b-map

mission2teegarden-b 的私有实现细节

3 个版本 (破坏性)

0.2.0 2023 年 7 月 14 日
0.1.0 2023 年 7 月 13 日
0.0.0 2023 年 7 月 2 日

#19 in #story

AGPL-3.0 或更高版本

44KB
807

此crate允许您为Mission to Teegarden b创建地图/关卡。它可以替代游戏二进制文件 mission2teegarden-b。此crate提供的所有功能游戏本身也提供。唯一的优点是此crate要小得多。

地图编辑器

《Mission to Teegarden b》允许通过使用Tiled 地图编辑器创建自定义地图。这包括对可用指令和故事的支持。

限制

存在一些条件和限制来定义地图的结构

  • 地图必须是有限的。
  • 所有图层必须是有限的。
  • 不能使用自定义瓦片集。因此只能使用Github上可用的瓦片集(BaseTiles.tsxObjectTiles.tsxPlayer.tsx)。
  • 所有图层必须是瓦片图层。
  • 第1层必须仅使用BaseTiles集合中的瓦片。
  • 第2层必须仅使用ObjectTiles集合中的瓦片。
  • 第3层必须仅使用Player集合中的瓦片。
  • 如果第1层的某个字段未设置,则默认使用Grass
  • 如果玩家i有一个起始位置,则所有玩家<i也必须有一个起始位置。
  • 至少玩家1必须有一个起始位置。
  • 如果没有设置全局目标,每个玩家(拥有起始位置)都必须有一个玩家目标。

可用指令

可以通过向地图添加类型为 int 的 "自定义属性" 来添加可用指令。属性必须与 AvailableCards 结构的字段命名相同。如果没有为指令设置属性,则默认使用 0。请注意,玩家总共只能使用 12 张卡牌。

故事

可以通过创建类型为 string 的名为 story 的地图属性来添加可选故事。使用 toml 格式进行解码。目前,仅支持水平和完成后的故事元素。

看看这个示例故事

[[pre_level]]
text = "hi, I am the captain ..."
profil = "Captain"
background = "OuterSpace"

[[pre_level]]
text = "now it is you turn!"

[[after_level]]
text = "You have mastered the challenge!"
profil = "Captain"

故事存在于两个列表 pre_levelafter_level 中,两者都是可选的。每个列表包含零个或多个 Speech。来自 pre_levelSpeech 在水平开始之前显示。来自 after_level 的那些在水平成功完成后显示。一个 Speech 由一个 text、一个 profil 图片和一个 background 组成。最后两个是可选的。 profil 定义了显示在文本左侧的图片。所有 Character 的变体都可以用于此。如果未设置 profil,则不会显示图片。 background 定义了显示在文本上方的背景。所有 Background 的变体都可以用于此。如果未设置 background,则将显示水平。

有关更多信息,请参阅 Story 结构。

地图验证

可以使用游戏或此crate通过执行以下命令之一来验证地图。

mission2teegarden-b validate-map <FILE>
mission2teegarden-b-map validate <FILE>

地图导出

地图导出与验证类似

mission2teegarden-b export-map <FILE>
mission2teegarden-b-map export <FILE>

执行其中一个命令将在当前工作目录中创建一个与原始文件具有相同基本名,但扩展名为 .m2tb_map 的文件。由于地图格式尚不稳定,且无法在导出后编辑,因此强烈建议保留原始的 .tmx 文件。

播放地图

要播放地图,请启动游戏并导航到 Play -> Import Level

或者,可以使用命令行界面

mission2teegarden-b play [FILE]

依赖项

~10MB
~175K SLoC