Shipwright:在 PC 上重玩《时之笛》的源码级平台
【免费下载链接】Shipwright 项目地址: https://gitcode.com/GitHub_Trending/sh/Shipwright
Shipwright(Ship of Harkinian,简称 SoH)是把任天堂 64 的《塞尔达传说:时之笛》完整反编译、重新编译并在现代硬件上运行的开源工程。它解决的问题很直接:N64 早已停产,但这套代码现在能跑在你的 PC 上,并且随机器、多人联机、存档快照这些原版没有的功能全部内置。项目不附带任何版权资源,你需要自备一份合法来源的游戏 ROM。
🚀 先跑起来
两条路:直接下载 Releases 里的预编译包,解压后运行 soh.exe(Windows)或 soh.appimage(Linux),游戏启动时会提示你选择一份受支持的 ROM;或者自己从源码编译,Linux 下的最小路径是:
git clone --recursive https://gitcode.com/GitHub_Trending/sh/Shipwright
cd Shipwright
cmake -H. -Bbuild-cmake -GNinja
cmake --build build-cmake --target GenerateSohOtr
cmake --build build-cmake
跑通后 ./build-cmake/soh/soh.elf 可以启动,选一份合法 ROM 完成 OTR 资源提取即可进入游戏。注意仓库不带资源,GenerateSohOtr 这一步依赖你放入 roms/ 目录的 ROM,构建细节(含 Windows/macOS 依赖)见 docs/BUILDING.md。
🧩 它到底干什么
- 源码级重编译:整个游戏是 OOT 反编译项目的可编译源码,改任何逻辑都在 soh/src/ 里改完重新编译,不需要打补丁或改二进制。
- 内置随机器:把物品、钥匙、Boss 位置打乱重排,支持 Classic Rando 和 3D Rando 等多种规则组合,源码在 soh/soh/Enhancements/randomizer/。
- 多人联机:基于 UDP 的自定义网络层实现多人同局,相关代码在 soh/soh/Network/。
- 存档快照:F5 快速保存、F7 快速读取,状态文件由 soh/soh/savestates.cpp 管理,崩溃后能回到任意进度点。
- 自定义资产:把替换的模型、贴图、音乐打包成
.otr文件放进mods文件夹即可加载,不需要重新编译。
🗂️ 按场景挑模块
我想改游戏逻辑
改 soh/src/ 下的反编译源码,或写增强功能进 soh/soh/Enhancements/;改完 CMake 重新构建即可看到效果。
我想跑一局随机器
入口在游戏菜单,实现全部集中在 soh/soh/Enhancements/randomizer/,3D Rando 的填坑逻辑在其中的 3drando/fill.cpp。
我想和朋友联机
联机代码在 soh/soh/Network/,Anchor、Sail 等目录分别处理协议与连接状态,属于游戏内功能,无需额外服务端。
我想做代码 Mod
按 docs/MODDING.md 的完整教程走:从 develop 切分支、加一个可配置的时间流速 slider、再发 PR,一条真实改动从定位到提交的完整流程。
我想移植到掌机或主机
Switch 和 Wii U 的工具链构建脚本在 scripts/switch/ 和 scripts/wiiu/,docs/BUILDING.md 末尾给出了 soh_nro、soh.rpx 的生成命令。
其他:资产与配置
每个场景/道具/动画的资产配置是 YAML 文件,按 ROM 版本分区放在 soh/assets/yml/;版本号规则(x.y.z 加科幻电影代号)说明在 docs/VERSIONING.md。
⚠️ 新手容易踩的坑
- clone 忘了带子模块:构建缺文件且报错不明显。解法:加
--recursive,或补跑git submodule update --init。 - ROM 不被支持:资源提取直接失败。解法:把 ROM 的 sha1 和 docs/supportedHashes.json 对照,不在列表里的版本无法运行。
- CMake 找不到第三方包配置:老发行版的 tinyxml2(< 10.0.0)、SDL2_net(< 2.2.0)不带 CMake 配置文件。解法:装新版包并传
-DCMAKE_PREFIX_PATH,或按 docs/BUILDING.md 的提示从源码编译。
📌 卡住了去哪找答案
- README.md:快速开始、默认键位、快捷键表
- docs/BUILDING.md:全平台依赖与构建、CI 调试
- docs/MODDING.md:从零写一个代码 Mod 并提 PR
- docs/VERSIONING.md:版本号含义,判断你的
oot.o2r是否要重新生成 - docs/supportedHashes.json:受支持 ROM 的哈希清单
把仓库拉下来本地编译一遍,比读十页文档更能让你明白它怎么工作。
【免费下载链接】Shipwright 项目地址: https://gitcode.com/GitHub_Trending/sh/Shipwright
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



