# MappyLand：快速、准确的主机游戏地图构建

> MappyLand 是早期 Mappy 系统的 Rust 重写版，它对 FCEUMM NES 模拟器核心进行插桩，在依据手柄输入运行动作／冒险游戏的同时绘制地图。系统拦截对图像处理单元滚动寄存器的访问并读取模拟器内存，据此完成滚动配准、区分游戏区域与菜单、检测和跟踪精灵、构建网格化图块地图并识别房间切换。一个在线合并步骤再把观测到的房间整合为一致的房间图，可覆盖折返路线和多次游玩会话。作者在一次 34,514 帧的测试中报告，地图构建每帧约增加 1.5 毫秒开销，而单纯模拟约为每帧 0.2 毫秒。

- 作者：Joseph C. Osborn; Adam Summerville; Nathan Dailey; Soksamnang Lim
- 原标题：MappyLand: Fast, Accurate Mapping for Console Games
- 发表载体：AIIDE 2021
- 发表状态：会议论文
- 出版／提交日期：2021 年 10 月 4 日
- 日期依据：AAAI OJS 文章页面给出的出版日期为 2021-10-04，出版方提交的 Crossref 记录中的在线出版日期和发行日期与之相同。本条目不以会议日期代替。
- DOI：10.1609/aiide.v17i1.18892
- 来源复核于：2026-10-27
- 收录于：2026-11-03
- 原始论文：<https://ojs.aaai.org/index.php/AIIDE/article/view/18892>
- PDF：<https://ojs.aaai.org/index.php/AIIDE/article/download/18892/18657>
- 代码：<https://github.com/faim-lab/mappy/tree/bbf99dd0f53c0986250c9020e3a7a75f9732b19f>
- BibTeX：<https://awesomerea.org/papers/citations/paper-mappyland.bib>
- 目录页面：<https://awesomerea.org/zh/papers/paper-mappyland/>
- 记录 JSON：<https://awesomerea.org/papers/paper-mappyland/record.json>
- 英文版：[English](https://awesomerea.org/papers/paper-mappyland/index.md)

## 研究范围与局限

仅适用于玩家操控角色在单一物理层的二维图块空间中移动的 NES 动作／冒险游戏；不支持各自独立滚动的图层和视差背景，其他主机平台留待后续工作。方法依赖模拟器插桩与内存读取，而非仅凭像素，并需要游戏映像及手柄输入。地图准确性仅由人工检查作者在部分游戏上的游玩结果来判断；由于缺少参考数据集，没有进行自动化的定量准确性评估。游玩中未见到的区域不会被绘制，外观相似的房间也可能产生歧义。耗时数据来自个别报告的运行；作者预期不同 NES 游戏的开销相近，但并未测量。输出是地图、房间图和实体轨迹，而非游戏代码、规则或资源。

## 与本合集的关联

补充借助模拟器插桩、从观测到的游玩过程中恢复游戏世界结构（地图、房间图与实体轨迹）的研究，与仅基于像素的游戏复刻和代码世界模型研究互补。

## 发表与复核说明

OJS 页面与 Crossref 确认了四位作者的顺序、DOI、第 17 卷第 1 期及页码 66–73。由于 AIIDE 论文集以 OJS 连续出版物形式发布，Crossref 将该记录归为期刊文章。论文脚注链接了 faim-lab/mappy 和 faim-lab/fceumm-libretro-hooks。所审阅的 mappy 快照 bbf99dd（2025-07-21）包含论文发表数年后的提交，使用 Rust 2024 版本和未固定版本的 retro-rs Git 依赖，未声明许可证，并附带适用于 Linux、macOS 与 Windows 的预编译插桩模拟器核心；fceumm-libretro-hooks 中的核心源码（4b2001d，2025-02-14）采用 GPL-2.0。地图图片由 Graphviz 渲染。早期的 Mappy 系统（FDG 2017 PCG 研讨会，arXiv:1707.03908）是另一篇论文。

## 一手来源

1. <https://ojs.aaai.org/index.php/AIIDE/article/view/18892>
2. <https://ojs.aaai.org/index.php/AIIDE/article/download/18892/18657>
3. <https://doi.org/10.1609/aiide.v17i1.18892>
4. <https://api.crossref.org/works/10.1609/aiide.v17i1.18892>
5. <https://github.com/faim-lab/mappy/blob/bbf99dd0f53c0986250c9020e3a7a75f9732b19f/README>
6. <https://github.com/faim-lab/mappy/blob/bbf99dd0f53c0986250c9020e3a7a75f9732b19f/Cargo.toml>
7. <https://github.com/faim-lab/mappy/blob/bbf99dd0f53c0986250c9020e3a7a75f9732b19f/mappy/Cargo.toml>
8. <https://github.com/faim-lab/mappy/tree/bbf99dd0f53c0986250c9020e3a7a75f9732b19f/cores>
9. <https://github.com/faim-lab/fceumm-libretro-hooks/blob/4b2001d63071fcfcd49ffdecda5b1f414a1a7496/Copying>
10. <https://github.com/faim-lab/fceumm-libretro-hooks/blob/4b2001d63071fcfcd49ffdecda5b1f414a1a7496/README.md>

## 关于此条目

已依据论文及一手来源复核。请通过原始论文或 BibTeX 引用原作者。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
