Skip to content
X1aoZhePublic

About

X1aoZhe's OpusMC — 浏览器里运行的 Minecraft 复刻(纯 JavaScript + WebGL2,无引擎无依赖)

Resources

Stars

55 stars

Watchers

2 watching

Forks

Repository files navigation

X1aoZhe's OpusMC

一个在浏览器里运行的 Minecraft 复刻作品:纯 JavaScript + WebGL2 从零实现(无游戏引擎、无第三方库), 画面素材来自 Minecraft 26.2 官方材质(tools/build_assets.py 从 26.2.jar 中提取并打包)。

这是本项目由 Claude Code 生成的第一个版本的存档,按原样开源。

启动方法

git clone https://github.com/X1aoZhe/OpusMC.git
  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 程序化合成的挖掘/放置/脚步(按材质)、受伤、爆炸、引信、拾取、生物叫声、弓箭、门、 溅水等音效,以及随机生成的环境钢琴音乐(未使用任何声音文件)。

目录结构

启动游戏.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 的商标。

About

X1aoZhe's OpusMC — 浏览器里运行的 Minecraft 复刻(纯 JavaScript + WebGL2,无引擎无依赖)

Resources

Stars

55 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages