ESC
开源 3 分钟阅读

SkyCraft:以 Minecraft 玩家身份畅玩 Skyrim——在 Skyrim 世界中实现 Minecraft 物理、物品栏、方块与战斗(SKSE 插件 + Fabric 模组)

开源粉丝项目 SkyCraft 通过 Skyrim SKSE 插件与 Minecraft Fabric 模组,让玩家在 Skyrim 世界中按 Minecraft 规则游玩:物理移动、物品栏、方块建造与战斗。两款游戏互不重写,通过共享内存通信,Minecraft 在后台隐藏运行、由 Skyrim 渲染画面,支持最多100人联机,采用 MIT 许可证。

来源:GitHub

SkyCraft

SkyCraft:一名 Minecraft 玩家走在河木镇中,屏幕显示 Minecraft HUD

以 Minecraft 玩家的方式游玩 Skyrim。你以 Minecraft 的物理规则移动,使用 Minecraft 的物品栏和 HUD,并在 Skyrim 的世界里放置和破坏方块。你用 Minecraft 的武器与 Skyrim 的 NPC 战斗,他们也会反击。

两款游戏都没有被重写。Minecraft 运行自己的游戏逻辑,Skyrim 运行它的世界、NPC、任务和存档。一个 Skyrim SKSE 插件和一个 Minecraft Fabric 模组通过共享内存相互通信。Minecraft 在后台隐藏运行,由 Skyrim 负责绘制一切。

状态:早期实验阶段。 可能存在粗糙之处,请备份你的存档。 这是一个粉丝项目,与 Mojang、Microsoft、Bethesda 或 ZeniMax 均无关联,你需要同时拥有两款游戏。

已实现的功能

  • 移动: 在 Skyrim 的地形和建筑上实现 Minecraft 式移动,包括行走、疾跑、跳跃、蹲伏、游泳和坠落,Skyrim 的碰撞数据会输入到 Minecraft 自己的碰撞系统中。
  • 方块: 在 Skyrim 的任何地方放置和破坏方块。方块在 Skyrim 的画面内渲染,带有它的阳光、阴影、雾气和天气。Minecraft 的光源(火把、岩浆、萤石等)能照亮 Skyrim。
  • 挖掘 Skyrim: 像 Minecraft 方块一样挖掘 Skyrim 的地面、岩石、道路和物体。挖出的东西会以对应方块形式掉落(草皮下是泥土,然后是带矿石的石头,最后是基岩),挖出的洞对你、NPC 和物品都是真实存在的。TNT、苦力怕和其他爆炸会在 Skyrim 地表炸出弹坑。室内和洞穴的墙壁后方是实心石头。挖掘结果会保存在你的 Minecraft 世界中。暂停菜单(O)左上角的 Skyrim 破坏:开/关 可以关闭该功能(已挖出的洞会保留)。
  • 方块实体: 箱子、床、旗帜、头颅、潜影盒等方块可以显示,活塞可以推动方块。
  • 水和岩浆: 它们会在 Skyrim 的地形上流动,Skyrim 的水可以像 Minecraft 的水一样游泳。
  • 战斗: 用任何 Minecraft 武器攻击 Skyrim NPC,包括弓、三叉戟和 TNT。伤害根据 NPC 等级缩放,NPC 会反击。
    • NPC 会与方块碰撞并绕行寻路。
    • 岩浆和火焰会伤害 NPC,NPC 会踩压力板。
  • Skyrim 进度系统:
    • 你的 Skyrim 技能会通过 Minecraft 玩法升级。剑、锤和工具训练单手武器(One-Handed);斧和矛训练双手武器(Two-Handed);弓和投掷物训练箭术(Archery)。
    • 盾牌训练格挡(Block),受到的攻击会根据你穿着的护甲训练轻甲(Light Armor)或重甲(Heavy Armor)。
    • 制作装备训练锻造(Smithing),蹲伏即 Skyrim 潜行,可训练潜行(Sneak)技能。
  • 视角与死亡: Minecraft 的 F5 视角模式在 Skyrim 中显示你的皮肤和盔甲。死亡时呈现 Skyrim 的死亡镜头,你的 Minecraft 身体会布娃娃化。
  • Skyrim 自带动画: 椅子、制作台、床、拉杆、马匹和脚本场景会暂时把控制权交还给 Skyrim,直到动画结束。
  • 多人游戏(仅限 Minecraft 侧): 同样运行 SkyCraft 的朋友可以通过互联网加入你的 Minecraft 世界(参见与朋友一起玩)。

系统需求

Skyrim

Skyrim Special Edition,Anniversary Edition 运行时(1.6.x / 1.7.x)在 1.7.104 上开发并测试。不支持 SE 1.5.97,不支持 VR。
SKSE64与你的游戏版本对应
Address Library for SKSE Plugins“All in one (Anniversary Edition)” 文件

强烈推荐:Alternate Start - Live Another Life。 Skyrim 的开场(马车之旅和海根镇)脚本化严重,可能与 SkyCraft 不兼容,导致你卡住。Alternate Start 可以跳过它,让你选择新角色的出生地。否则,请从海根镇之后的存档开始游玩。

Minecraft

你只需要一个拥有 Minecraft: Java Edition 的 Microsoft 账户。SkyCraft 自带其他一切:一个配置好 Minecraft 26.3、Fabric、Fabric API 和 SkyCraft Minecraft 模组的便携版 Prism Launcher。Prism 会自行下载 Minecraft 和 Java。

Minecraft 在 Skyrim 旁边隐藏运行。请预留约 3 GB 额外内存、约 1.5 GB 磁盘空间存放 Minecraft 自身文件,以及一块能运行 Minecraft 26.3 的 GPU。

安装

  1. 安装 SkyCraft-<version>.zip,使用 Mod Organizer 2 或 Vortex,像安装其他 SKSE 插件一样。
  2. 通过 SKSE 启动 Skyrim。 首次启动时,SkyCraft 会将其 Minecraft 解压到 %LOCALAPPDATA%\SkyCraft,一个 Prism Launcher 小窗口会要求你登录 Microsoft 账户。Alt-Tab 切换过去登录,然后回到 Skyrim。Prism 会下载 Minecraft、Fabric 和 Java(仅首次需要几分钟),Skyrim 的角落消息会告诉你 Minecraft 何时就绪。
  3. 之后就是全自动的。 Minecraft 随 Skyrim 启动,无窗口无声音,自动打开它的 SkyCraft 世界(一个在你的电脑上创建的新生存世界),并在 Skyrim 关闭时退出。

更新:将新的 SkyCraft zip 覆盖安装在旧版之上。下次启动时也会更新 Minecraft 侧,并保留你的登录信息和世界。

卸载:移除模组,然后删除 %LOCALAPPDATA%\SkyCraft。该文件夹存放 Prism、你的 Microsoft 登录信息(Prism 的)、Minecraft 文件和你的 SkyCraft 世界。

使用你自己的启动器

Data/SKSE/Plugins/SkyCraft.ini 可以让 SkyCraft 指向你自己的 Prism、MultiMC 或 .bat 文件:

[Minecraft]
bStartWithSkyrim = 1              ; 0: 你自己以任意方式启动 Minecraft
sLauncher =                       ; 空:使用 SkyCraft 自带的 Minecraft
sArguments = --launch SkyCraft    ; 你的启动器启动 SkyCraft 实例所需的参数

你的实例需要 Minecraft 26.3、Fabric Loader 0.19.5 或更新版本、Fabric API、Java 25 和 skycraft-fabric-<version>.jar(来自 release),如果希望一开始就隐藏,还需在其 JVM 参数中加入 -Dskycraft.startHidden=true。如果带该模组的 Minecraft 已在运行,SkyCraft 绝不会启动第二个 Minecraft。它通过 Windows shell 启动 Minecraft,因此在 Mod Organizer 下,Minecraft 位于 MO2 的虚拟文件系统之外,不会锁定 MO2。

与朋友一起玩

每个人都需要自己的 Skyrim 和 SkyCraft。只有 Minecraft 世界是共享的:方块、物品、生物以及彼此。最多支持 100 名玩家。每位玩家保留自己的 Skyrim 世界、NPC 和任务。

  1. 主机: 按 O(Minecraft 菜单),选择 Open to LAN,然后 Start LAN World。SkyCraft 内置的 e4mc 会在聊天中生成类似 abc-def.e4mc.link 的链接。点击复制,然后发给朋友。
  2. 朋友: 按 T 并输入 /join abc-def.e4mc.link。你的 Minecraft 会离开自己的世界,加入主机的世界。
  3. /leave 返回你自己的世界。如果主机关闭了世界,你会自动回到自己的世界。

配合 Discord: 游玩时你的 Discord 状态会显示 SkyCraft。将世界对局域网开放后,状态中会出现 加入(Join) 按钮(还可以从 Discord 聊天中邀请朋友)。已运行 Skyrim 和 SkyCraft 的朋友点击即可加入,无需链接。

按键操作

Minecraft 优先。以下按键仍会发送给 Skyrim:

按键功能
GSkyrim 互动:门、NPC(对话)、容器、拉杆、家具
EscSkyrim 菜单(或关闭已打开的 Minecraft 界面)
J / MSkyrim 日志 / 地图
HSkyrim 等待
F9Skyrim 快速读档(读取 Esc 菜单中的存档)
~Skyrim 控制台
OMinecraft 暂停 / 选项菜单

其他所有按键都属于 Minecraft:E 物品栏、F5 视角、T 聊天、/ 命令、Shift 蹲伏/潜行,等等。

已知限制

  • 如果出错,Documents\My Games\Skyrim Special Edition\SKSE\SkyCraft.log 会说明原因。提交 bug 报告时,请在 SkyCraft.ini 中设置 bDiagnostics = 1 以获取详细日志。

  • 卡在"SkyCraft: starting Minecraft…"? 一分钟后 SkyCraft 会说明属于以下哪种情况:

    • Prism Launcher 仍在忙碌。Alt-Tab 切换过去:它可能在下载,或需要你登录,或显示错误。
    • Minecraft 已关闭。其日志位于 %LOCALAPPDATA%\SkyCraft\Prism\instances\SkyCraft\.minecraft\logs\latest.log。
    • Minecraft 在运行但无响应。请连同 SkyCraft.log 和该 latest.log 一起提交报告。

    你需要拥有 Minecraft: Java Edition。

  • Skyrim 的开场(马车和海根镇)可能让你卡住。请使用 Alternate Start 或海根镇之后的存档。

  • 在 Minecraft 驱动玩家时,无法打开 Skyrim 的物品栏、魔法、龙吼和 perk 界面。

  • Minecraft 的攻击只能命中 NPC,无法命中 Skyrim 物体,例如 Bleak Falls Barrow 中 Arvel 周围的蛛网。目前没有切回原版 Skyrim 的游戏内开关。关闭 Minecraft 会将控制权交还给 Skyrim;Minecraft 保留其最后一次自动保存的内容(每隔几分钟一次)。处理完该物体后,重启 Skyrim 让 Minecraft 回来。

  • 告示牌文字尚未渲染。

  • 所有 Skyrim 室内共享同一个 Minecraft 世界,因此在一个室内放置的方块可能会出现在另一个室内的相同坐标上。

  • 多人游戏只同步 Minecraft 世界。每位玩家有自己的 Skyrim,且访客暂时无法攻击自己 Skyrim 中的 NPC。

  • 同样接管相机的模组(Improved Camera SE、SmoothCam、True Directional Movement)会产生冲突。

从源码构建

你需要 Visual Studio 2026(C++)、CMake 3.25+、Git 和 JDK 25。

git clone --recursive <this repo> skycraft
cd skycraft
git clone https://github.com/microsoft/vcpkg .tools\vcpkg
.tools\vcpkg\bootstrap-vcpkg.bat

cd skse
cmake --preset default
cmake --build --preset release

cd ..\fabric
gradlew build

cd ..
powershell -ExecutionPolicy Bypass -File tools\package.ps1 -NoBuild

tools\package.ps1 构建两部分(去掉 -NoBuild),并将发布文件输出到 dist\。

开发相关:

  • fabric\gradlew runClient 启动一个开发用 Minecraft,Skyrim 关闭后它仍会继续运行。
  • 设置 SKYCRAFT_DEPLOY_DIR(preset 默认值:MO2 模组文件夹 mods\SkyCraft,如果存在),每次插件构建会直接复制进 Mod Organizer。
  • docs\DESIGN.md 介绍两部分如何配合,protocol\skycraft_protocol.h 是双方共同遵循的共享内存布局。
文件夹
skse/Skyrim SKSE 插件(C++,CommonLibSSE-NG)
fabric/Minecraft Fabric 模组(Java)
protocol/两者之间的共享内存协议
tools/打包、测试替身(fake_skyrim.py、fake_guest.py)和诊断工具

许可证

MIT