# MinecraftWeb
**Repository Path**: jason-bowen-zheng/MinecraftWeb
## Basic Information
- **Project Name**: MinecraftWeb
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2020-08-25
- **Last Updated**: 2021-11-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 我的世界(仿)
[](https://gitter.im/wzh656/Minecraft?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[](https://github.com/wzh656/MinecraftWeb)
[](https://github.com/wzh656/MinecraftWeb)
[](https://github.com/wzh656/MinecraftWeb)
[](https://github.com/wzh656/MinecraftWeb/releases/download/1.2.0-alpha/Minecraft-v1.2.0-alpha-full.apk)
[](https://github.com/wzh656/MinecraftWeb/zipball/master)

> # 运行(Run)
1. 手机版(Android apk软件)/电脑Windows版(electron实现)运行
国内链接: [腾讯微云永久下载链接(v1.1.0+,apk&electron)](https://share.weiyun.com/WkQTgj8H)
| 版本(version) | Android版下载(apk) | Windows下载(electron) | Github查看(release) |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| v1.2.0-alpha | [完整版(22.3MB)](https://github.com/wzh656/MinecraftWeb/releases/download/1.2.0-alpha/Minecraft-v1.2.0-alpha-full.apk),[简化版(6.41MB)](https://github.com/wzh656/MinecraftWeb/releases/download/1.2.0-alpha/Minecraft-v1.2.0-alpha-simplified.apk) | [exe安装程序(67.3MB)](https://github.com/wzh656/MinecraftWeb/releases/download/1.2.0-alpha/Minecraft-v1.2.0-win32-x64-installProgram.exe) | [release](https://github.com/wzh656/MinecraftWeb/releases/tag/1.2.0-alpha) |
| v1.1.0-alpha | [完整版(22.49MB)](https://github.com/wzh656/MinecraftWeb/releases/download/v1.1.0-alpha/Minecraft.apk) | 未打包(unpackaged) | [release](https://github.com/wzh656/MinecraftWeb/releases/tag/v1.1.0-alpha) |
| v1.0.0.3-alpha | [完整版(34.06MB)](https://github.com/wzh656/MinecraftWeb/releases/download/v1.0.0.3-alpha/full.apk),[简化版(6.5MB)](https://github.com/wzh656/MinecraftWeb/releases/download/v1.0.0.3-alpha/simplified.apk) | 未打包(unpackaged) | [release](https://github.com/wzh656/MinecraftWeb/releases/tag/v1.0.0.3-alpha) |
| v1.0.0.1-alpha | [完整版(23.88MB)](https://github.com/wzh656/MinecraftWeb/releases/download/v1.0.0.1-alpha/Minecraft-full.apk) | 未打包(unpackaged) | [release](https://github.com/wzh656/MinecraftWeb/releases/tag/v1.0.0.1-alpha) |
| v0.5.0-alpha | [完整版(23.87MB)](https://github.com/wzh656/MinecraftWeb/releases/download/v0.5.0-alpha/Minecraft-full.apk),[简化版(5.35MB)](https://github.com/wzh656/MinecraftWeb/releases/download/v0.5.0-alpha/Minecraft-simplified.apk) | 未打包(unpackaged) | [release](https://github.com/wzh656/MinecraftWeb/releases/tag/v0.5.0-alpha) |
| v0.4.0-alpha | [完整版(23.85MB)](https://github.com/wzh656/MinecraftWeb/releases/download/v0.4.0-alpha/Minecraft-full.apk),[简化版(5.34MB)](https://github.com/wzh656/MinecraftWeb/releases/download/v0.4.0-alpha/Minecraft-simplified.apk) | 未打包(unpackaged) | [release](https://github.com/wzh656/MinecraftWeb/releases/tag/v0.4.0-alpha) |
| v0.3.2-alpha | [原始版(0.89MB)](https://github.com/wzh656/MinecraftWeb/releases/download/v0.3.2-alpha/Minecraft_v0.3.2-alpha.apk) | 未打包(unpackaged) | [release](https://github.com/wzh656/MinecraftWeb/releases/tag/v0.3.2-alpha) |
2. 网页版运行:当前可以直接访问 运行。,
> 注意
> 1. GitHub是国外网站,网络不好将**无法访问**
> 2. 部分旧版浏览器可能不支持(推荐使用google chrome浏览器以便正常运行)
> 3. 竖屏运行时会有一个提示使用横屏或者下载,如果浏览器支持横屏,可以将手机横屏使用;
> 也可以点击关闭,直接竖屏运行(可能界面显示会有些奇怪)
3. git clone:当然也可以直接克隆仓库,
然后用浏览器(推荐Chrome)直接运行`home.html`(也可以放到服务器环境打开),
如果`npm`安装了`electron`也可以用`electron`:
npm run test
也就是
electron .
> # 介绍 (Introduction)
## (零)序
本游戏是基于《我的世界》游戏思想的仿造,仿造原则是:
在原版基础上**增加游戏真实性**(比如在物理和化学方面),但拒绝完全复制(体现在“*仿*”字),故名之***真实性原则***。
《我的世界》风格的界面只是一个*载体*和*躯壳*,却不是真正的*灵魂*所在,一切的一切只是面壁者透露出的*表象*。
### 战略方针
目前,本游戏仍处在初级发展阶段,bug和性能方面都不是很好。对此,根据*真实性原则*,需要坚持*三个战略*(总称*改革优化创新战略*):
1. ***改革***:泛指修bug与代码体系修改;
3. ***优化***:泛指不断提高运行速度,增加FPS,减小CPU及内存占用等;
2. ***创新***:泛指不断发展新功能。
目前阶段,这三个战略缺一不可,并且是当前发展中需长期坚持的主要及重要战略。
## (一)总述
本游戏使用JavaScript(ES6+)+HTML(HTML5)+CSS(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) |
| *鼠标滚轮* | 来回切换手中选中方块 |
| `shift`+*鼠标滚轮* | 以1.5倍比例调节时间流速 |
| *空格* | 跳跃(jump) |
| 双击`W`,或 `Ctrl`+`W` | 疾跑(run) |
| `ESC` | 暂停游戏/关闭交互窗口(命令方块、背包) |
| `Pause-Break` | 暂停/开始游戏 或 关闭交互窗口(命令方块、背包) |
| `F2` | 截图 |
| `F10` | 打开/关闭dat.gui |
| `shift`+`F3` | 关闭调试(将重载生效) |
> ### 手机版(摇杆)
1. 移动:左边的大圆
摇杆操作,`touch`移动控制行走
2. 跳跃:右边的小圆
可以与移动同时操作。
按下(`touch-start`)之后,如果脚下有方块并且距离上一次跳跃超过1s,
则将沿着y轴正半轴方向以≈5m/s的速度跳起来
3. 短按屏幕界面:`touch`<1s
放置('deskgood.put')当前手中选中的方块到点击处
4. 长按屏幕界面:`touch`>1s
删除('deskgood.delete')点击处的方块并将其放入手中(优先放入选中处)
5. 点击工具栏方块:
选中手中的方块
## (三)引入的js工具(F3隐藏/显示)
+ > *state.js*:左上角Canvas
可以使用该工具查看当前渲染状态,该工具有3种状态,点击切换
+ fps:蓝色/fps
查看当前每秒可渲染的帧数,1s更新1次
+ ms:绿色/ms
查看渲染每帧需要的时间/ms,渲染1帧更新1次
+ MB:红色/MB
查看当前运行占用的内存/MB(兆字节)
+ > *dat.gui.js*:右上角
点击可展开,内含一些配置调试选项
注意:对性能有很大影响,可按`shift`+`F3`隐藏(会重新加载页面生效)
+ > *VConsole*与*eruda*:右下角
手机调试工具,点击右下角即可看到一堆输出,可以调试html+css+js,也可以运行JavaScript代码,等效于*命令方块*
## (四)功能 & 计划
### 部分值得一提的功能
1. [x] 通过 `F=ma`, `v=at`, `s=vt` 等物理公式计算玩家位置
2. [x] 考虑空气阻力 `f = 1/2*CρSV²` 对玩家的影响
3. [x] 考虑宇宙无规则随机扰动对一切参数数据的影响
4. [x] 【特性】`XYZ`轴均无限、区块无限的世界
5. [x] 【特性】爬树功能
6. [x] 根据玩家设置的*经纬度*和*开始日期*计算日出日落时间和天空颜色、环境光颜色
7. [x] 具有降雨量控制天气系统
8. [x] 用柏林噪声`simplexNoise`根据种子(seed)随机生成的区块类型、地形、土壤层厚度、树高、树叶高、降雨量和完善的区块系统
9. [x] 独立于外界且可更改流速、可进行`setTimeout`, `setInterval`, `clearTimeout`, `clearInterval`的时间系统
> 注:此处的*特性*指偶然的产生功能
### 计划(plans)
1. [ ] 【创新】实体:编写实体类`class Entity`,具有不规则形状、碰撞箱、位置、旋转、速度的非方块物体
2. [ ] 【创新】工具:编写新的工具类`class Tool`,并增加挖掘时间和挖掘损耗
3. [ ] 【创新】玩家状态界面:健康、饥饿、口渴、精神、疲惫等
4. [ ] 【创新】工具合成界面
5. [ ] 【创新】【改革】使游戏更加科学:方块重力及电磁力
6. [ ] 【优化】【改革】尝试使用多线程工作(除涉及`scene`等主线程对象以外)
7. [ ] 【优化】【改革】尝试使用asm.js或wasm工作
8. [ ] 【创新】联机:尝试使用内网联机('electron')
9. [ ] 更多……【未解密】天机不可泄露
> 注:计划赶不上变化
## (五)感谢(thanks)
+ 感谢“*卓佳浩*”和“*deskgood*”对本游戏的大力支持鼓励
+ [*@jason-bowen-zheng*](https://github.com/jason-bowen-zheng)提供了一些交流与建议
## (六)关于代码
允许非商业用途的阅读、使用、复制、分发代码,
修改借鉴代码和派生作品请先告知作者,
欢迎为代码的完善和新的功能提出建议或想法。
## (七)更多(more)
*画面庞杂精细的《清明上河图》的信息量远不如几朵飘渺的白云背后的信息量。* 同样,一个内容复杂的文档不如一张简洁的白纸深处隐藏的信息量大。
为了保留神秘感,则仅介绍至此,文档可能长时间不会有较大更新,更多*特性*请自行[运行尝试](#运行)或*在代码中领悟*