news 2026/6/4 1:23:30

借助 AI 重构游戏地图:Test-Drive-3-Maps 项目开发步骤与文件规范揭秘!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
借助 AI 重构游戏地图:Test-Drive-3-Maps 项目开发步骤与文件规范揭秘!

导航菜单

切换导航
[ ](/)
[ 登录 ](/login?return_to=https%3A%2F%2Fgithub.com%2Fs-macke%2FTest-Drive-3-Maps)
外观设置

平台

-AI 代码创作
- GitHub Copilot:借助 AI 编写更优质代码
- GitHub Copilot 应用:从问题到合并的直接代理
- MCP 注册表:新功能,集成外部工具
-开发者工作流
- Actions:自动化任何工作流
- Codespaces:即时开发环境
- Issues:规划和跟踪工作
- 代码审查:管理代码变更
-应用程序安全
- GitHub 高级安全:发现并修复漏洞
- 代码安全:在构建过程中保障代码安全
- 密钥保护:防患于未然,防止信息泄露
-探索
- 为何选择 GitHub
- 文档
- 博客
- 更新日志
- 市场

查看所有功能

解决方案

-按公司规模划分
- 企业版
- 中小型团队版
- 初创公司版
- 非营利组织版
-按用例划分
- 应用现代化
- DevSecOps
- DevOps
- CI/CD
- 查看所有用例
-按行业划分
- 医疗保健
- 金融服务
- 制造业
- 政府部门
- 查看所有行业

查看所有解决方案

资源

-按主题探索
- AI
- 软件开发
- DevOps
- 安全
- 查看所有主题
-按类型探索
- 客户案例
- 活动与网络研讨会
- 电子书与报告
- 商业洞察
- GitHub 技能
-支持与服务
- 文档
- 客户支持
- 社区论坛
- 信任中心
- 合作伙伴

查看所有资源

开源

-社区
- GitHub 赞助:资助开源开发者
-项目
- 安全实验室
- 维护者社区
- 加速器
- GitHub 明星项目
- 存档项目
-仓库
- 主题
- 热门趋势
- 集合

企业版

-企业解决方案
- 企业平台:人工智能驱动的开发者平台
-可用附加组件
- GitHub 高级安全:企业级安全功能
- Copilot for Business:企业级 AI 功能
- 高级支持:企业级 24/7 支持

定价

搜索或跳转至...

搜索代码、仓库、用户、问题、拉取请求...

搜索
清除
搜索语法提示

提供反馈

我们会认真阅读每一条反馈,并高度重视您的意见。
包含我的电子邮件地址,以便与我联系
取消 提交反馈

保存的搜索

使用保存的搜索可以更快地筛选结果
名称
查询
要查看所有可用的限定符,请参阅我们的文档。
取消 创建保存的搜索
[ 登录 ](/login?return_to=https%3A%2F%2Fgithub.com%2Fs-macke%2FTest-Drive-3-Maps)
[ 注册 ](/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E&source=header-repo&source_repo=s-macke%2FTest-Drive-3-Maps)
外观设置
重置焦点
您已在另一个标签页或窗口中登录。[重新加载]()以刷新您的会话。
您已在另一个标签页或窗口中注销。[重新加载]()以刷新您的会话。
您已在另一个标签页或窗口中切换账户。[重新加载]()以刷新您的会话。 关闭提醒
{{ message }}
[ s-macke ](/s-macke) /[Test-Drive-3-Maps](/s-macke/Test-Drive-3-Maps)
公开
- [ 通知 ](/login?return_to=%2Fs-macke%2FTest-Drive-3-Maps) 您必须登录才能更改通知设置
- [ 复刻 1 ](/login?return_to=%2Fs-macke%2FTest-Drive-3-Maps)
- [ 收藏 22 ](/login?return_to=%2Fs-macke%2FTest-Drive-3-Maps)
- [ 代码 ](/s-macke/Test-Drive-3-Maps)
- [ 问题 1 ](/s-macke/Test-Drive-3-Maps/issues)
- [ 拉取请求 0 ](/s-macke/Test-Drive-3-Maps/pulls)
- [ 操作 ](/s-macke/Test-Drive-3-Maps/actions)
- [ 项目 ](/s-macke/Test-Drive-3-Maps/projects)
- [ 安全与质量 0 ](/s-macke/Test-Drive-3-Maps/security)
- [ 洞察 ](/s-macke/Test-Drive-3-Maps/pulse)

其他导航选项

- [ 代码 ](/s-macke/Test-Drive-3-Maps)
- [ 问题 ](/s-macke/Test-Drive-3-Maps/issues)
- [ 拉取请求 ](/s-macke/Test-Drive-3-Maps/pulls)
- [ 操作 ](/s-macke/Test-Drive-3-Maps/actions)
- [ 项目 ](/s-macke/Test-Drive-3-Maps/projects)
- [ 安全与质量 ](/s-macke/Test-Drive-3-Maps/security)
- [ 洞察 ](/s-macke/Test-Drive-3-Maps/pulse)
[](/s-macke/Test-Drive-3-Maps)

s-macke/Test-Drive-3-Maps

主分支
[分支](/s-macke/Test-Drive-3-Maps/branches)[标签](/s-macke/Test-Drive-3-Maps/tags)
[](/s-macke/Test-Drive-3-Maps/branches)[](/s-macke/Test-Drive-3-Maps/tags)
转到文件
代码
打开更多操作菜单

文件夹和文件

| 名称 | 名称 | 最后提交消息 | 最后提交日期 |
| --- | --- | --- | --- |

最新提交

历史记录

[63 次提交](/s-macke/Test-Drive-3-Maps/commits/master/)
[](/s-macke/Test-Drive-3-Maps/commits/master/)63 次提交
[.github/workflows](/s-macke/Test-Drive-3-Maps/tree/master/.github/workflows "此路径跳过空目录")
|
[.github/workflows](/s-macke/Test-Drive-3-Maps/tree/master/.github/workflows "此路径跳过空目录")
|
|
[disassembly](/s-macke/Test-Drive-3-Maps/tree/master/disassembly "反汇编")
|
[disassembly](/s-macke/Test-Drive-3-Maps/tree/master/disassembly "反汇编")
|
|
[images](/s-macke/Test-Drive-3-Maps/tree/master/images "图像")
|
[images](/s-macke/Test-Drive-3-Maps/tree/master/images "图像")
|
|
[objs](/s-macke/Test-Drive-3-Maps/tree/master/objs "对象")
|
[objs](/s-macke/Test-Drive-3-Maps/tree/master/objs "对象")
|
|
[public/base](/s-macke/Test-Drive-3-Maps/tree/master/public/base "此路径跳过空目录")
|
[public/base](/s-macke/Test-Drive-3-Maps/tree/master/public/base "此路径跳过空目录")
|
|
[spec](/s-macke/Test-Drive-3-Maps/tree/master/spec "规范")
|
[spec](/s-macke/Test-Drive-3-Maps/tree/master/spec "规范")
|
|
[src](/s-macke/Test-Drive-3-Maps/tree/master/src "源代码")
|
[src](/s-macke/Test-Drive-3-Maps/tree/master/src "源代码")
|
|
[.gitignore](/s-macke/Test-Drive-3-Maps/blob/master/.gitignore ".gitignore")
|
[.gitignore](/s-macke/Test-Drive-3-Maps/blob/master/.gitignore ".gitignore")
|
|
[CLAUDE.md](/s-macke/Test-Drive-3-Maps/blob/master/CLAUDE.md "CLAUDE.md")
|
[CLAUDE.md](/s-macke/Test-Drive-3-Maps/blob/master/CLAUDE.md "CLAUDE.md")
|
|
[LICENSE](/s-macke/Test-Drive-3-Maps/blob/master/LICENSE "许可证")
|
[LICENSE](/s-macke/Test-Drive-3-Maps/blob/master/LICENSE "许可证")
|
|
[LINKS.md](/s-macke/Test-Drive-3-Maps/blob/master/LINKS.md "链接")
|
[LINKS.md](/s-macke/Test-Drive-3-Maps/blob/master/LINKS.md "链接")
|
|
[README.md](/s-macke/Test-Drive-3-Maps/blob/master/README.md "README.md")
|
[README.md](/s-macke/Test-Drive-3-Maps/blob/master/README.md "README.md")
|
|
[index.html](/s-macke/Test-Drive-3-Maps/blob/master/index.html "index.html")
|
[index.html](/s-macke/Test-Drive-3-Maps/blob/master/index.html "index.html")
|
|
[package-lock.json](/s-macke/Test-Drive-3-Maps/blob/master/package-lock.json "package-lock.json")
|
[package-lock.json](/s-macke/Test-Drive-3-Maps/blob/master/package-lock.json "package-lock.json")
|
|
[package.json](/s-macke/Test-Drive-3-Maps/blob/master/package.json "package.json")
|
[package.json](/s-macke/Test-Drive-3-Maps/blob/master/package.json "package.json")
|
|
[run.sh](/s-macke/Test-Drive-3-Maps/blob/master/run.sh "run.sh")
|
[run.sh](/s-macke/Test-Drive-3-Maps/blob/master/run.sh "run.sh")
|
|
[tsconfig.json](/s-macke/Test-Drive-3-Maps/blob/master/tsconfig.json "tsconfig.json")
|
[tsconfig.json](/s-macke/Test-Drive-3-Maps/blob/master/tsconfig.json "tsconfig.json")
|
|
[vite.config.js](/s-macke/Test-Drive-3-Maps/blob/master/vite.config.js "vite.config.js")
|
[vite.config.js](/s-macke/Test-Drive-3-Maps/blob/master/vite.config.js "vite.config.js")
|
|
查看所有文件

仓库文件导航

- README
- MIT 许可证

Test-Drive-3-Maps

这是对 Accolade 公司的 DOS 游戏 _Test Drive III: The Passion_ 进行逆向工程并提取的地图。
小时候,我经常玩《Test Drive III》,不是为了赛车,单纯是为了探索游戏世界。
游戏里有太多值得一看、值得发现的东西。这个项目旨在尽可能精确地重构那些地图。在过去的五年里,我断断续续地进行着这项工作。如今,在 AI 的帮助下,我已接近成功,只是偶尔会出现飞行汽车和缺失精灵的小问题。
3D 格式本身并不复杂,但包含一些特殊情况。每个图块或对象都是一个小网格,以三个并行的 16 位有符号 X、Y 和 Z 顶点坐标数组形式存储,后面跟着 8 字节的多边形记录,其中包含多边形类型、顶点索引和调色板颜色。这些前面还有一个 4 或 8 字节的短头文件。
地图是一个 32×16 的网格。每个单元格为 2 字节:一个图块 ID 用于选择其中一个网格,再加上打包的旋转和高度位。

[在线查看器]

[提取的图像画廊]

Wavefront 对象文件可在 `objs` 目录中找到。

开发

先决条件

- Node.js 20.19+(Vite 7 所需)

安装

npm install

运行浏览器查看器

npm run dev
在 <http://localhost:5173> 打开查看器。

生产构建

npm run build
输出位于 `dist/` 目录。

导出 OBJ 文件

npm run export
将所有地图和对象导出到 `objs/` 目录。

导出 PNG 图像

npm run imgextract
将当前记录的 DAT 图像以索引颜色 PNG 格式导出到 `images/` 目录。

导出场景精灵

npm run spriteextract
从已知的场景渲染描述符库中提取透明的场景精灵 PNG,包括 `SCENE02` 同系列变体。

CLI 工具

# 查看 LST 文件内容
npm run lstview -- public/base/SCENE01.LST
# 从 DAT 文件中提取 VGA 图像
npm run imgview -- public/base/DATAB.DAT 0x151 12083 320

项目结构

src/
├── browser/ # 仅适用于浏览器的模块(Three.js 查看器)
├── shared/ # 共享模块(提取逻辑、LZW/RLE 解码器)
└── tools/ # Node.js CLI 工具
├── export/ # OBJ 导出器
├── imgextract/ # 批量 DAT 图像 → PNG 导出器
├── spriteextract/ # 场景精灵提取器
├── lstviewer/ # LST 文件查看器
└── imgviewer/ # VGA 图像提取器
public/
└── base/ # 游戏数据文件(必需)
objs/ # 导出的 Wavefront OBJ 文件
images/ # 提取的 VGA 图像(PNG 格式)
spec/ # 文件格式规范

提取的图像画廊

要查看所有提取的 UI 资产、场景精灵、地图调色板和汽车设计的可视化概览和预览,请访问[项目图像画廊索引]。每个单独的目录都包含其自己生成的可视化画廊:
- [📁 科尔维特 ZR - 1 资产画廊]
- [📁 本田 NSX 资产画廊]
- [📁 兰博基尼 Diablo 资产画廊]
- [📁 Mythos 资产画廊]
- [📁 雪佛兰科尔维特 Stelvio 资产画廊]
- [📁 风景精灵画廊]

文件格式规范

`spec/` 目录包含对《Test Drive III》文件格式的逆向工程文档:

| 文件 | 描述 |
| --- | --- |
| [3d-object-format.md] | 图块和对象中使用的 3D 多边形/顶点格式 |
| [dat-file-layouts.md] | DAT 文件偏移表和资源布局 |
| [map-format.md] | 赛道地图格式:图块网格、对象放置块、颜色表和头参数结构 |
| [scene-render-descriptor-bank-format.md] | `SCENE01.DAT`、`SCENE02.DAT` 和 `SCENETT1.DAT` 使用的场景渲染描述符库系列 |
| [lst-file-format.md] | LST 资源索引文件(场景和汽车变体) |
| [image-format.md] | VGA 图像压缩(LZW + RLE 管道) |
| [palette-format.md] | VGA 调色板处理和颜色选择 |
| [color_remap.md] | 用于天空/地平线渐变和道路重映射的配对像素查找表 |
| [references.md] | 外部逆向工程参考和链接 |

关于

《Test Drive 3》DOS 游戏的提取地图

主题

[ dos ] [ 逆向工程 ] [ 赛车游戏 ]

资源

Readme

许可证

MIT 许可证

哎呀!

加载时出现错误。[请重新加载此页面]()
[ 活动](/s-macke/Test-Drive-3-Maps/activity)

收藏

[22颗星]

关注者

[3人关注]

复刻

[1次复刻]

[ 举报仓库 ]

[版本]
未发布版本
[包 0]

哎呀!

加载时出现错误。[请重新加载此页面]()
[贡献者]
* * *

哎呀!

加载时出现错误。[请重新加载此页面]()
语言
- [ 汇编 98.2% ]
- [ TypeScript 1.4% ]
- 其他 0.4%

页脚

[ ](https://github.com) (C) 2026 GitHub, Inc.

页脚导航

- [条款]
- [隐私]
- [安全]
- [状态]
- [社区]
- [文档]
- [联系我们]
- 管理 Cookie
- 不共享我的个人信息
此时您无法执行该操作。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/4 1:13:28

Python 爬虫数据处理:CSV 大文件分块读写解决爬虫内存溢出问题

前言 在 Python 爬虫实战开发中&#xff0c;爬取大规模数据&#xff08;如千万级商品数据、海量日志数据、全网新闻数据&#xff09;时&#xff0c;直接将所有数据加载到内存中进行 CSV 读写&#xff0c;极易触发内存溢出&#xff08;OOM&#xff09; 问题&#xff0c;导致爬虫…

作者头像 李华
网站建设 2026/6/4 1:10:11

Notepad++ 纯净版下载安装完整教程【2026-06-02】

Notepad 纯净版下载安装完整教程 Notepad是一款完全开源免费的轻量文本编辑器&#xff0c;占用系统资源极低&#xff0c;支持代码高亮、多标签页编辑、宏批量处理等功能&#xff0c;广泛适配普通文本编辑、网页开发、代码编写等场景&#xff0c;本教程面向零基础用户提供从下载…

作者头像 李华
网站建设 2026/6/4 1:08:42

5分钟掌握DeepL专业级翻译:你的浏览器从此无语言障碍

5分钟掌握DeepL专业级翻译&#xff1a;你的浏览器从此无语言障碍 【免费下载链接】deepl-chrome-extension A DeepL Translator Chrome extension 项目地址: https://gitcode.com/gh_mirrors/de/deepl-chrome-extension 你是否厌倦了在浏览外文网站时频繁切换标签页进行…

作者头像 李华
网站建设 2026/6/4 1:06:04

复杂 SQL 生成 Agent Harness 的准确率提升之路

复杂 SQL 生成 Agent Harness 的准确率提升之路关键词 复杂SQL生成 | Agent Harness | 大语言模型(LLM)微调 | 检索增强生成(RAG) | 约束推理框架 | 测试驱动设计(TDD) | SQL语义验证 摘要 随着企业对数据资产价值挖掘需求的爆发式增长&#xff0c;自然语言转结构化查询&#x…

作者头像 李华