H5小游戏 活跃维护

type-pal

IllegalCreed/type-pal

用 TypeScript 从零重写《仙剑奇侠传》(1995),浏览器里能通关,附可视化编辑器 · A from-scratch TypeScript remake of PAL (1995) with a visual editor. Unofficial fan project.

182
Stars 标星
19
Forks 分支
1
Watchers 关注
1
Open Issues
TypeScript
主要语言
GPL-3.0
开源协议
204.8 MB
仓库大小
3 小时前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:IllegalCreed/type-pal
git clone https://github.com/IllegalCreed/type-pal.git
git clone git@github.com:IllegalCreed/type-pal.git
README.md main

机器翻译正文由机器翻译自项目原始文档(英文),排版经程序统一处理,可能存在偏差,请以原项目仓库为准。

类型 PAL

简体中文 | English

用 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 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。