HarbourMasters/Shipwright
GitHub: HarbourMasters/Shipwright
基于《时之笛》反编译源码和 libultraship 库构建的现代原生游戏移植项目,让经典 N64 游戏脱离模拟器在多平台原生运行并支持 Mod 扩展。
Stars: 4581 | Forks: 673


## 网站
官方网站:https://www.shipofharkinian.com/
## Discord
官方 Discord:https://discord.com/invite/shipofharkinian
如果你在阅读完此 `README` 后遇到任何问题,请随时在 Support 文本频道中寻求帮助。请记住,我们绝不纵容盗版行为。
# 快速开始
The Ship 不包含任何受版权保护的资产。你需要提供一份受支持的游戏副本。
### 1. 验证你的 ROM Dump
你可以通过 https://ship.equipment/ 上的兼容性检查工具来验证你是否已 Dump 了受支持的游戏副本。如果你更愿意手动验证你的 ROM Dump,可以将其 `sha1` 哈希值与此处[这里](docs/supportedHashes.json)的哈希值进行交叉比对。
### 2. 从 [Releases](https://github.com/HarbourMasters/Shipwright/releases) 下载 The Ship of Harkinian
### 3. 启动游戏!
#### Windows
* 解压 zip 文件
* 运行 `soh.exe`
#### Linux
* 将你受支持的游戏副本放在与 appimage 相同的文件夹中。
* 执行 `soh.appimage`。你可能需要通过终端执行 `chmod +x` 为该 appimage 赋予执行权限。
#### macOS
* 运行 `soh.app`。出现提示时,选择你受支持的游戏副本。
* 你应该会看到一条写着 `Processing OTR` 的通知,然后,一旦该过程完成,你应该会收到一条写着 `OTR Successfully Generated` 的通知,接着游戏就会启动。
#### Nintendo Switch
* 运行其中一个 PC 版本以生成 `oot.o2r` 和/或 `oot-mq.o2r` 文件。在 PC 上启动游戏后,你可以在 `soh.exe` 或 `soh.appimage` 所在的同一目录中找到这些文件。在 macOS 上,这些文件可以在 `/Users//Library/Application Support/com.shipofharkinian.soh/` 中找到
* 将文件复制到你的 SD 卡中
```
sdcard
└── switch
└── soh
├── oot-mq.o2r
├── oot.o2r
├── soh.nro
└── soh.o2r
```
* 通过 Atmosphere 的 `Game+R` 启动方式启动。
### 4. 游玩!
恭喜,你正在与 Ship of Harkinian 一起航行!祝你玩得开心!
# 配置
### 默认键盘配置
| N64 | A | B | Z | Start | Analog stick | C buttons | D-Pad |
| - | - | - | - | - | - | - | - |
| 键盘 | X | C | Z | Space | WASD | Arrow keys | TFGH |
### 其他快捷键
| 按键 | 动作 |
| - | - |
| ESC | 切换菜单 |
| F2 | 切换捕获鼠标输入 |
| F5 | 保存状态 |
| F6 | 更改状态 |
| F7 | 读取状态 |
| F9 | 切换文本转语音(仅限 Windows 和 Mac) |
| F11 | 全屏 |
| Tab | 切换备用资产 |
| Ctrl+R | 重置 |
# 项目概述
Ship of Harkinian (SOH) 构建于一个名为 libultraship (LUS) 的自定义库之上。早在 N64 时代,有一个分发给开发者的名为 libultra 的 SDK;LUS 旨在现代硬件上模拟 libultra 的功能。此外,我们依赖于 OOT 反编译项目提供的源代码。
为了让游戏运行,你需要一份**合法获取**的《时之笛》 ROM。点击[这里](https://ship.equipment/)查看你特定 ROM 的兼容性。任何受版权保护的资产都会从 ROM 中提取出来并重新打包为 .o2r 存档文件供代码使用。
### 图形后端
目前支持三种渲染 API:DirectX11(Windows)、OpenGL(所有平台)和 Metal(MacOS)。你可以在菜单栏的 `Settings` 菜单中更改要使用的 API,这需要重新启动才能生效。如果你遇到崩溃问题,可以在 `shipofharkinian.json` 文件中找到 `gfxbackend:""` 行,并将其值更改为 `sdl` 以使用 OpenGL。Windows 上默认使用 DirectX 11。
# 自定义资产
自定义资产被打包在 `.otr` 存档文件中。要使用自定义资产,请将它们放在 `mods` 文件夹中。
如果你有兴趣创建和/或打包你自己的自定义资产 `.otr` 文件,请查看以下工具:
* [**retro - OTR 生成器**](https://github.com/HarbourMasters64/retro)
* [**fast64 - Blender 插件**](https://github.com/HarbourMasters/fast64)
# 开发
### 构建
如果你想手动编译 SoH,请参阅[构建说明](docs/BUILDING.md)。
### 游戏测试
如果你想对持续集成版本进行游戏测试,可以在下方链接中找到它们。请记住,这些版本仅用于游戏测试,你很可能会遇到错误甚至崩溃。
* [Windows](https://nightly.link/HarbourMasters/Shipwright/workflows/generate-builds/develop/soh-windows.zip)
* [macOS](https://nightly.link/HarbourMasters/Shipwright/workflows/generate-builds/develop/soh-mac.zip)
* [Linux](https://nightly.link/HarbourMasters/Shipwright/workflows/generate-builds/develop/soh-linux.zip)
### 延伸阅读
更详细的文档可以在 'docs' 目录中找到,包括前面提到的[构建说明](docs/BUILDING.md)。
* [致谢](docs/CREDITS.md)
* [自定义音乐](docs/CUSTOM_MUSIC.md)
* [控制器映射](docs/GAME_CONTROLLER_DB.md)
* [Modding](docs/MODDING.md)
* [版本控制](docs/VERSIONING.md)
标签:C++, Nintendo Switch, PC移植, ROM Hack, Ship of Harkinian, UML, URL提取, 云资产清单, 反编译, 复古游戏, 客户端加密, 开源游戏, 数据擦除, 游戏开发, 游戏引擎, 游戏重制, 独立游戏, 资源提取, 赛尔达传说:时之笛, 软件解耦, 逆向工程