X1aoZhe / OpusMC
git clone https://github.com/X1aoZhe/OpusMC.git
X1aoZhe's OpusMC — 浏览器里运行的 Minecraft 复刻(纯 JavaScript + WebGL2,无引擎无依赖)
+2
stars, 24h · #11,165
+55
stars, 7 days · #3,700
+55
stars, 30 days · #11,812
55
★ total · +55% this week
6
forks · 0 open issues
Star history (as recorded here)
LanguageJavaScript
LicenseMIT
Created2026-10-17 (6d ago)
Last push4d ago
Watchers2
OwnerUser
Links
- GitHub: github.com/X1aoZhe/OpusMC
- Releases · Issues · Hacker News mentions
README excerpt
# X1aoZhe's OpusMC 一个在浏览器里运行的 Minecraft 复刻作品:纯 JavaScript + WebGL2 从零实现(无游戏引擎、无第三方库), 画面素材来自 Minecraft 26.2 官方材质(`tools/build_assets.py` 从 `26.2.jar` 中提取并打包)。 > 这是本项目由 Claude Code 生成的**第一个版本**的存档,按原样开源。 ## 启动方法 [code] 1. **双击 `启动游戏.bat`**(或直接用浏览器打开 `game/index.html`)。无需安装、无需构建。 推荐使用最新版 **Chrome / Edge**(需要 WebGL2,桌面电脑即可)。 2. 标题画面点击 **单人游戏 → 创建新的世界**,选择生存/创造模式与世界类型后进入。 3. 首次点击游戏画面会锁定鼠标;按 `Esc` 暂停并释放鼠标。 > 存档保存在浏览器本地(优先 IndexedDB,不可用时自动改用 localStorage;每 45 秒自动保存,退出世界时保存)。 > 若个别浏览器在 `file://` 下禁止本地存储,可改用 `启动游戏(本地服务器模式).bat`(需要 Python 3), > 它会在 `http://localhost:8765/` 启动一个本地静态服务器。 ## 操作说明 | 按键 | 功能 | |---|---| | W A S D | 移动 | | 空格 | 跳跃 / 游泳上浮;创造模式下**双击**切换飞行 | | 左 Shift | 潜行(不会从方块边缘掉落)/ 飞行时下降 / 起床 | | 左 Ctrl 或 双击 W | 疾跑 | | 鼠标左键(按住) | 挖掘方块 / 攻击生物 | | 鼠标右键 | 放置方块、使用物品、打开工作台/熔炉/箱子、开关门、吃东西、拉弓、睡觉、剪羊毛、喂动物 | | 鼠标中键 | 选取方块 | | 滚轮 / 1–9 | 切换快捷栏 | | E | 物品栏(创造模式为创造物品栏) | | Q / Ctrl+Q | 丢弃一个 / 一组物品 | | T 或 / | 聊天与命令(支持 Tab 补全、↑↓ 历史) | | F1 / F3 / F5 | 隐藏界面 / 调试信息 / 切换第一、第三人称视角 | | H | 游戏内说明(6 页,含配方与命令) | | Esc | 游戏菜单(进度、统计、模式切换、选项、保存并退出) | 物品栏操作与原版一致:左键拿起/放下、右键拿一半/放一个、Shift+左键快速移动、按住拖动平均分配、 双击收集同类、悬停+数字键与快捷栏交换。合成界面左侧有**配方书**,点击即可自动摆放材料(Shift+点击填充最多)。 常用命令:`/gamemode creative|survival`、`/time set day|night`、`/weather clear|rain`、`/give diamond 64`、 `/tp x y z`、`/summon zombie`、`/spawnpoint`、`/seed`、`/kill`、`/xp 100`。 ## 已实现内容 **世界与渲染** - 无限程序化地形:大陆/侵蚀/山峰噪声、河流、海洋、沙滩,12 种生物群系(平原、森林、桦木森林、针叶林、雪原、 沙漠、山地、雪山、河流、海洋、冻洋…),草与树叶按温度/湿度使用官方色图平滑过渡。 - 洞穴(意面洞穴 + 奶酪洞穴)、地下熔岩湖、深板岩层、煤/铁/金/红石/青金石/钻石/绿宝石矿脉、花岗岩等石材团块。 - 橡树、白桦、云杉、大橡树,花草、蕨、甘蔗、仙人掌、枯灌木、南瓜、蘑菇;地下**地牢**与战利品箱子。 - 超平坦世界类型。 - 区块流式加载/卸载,16³ 分段网格,平滑光照 + 环境光遮蔽,天空光/方块光洪水填充与增量更新。 - 昼夜循环(日月、8 种月相、星空、日出日落光晕)、立体云层、雨雪天气、水下/熔岩雾、视角摇晃、受伤镜头倾斜。 - 动画材质(水、熔岩)、半透明水面与染色玻璃、方块破坏裂纹、方块/爆炸/烟雾/火焰/气泡/暴击/爱心等粒子。 - 第一人称手臂与手持物品(工具立体挤出、方块缩略),第三人称/正面视角(F5)显示玩家模型与手持物品。 - 物品图标由 3D 方块实时渲染生成,界面全部使用官方 GUI 贴图与位图字体。 **方块与物品**:155 种方块(含楼梯、台阶、门、活板门、梯子、火把、床、箱子、熔炉、工作台、耕地、小麦、 树苗、羊毛、染色玻璃、混凝土等)与 90 种独立物品(全套木/石/铁/金/钻石工具、皮革/铁/钻石盔甲、弓箭、桶、 剪刀、打火石、骨粉、8 种刷怪蛋、各类食物与材料)。105 条合成配方(合成界面带配方书)、18 种熔炉冶炼与燃料系统。 **机制** - 生存/创造模式:生命、饥饿/饱和度/消耗、自然回血与饥饿掉血、摔落/溺水/岩浆/燃烧/仙人掌伤害、护甲减伤、死亡掉落与重生。 - 按硬度/工具类型/工具等级计算挖掘时间与是否掉落,工具耐久,经验与等级。 - 水与熔岩流动(流向最近的落差,水遇熔岩生成黑曜石/圆石,无限水源),沙子/沙砾重力下落, TNT(打火石点燃、连锁引爆、爆炸破坏地形与击退),草方块蔓延、树叶腐烂、作物生长、甘蔗/仙人掌生长、骨粉催熟、树苗长成树。 - 生物:猪、牛、羊(8 种羊毛颜色、剪羊毛、吃草再生羊毛)、鸡(下蛋、扔鸡蛋孵小鸡)、僵尸、骷髅(射箭)、 苦力怕(膨胀闪烁后爆炸)、蜘蛛(爬墙、白天中立)。AI 包括闲逛、逃跑、跟随手持食物的玩家、繁殖(幼崽成长)、 追击与攻击、避开悬崖和岩浆、阳光下燃烧;怪物在黑暗中生成并按距离消失。 - 睡觉跳过夜晚并设置重生点;门、活板门、音符盒、箱子、熔炉可交互;18 项进度(成就)+ 新手教程提示引导目标。 - 存档:多世界管理(创建/进入/重命名/删除),保存方块修改、玩家、物品栏、箱子与熔炉内容、动物、进度。 **声音**:用 WebAudio 程序化合成的挖掘/放置/脚步(按材质)、受伤、爆炸、引信、拾取、生物叫声、弓箭、门、 溅水等音效,以及随机生成的环境钢琴音乐(未使用任何声音文件)。 ## 目录结构 [code] ## 重新生成材质 `game/js/assets.js` 已随仓库提供。如需从自己的游戏文件重新生成(需要 Python 3 和 Pillow): [code] ## 许可与声明 - 本仓库的**源代码**(`game/js/` 下除 `assets.js` 以外的文件、`game/index.html`、`tools/`、启动脚本)以 MIT 许可证 开源。 - `game/js/assets.js` 中的贴图、GUI 与字体素材提取自 Minecraft 官方资源,版权归 **Mojang Studios / Microsoft** 所有, **不**适用 MIT 许可证,仅为演示用途收录。如权利方要求,将予以移除。 - 本作品为非官方的比赛展示作品,与 Mojang / Microsoft 无关,未获其认可。"Minecraft" 是 Mojang Synergies AB