中文 | English
轻量级二维瓷砖地图格式及其即时预览工具。为配合将 GIS 数据转为像素画瓷砖地图的项目而设计,目前成熟度有限,按需维护。
格式通过 AI 对话参考设计并人工调整,人工成分较高。查看器主要由 AI 生成,代码未经仔细审读,仍存在一些问题(如热更新时旧地图数据销毁前短暂无法操作),但作为即时预览已够用。
项目分为两部分:
- spec — 地图格式规范(基于 JSON),定义了图层、瓷砖集、精灵集等结构
- viewer — 基于 Tauri + PixiJS 的桌面预览工具,支持实时热更新
| 对比 | TinyMap | Tiled | LDtk |
|---|---|---|---|
| 同层瓷砖叠加 | 稀疏图层支持同格叠加瓷砖(适合悬崖等场景) | 不支持 | 支持 |
| 格式复杂度 | 极简 JSON,方便程序生成 | 中等 | 非常复杂 |
| 编辑器耦合 | 无编辑器信息,纯数据 | 包含 | 大量 (╯‵□′)╯︵┻━┻ |
| 即时预览 | 保存即刷新,无需手动操作 | 支持 | 不支持 |
- 启动查看器后,拖入
.json地图文件即可预览 - 也可通过命令行指定文件:
tinymap-viewer map.json - 地图文件或瓷砖图片发生变化时,视图自动实时更新,无需刷新
| 快捷键 | 功能 |
|---|---|
Tab |
显示 / 隐藏 UI 面板 |
Space |
缩放至适应窗口 |
1 – 6 |
预设缩放(50%、100%、150%、200%、300%、400%) |
Ctrl + 滚轮 |
以鼠标位置为中心缩放 |
中键拖拽 |
平移画布 |
F5 |
重新载入当前地图 |
完整规范参见 spec/FORMAT.md,JSON Schema 参见 spec/schema.json。
基本结构:
{
"$schema": "tinymap-schema.json",
"rows": 3,
"columns": 4,
"cellWidth": 32,
"cellHeight": 32,
"tilesets": [
{
"src": "ground.png",
"columns": 8,
"count": 64
}
],
"spritesets": [
{
"src": "objects.png",
"align": 2,
"data": {
"xs": [ 0, 32],
"ys": [ 0, 0],
"ws": [32, 64],
"hs": [32, 32]
}
}
],
"layers": [
{
"name": "background",
"layout": "dense",
"contentType": "tile",
"data": [
1, 1, 1, 0,
1, 3, 3, 0,
1, 4, 1, 2
]
},
{
"name": "objects",
"layout": "sparse",
"contentType": "sprite",
"data": {
"idxs": [7, 7],
"vals": [1, 2]
}
}
]
}- dense 图层 — 稠密存储,长度为
rows × columns的一维数组,0 表示空位 - sparse 图层 — 稀疏存储,仅记录非 fill 值的位置,同一位置可叠加多个 tile/sprite
cd viewer
pnpm install # 安装依赖
pnpm tauri:dev # 启动开发模式
pnpm tauri:build # 构建生产版本MIT
