机器翻译正文由机器翻译自项目原始文档(英文),排版经程序统一处理,可能存在偏差,请以原项目仓库为准。
类型 PAL
用 TypeScript 从零写成的浏览器版《仙剑奇侠传》(1995,亦称 PAL):第一阶段可以在线玩到结局,第二阶段在做新运行时和可视化编辑器。
改地图、改场景、写 NPC 脚本,然后在编辑器里试玩。
第一阶段 · 余杭客栈对话 |
第一阶段 · 回合战斗 |
第一阶段 · 场景、坐标与剧本工具 |
第一阶段 · 速通计时 |
第二阶段 · 苏州城地图 |
第二阶段 · 角色属性 |
第二阶段 · 战斗模拟器 |
第二阶段 · 引用诊断 |
第二阶段 · 编辑器内试玩 |
它是什么
| 阶段 | 状态 | 内容 |
|---|---|---|
| 第一阶段 · 忠实复刻 | v1.0.0 已上线 | 浏览器运行时 @type-pal/game。主线可以端到端玩通:打败拜月教主,结局演出正确。这个版本标记的是「首次完整可通关」,不是「无 bug 稳定版」。 |
| 第二阶段 · Reforge | 正在开发 | 新运行时 @type-pal/reforge、React 可视化编辑器 @type-pal/editor、离线迁移器 @type-pal/migrate。 |
| 第三阶段 · 产品化 | 规划中 | 按发行范围替换版权资源,并规划官网、离线桌面发行等。见 docs/phase3/README.md。 |
第一阶段已经做到的,来自 v1.0.0 发布说明 和仓库里的实现说明:
- 用
@type-pal/pal-extract从原版 MKF 归档解包数据表、精灵和事件字节码。YJ1 解压对应参考树里的yj1.c(见reference/README.md)。 - TypeScript 事件字节码解释器驱动对话、过场、场景切换和战斗触发。
- 320×200 索引色软件帧缓冲:位图存调色板下标,blit 时上色。
- 回合制战斗:行动队列、伤害公式、法术、状态、敌方 AI、动画时间线。
- 音乐默认使用 SpessaSynth + TimGM6mb 合成 MIDI,也可在「工具 → 系统 → 音频 → 音源」选择 DOS FM(RIX)。RIX 通过 WebAssembly + AudioWorklet 实时合成,选择会在浏览器中记住;第三方来源与许可见下文。
第二阶段已经落地的部分(细节以 能力地图 和 任务看板 为准):
- 编辑场景、地图、剧情、角色、物品、战斗、资源和工程设置。
- 本地工程打开/保存、撤销/重做、引用诊断、试玩,以及独立战斗模拟器。
- PAL 内容用事务发布和三方合并迁进当前内容工程。
- 不依赖源码仓库的独立可玩包仍是本阶段收口项,尚未完成。
和 sdlpal 的 WebAssembly 移植有什么不同
reference/sdlpal/ 是 sdlpal 的 C 源码副本,只作引擎逻辑的参考规格,不作为整套引擎编译或运行。解包、脚本虚拟机、320×200 调色板渲染、战斗系统和编辑器都是 TypeScript 实现。原版数据和行为是第一阶段的首要事实来源;sdlpal 是参考实现。
DOS FM 音源单独使用改编的 RIX 播放器及 Nuked OPL 内核,编译为 WebAssembly;这部分 C/C++ 源码、补丁、许可和重建说明在 packages/game/vendor/rix/。
快速开始
需要 Node.js 22、pnpm 和 Git。
不准备原版数据时,可以跑自包含 demo,或在编辑器里新建空白工程。demo 的运行依赖已随工程入库,其中仍有少量 PAL 派生示例素材:
pnpm install
# Reforge 自动载入自包含 demo
pnpm --filter @type-pal/reforge dev # http://localhost:6050
# 编辑器启动页;可新建空白工程或打开本地当前格式工程,不会自动载入 demo
pnpm --filter @type-pal/editor dev:demo # http://localhost:6011
跑完整 PAL 内容时,把合法取得的原版数据放进 data/raw/(文件清单见 data/raw/README.md),再提取并迁移:
pnpm install
pnpm extract
pnpm --filter @type-pal/migrate migrate:content --write
然后按需要启动:
pnpm --filter @type-pal/editor dev # 编辑器 + PAL,http://localhost:6010
pnpm --filter @type-pal/reforge dev:pal # Reforge + PAL,http://localhost:6051
pnpm --filter @type-pal/game dev # 第一阶段运行时,https://localhost:6005
迁移命令默认 dry-run;只有 --write 会更新 projects/pal。第一阶段 dev 使用本地自签 HTTPS,浏览器第一次打开 6005 需要手动确认证书。更多命令、调试入口和开发边界见 CONTRIBUTING.md。
仓库里有什么
| 应用 | 包 | 用途 | 本地端口 |
|---|---|---|---|
| 第一阶段运行时 | @type-pal/game |
已上线的忠实还原版浏览器游戏,也是第二阶段的行为/UX 参考。 | 6005 |
| Reforge | @type-pal/reforge |
读取现代内容工程的新运行时。 | 6050 / 6051 |
| 编辑器 | @type-pal/editor |
可视化编辑地图、场景、剧情、角色、物品、战斗、资源和项目设置。 | 6010 / 6011 |
其余包:packages/shared(共享类型与解码)、packages/pal-extract(离线提取)、packages/content(第二阶段内容契约)、packages/migrate(离线迁移)。文档入口是 docs/README.md。
进度看哪里
能力格、任务状态和内容格式版本会变,本页不复制这些活账。
| 需要了解什么 | 入口 |
|---|---|
| 第一阶段 | docs/phase1/README.md |
| 第二阶段开工边界 | docs/phase2/READ-FIRST.md |
| 第二阶段完成度 | docs/phase2/capability-map.md |
| 第二阶段路线 | docs/phase2/roadmap.md |
| 第三阶段规划 | docs/phase3/README.md |
| 正在做的任务 | docs/ops/board.md |
开发方式
这个仓库是和维护者一起工作的 AI 编程助手写出来的。协作规则在 AGENTS.md:任务卡、同一份实现文件同一时间只有一个编码负责人、独立验收。当前是分派 / 执行 / 独立验收;文件里还留着更早的三方会签记录,那些记录不自动变成新任务的门禁。
许可与声明
非官方同人项目。 与大宇、软星以及《仙剑奇侠传》的权利人无关,未获官方授权或认可。原版资源与在线试玩仅供学习交流;权利人如有要求,将立即下架。请支持正版。
权利问题或下架请求,请在本仓库开 GitHub Issue。
- 本仓库为这个项目编写的代码,按 GNU General Public License v3.0 授权,与参考实现 sdlpal 的 GPLv3 一致。
- 完整原版游戏数据不在 Git 里。在线试玩是托管构建;在本机跑完整 PAL 内容,需要自己准备合法取得的原版数据。
- 已入库的 demo、回归 fixture,以及 Reforge 默认界面里的一部分贴图,含少量 PAL 派生素材。它们不是已经完成版权清理、可以独立发行的资源,也不会因为代码采用 GPL 就变成可以再授权的原版美术。来源说明见
PROVENANCE.md。 - 第三方组件保留各自的许可。仓库根上的 GPL-3.0 不改写这些许可。
第三方许可
| 来源 | 许可 | 说明 |
|---|---|---|
reference/sdlpal/ |
GPL-3.0(LICENSE) |
上游源码副本,只作参考。 |
reference/sdlpal/timidity/ |
COPYING 是 Artistic License;同目录 README 写明上游允许在 GPL、LGPL、Artistic 中选择 |
只在参考树里,不参与本仓库的构建。 |
reference/sdlpal/adplug/ |
NOTES/COPYING 为 LGPL-2.1 |
说明文字写的是随附的旧版 LGPL OPL 模拟器。同一份说明提到的、限制商业再分发的较新 MAME 许可版本,不是这份副本所附的那一版。 |
packages/game/vendor/rix/ |
AdPlug LGPL-2.1-or-later;SDLPAL 部分 GPL-3.0-or-later;Nuked GPL-2.0-or-later | 实际构建的 DOS FM 内核。来源、修改补丁、随附许可与重建方式见该目录 README。 |
reference/sdlpal/overlay/ |
CC BY 4.0(COPYING) |
libretro 叠层素材,只在参考树里。 |
| GNU Unifont | OFL-1.1,或 GPL-2.0-or-later 加字体嵌入例外 | 见 PROVENANCE.md、OFL-1.1.txt、COPYING。 |
| TimGM6mb 音色库 | 仓库内说明写的是 GPL-2,并链接 GPL version 2 文本,没有 “or later” | packages/game/public/soundfont-LICENSE.txt 与 Reforge 里的同文副本。音色库仍按该说明分发,根目录 GPL-3.0 不把它改成 GPL-3.0。 |
维护者
命令、调试入口、数据流和开发边界在 CONTRIBUTING.md。多 Agent 协议在 AGENTS.md。
- 本文标题:type-pal - 用 TypeScript 从零重写《仙剑奇侠传》(1
- 本文链接:https://www.cn121.com/h5game/illegalcreed-type-pal.html
- 原项目:IllegalCreed/type-pal 版权归原作者 IllegalCreed 及贡献者所有
- 收录信息:本站于 2026-10-17 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
- 开源协议:收录时本项目采用 GPL-3.0(查看 LICENSE 原文),本站译文为其衍生内容;使用、修改、分发请以该仓库 LICENSE 原文为准。基于本页内容形成的衍生作品, 须同样以该协议发布。
- 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 IllegalCreed/type-pal。
- 翻译说明:本页正文为人工智能生成内容——由机器翻译对原项目 README 初译、经程序校验排版,可能存在错漏,请以原项目文档为准。
- 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
- 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。