MinecraftWeb
                                
                                
                                
                                    MinecraftWeb copied to clipboard
                            
                            
                            
                        一个独具创新与真实特色的我的世界风格仿制版游戏
我的世界(仿)
运行(Run)
- 
安卓Android/电脑Windows平台apk/exe运行
国内下载链接:
版本(version) Android版下载(apk) Windows下载(electron) Github查看(release) v1.3-alpha 完整版(30.2MB) exe安装程序(67.3MB) release v1.2.0-alpha 完整版(22.3MB),精简版(6.41MB) exe安装程序(67.3MB) release v1.1.0-alpha 完整版(22.49MB) 未打包(unpackaged) release v1.0.0.3-alpha 完整版(34.06MB),精简版(6.5MB) 未打包(unpackaged) release v1.0.0.1-alpha 完整版(23.88MB) 未打包(unpackaged) release v0.5.0-alpha 完整版(23.87MB),精简版(5.35MB) 未打包(unpackaged) release v0.4.0-alpha 完整版(23.85MB),精简版(5.34MB) 未打包(unpackaged) release v0.3.2-alpha 原始版(0.89MB) 未打包(unpackaged) release  - 
网页版运行:可以直接访问 https://minecraftweb.netlify.app/home.html (较快) 或 https://wzh656.github.io/MinecraftWeb/home.html (GitHub版) 运行。
注意:
- GitHub是国外网站,网络不好将无法访问
 - 部分旧版浏览器可能不支持(推荐使用Chrome最新版浏览器以便正常运行)
 - 竖屏运行时会有一个提示使用横屏或者下载,若浏览器支持横屏,可以将手机横屏使用; 也可以点击关闭,直接竖屏运行
 
派生网站(国内)
由其他开发者clone项目部署产生的网站(鉴于其他开发者无法同步最新修改,推荐运行最新网页)
 - 
git clone:当然也可以直接克隆本仓库https://github.com/wzh656/MinecraftWeb.git, 然后用浏览器(推荐Chrome)直接运行
home.html(也可以放到服务器环境打开), 如果npm安装了electron也可以用electron: npm run test 也就是 electron . 
介绍 (Introduction)
(零)序
本项目是基于《我的世界》游戏风格的仿造,仿造原则是:
在原版风格基础上创新性地增加游戏真实性,但拒绝完全复制(体现在“仿”字),
同时处理好创新与真实的关系,既在创新之中体现真实,又在真实之中发展创新,故名之两个原则
《我的世界》风格的界面仅是一个载体和躯壳,却非真正的灵魂所在。
三个战略
目前,本项目仍处在初级发展阶段,bug和性能方面都不是很好。对此,根据真实性原则,需要坚持三个战略(即改革优化创新战略):
- 改革:泛指修bug与代码体系修改;
 - 优化:泛指不断提高运行速度,增加FPS,减小CPU及内存占用等;
 - 创新:泛指不断发展新功能。
 
目前阶段,这三个战略缺一不可,并且是当前发展中需长期坚持的主要及重要战略。
(一)总述
本项目使用兼容多平台的JavaScript(ES6+)+HTML(HTML5+)+CSS3编写,利用WebGL技术,依赖Three.js进行更便捷的3D渲染。
之所以选择JavaScript+HTML+CSS是因为便于绘制图形化界面(HTML5+CSS3),并易于打包成EXE(electron)和APK(HTML5+)以兼容各个平台
规定:世界中的每1px为1cm,每100px为1m,每个普通方块为边长1m=100cm=100px的立方体。
注:deskgood~~为某初中同桌的外号~~,作为游戏主角名,莫要在意名称
(二)操作方式(Operation)
电脑版
| 事件 | 操作 | 
|---|---|
W S A D | 
前 后 左 右方向移动(move) | 
| 鼠标左键 | 删除所指位置的方块(remove) | 
| 鼠标右键 | 在所指位置放置手中选中方块(place) | 
| 鼠标中键 | 重置时间流速(1.0倍) | 
| 鼠标滚轮 | 来回切换手中选中方块 | 
shift+鼠标滚轮 | 
以1.5倍比例调节时间流速 | 
| 空格 | 跳跃(jump) | 
双击W,或 Ctrl+W | 
疾跑(run) | 
ESC | 
暂停游戏/关闭交互窗口(命令方块、背包) | 
Pause-Break | 
暂停/开始游戏 或 关闭交互窗口(命令方块、背包) | 
F2 | 
截图 | 
F3 | 
打开/关闭dat.gui | 
shift+F3 | 
关闭/开启调试(将自动刷新) | 
F4 | 
开始/停止录屏 | 
手机版(触屏版)
- 移动:左边的大圆
摇杆操作,
touch移动控制行走,拖拽超过100px疾跑 - 跳跃:右边的小圆
可以与移动同时操作。
按下(touch-start)之后,如果脚下有方块并且距离上一次跳跃超过约1s(需有休息时长), 则将沿着y轴正半轴方向以约5m/s的速度跳起来 - 滑动屏幕界面:转动角色视角
 - 短按屏幕界面:
touch<1s 放置('deskgood.put')当前手中选中的方块到点击处 - 长按屏幕界面:
touch>1s 删除('deskgood.delete')点击处的方块并将其放入手中(优先放入选中处) - 点击下方工具栏方块: 选中手中的方块
 
(三)引入的调试工具(Shift+F3关闭/显示)
由于项目长期处于调试状态,调试工具可能默认开启,调试工具可能影响游戏性能,若无需使用请按Shift+F3关闭
- 
state.js:左上角Canvas
可以使用该工具查看当前渲染状态,该工具有3种状态,点击切换
- fps:蓝色/fps
查看当前每秒可渲染的帧数,1s更新1次 - ms:绿色/ms
查看渲染每帧需要的时间/ms,渲染1帧更新1次 - MB:红色/MB
查看当前运行占用的内存/MB(兆字节) 
 - fps:蓝色/fps
 - 
dat.gui.js:右上角
点击可展开,内含一些配置调试选项
注意:对性能有很大影响,可按shift+F3隐藏(会重新加载页面生效) - 
VConsole与eruda:右下角(可拖动)
手机调试工具,点击右下角即可看到一堆输出,可以调试html+css+js,也可以运行JavaScript代码,等效于命令方块
 
(四)功能 & 计划
特色创新功能(Feature)
- [x] 通过 
F=ma,v=at,s=vt等经典物理公式计算玩家运动加速度、速度及位移 - [x] 考虑空气阻力 
f = 1/2*CρSV²对玩家的影响 - [x] 考虑宇宙无规则随机扰动产生的蝴蝶效应对一切参数数据的影响
 - [x] 【特性】
XYZ轴均无限、区块无限的世界 - [x] 【特性】爬树功能
 - [x] 根据玩家设置的经纬度和开始日期时间计算日出日落时间和天空颜色、环境光颜色
 - [x] 具有降雨量控制天气系统
 - [x] 根据种子(
seed)用柏林噪声(simplexNoise)随机生成的具有区块类型、地形、土壤层厚度、树高、树叶高、降雨量等完善属性的区块系统 - [x] 独立于现实且可更改流速、可进行
setTimeout,setInterval,clearTimeout,clearInterval操作的时间系统 
注:此处的特性指偶然的产生功能
计划(Plans)
- [ ] 【doing】【创新】玩家状态界面:健康、饥饿、口渴、精神、疲惫、经验等
 - [ ] 【doing】【创新】工具物品合成界面
 - [ ] 【改革】使用
Babylon.js和js模块化重写 - [ ] 【优化】尝试使用多线程工作(除涉及
scene等主线程对象以外) - [ ] 【改革】使游戏更加科学:加入物理引擎,方块重力及电磁力
 - [ ] 【创新】联机:尝试使用内网联机(
electron)和服务器外网联机 - [ ] 更多……【未解密】天机不可泄露
 
注:计划赶不上变化
(五)感谢(Thanks)
- 
感谢deskgood对本项目的支持并提供了一些想法和建议
 - 
@jason-bowen-zheng提供了一些交流与建议
 
(六)关于代码
允许非商业用途的阅读、使用、复制、分发代码,
修改借鉴代码和派生作品请先告知作者,
欢迎为代码的完善和新的功能提出建议或想法。
(八)更多(More)
更多特性请自行运行尝试或在代码中领悟。