一个在浏览器里运行的 Minecraft 复刻作品:纯 JavaScript + WebGL2 从零实现(无游戏引擎、无第三方库),
画面素材来自 Minecraft 26.2 官方材质(tools/build_assets.py 从 26.2.jar 中提取并打包)。
这是本项目由 Claude Code 生成的第一个版本的存档,按原样开源。
git clone https://github.com/X1aoZhe/OpusMC.git- 双击
启动游戏.bat(或直接用浏览器打开game/index.html)。无需安装、无需构建。 推荐使用最新版 Chrome / Edge(需要 WebGL2,桌面电脑即可)。 - 标题画面点击 单人游戏 → 创建新的世界,选择生存/创造模式与世界类型后进入。
- 首次点击游戏画面会锁定鼠标;按
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 程序化合成的挖掘/放置/脚步(按材质)、受伤、爆炸、引信、拾取、生物叫声、弓箭、门、 溅水等音效,以及随机生成的环境钢琴音乐(未使用任何声音文件)。
启动游戏.bat 双击启动
启动游戏(本地服务器模式).bat 备用启动(需要 Python)
game/index.html 游戏入口
game/js/assets.js 由官方材质打包生成的贴图数据
game/js/*.js 游戏源码(世界生成、渲染、实体、界面、存档…)
tools/build_assets.py 从 26.2.jar 提取并打包材质的脚本
tools/serve.py 无缓存本地服务器
game/js/assets.js 已随仓库提供。如需从自己的游戏文件重新生成(需要 Python 3 和 Pillow):
pip install pillow
py tools/build_assets.py "<.minecraft>/versions/26.2/26.2.jar"- 本仓库的源代码(
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 的商标。