网站首页 > java教程 正文
《我的世界》在不同群体眼中,都是一种不同的存在。所以今天,我叫Minecraft就带领大家看一看,MC在以编程的角度来看时,那个在程序员眼中的,不一样的MC。程序员眼里的MC,和我们有什么不一样?聊聊你不知道的MC。
编程世界里的Minecraft,究竟是一种怎样的存在呢?
?
来自一位Modder:你知道《我的世界》为什么会有这么多的BUG么?因为早期,也就是2009年的时候,Notch决心开发Minecraft的时候,只是计划作为一个小项目来开发,并没有预料到会火到这个程度。而且最初是Notch一个人在制作,所以在底层代码的逻辑构建上,并不是多么的宏观,甚至是混乱。而后续的更新一直是在底层代码的基础上来构建。假设一下,在十年前的汽车发动机上一直修改,改到现在。这个发动机会不会出毛病呢?
?
开发前瞻性不足:也正是由于当初Notch的开发前瞻性不足,导致《我的世界》从根本上,缺乏一些漂亮的逻辑代码架构。所以现在Mojang在开发的时候,我们经常会看到一些字眼。例如重写光照系统,重写水源光影,重写战斗系统等等,实际就是对底层代码的重写。当然,其实也不是完全的重写。依旧要遵循这Notch留下的代码规则来改。
?
MC的地图生成算法:简单来说,《我的世界》一个地图的生成,是分为很多个步骤的。第一个步骤,是生成基础地形,例如平原、山地这样一类的群系。第二个步骤,是河流、树木、洞穴等等。第三个步骤,村庄、要塞、遗迹等等。可以看出,重复多次的结构生成,会产生类似峡谷村庄,峡谷要塞等等这一类奇葩的BUG景象。虽然称之为特性,但从编程的角度,这可能不是什么完美的编码。
?
随机数缺陷造就了特性之美:Minecraft的代码中,大量的运用随机数。这也带动了整个《我的世界》进度的展开。例如随机的区块、随机的生物生成、随机的天气、随机的僵尸围城。随机事件带动情节发展,固然是MC的特色,但因为JAVA随机数的局限性,也同样会出现BUG。就例如种子107038380838084和164311266871034,这两个种子因为随机数的BUG,而导致地形大量的无限循环和重复。
?
最后,从编程的角度来说说《我的世界》流畅性的问题。你是否发现,几乎所有的低端设备,包括电脑,或者是安卓、等游戏主机设备。运行Minecraft的时候,都是极为流畅的。而王者一类的游戏就不行。其实最根本的原因不是MC的优化多么的好,而是Minecraft真的太流行了,几乎所有的设备GPU,也就是图形处理,都会针对MC做专门的优化。这就是MC在游戏界的地位!
?
所以,从这样的一个编程视角来看《我的世界》,虽然它缺陷很多,BUG很多。但无论缺陷也好,特性也罢,它们都造就了时下最火的Minecraft!
看完才知道差距!我们这群普通玩家,体验的是游戏性,而程序员们看到的是代码背后的故事。也许当真你弄懂了一切,再玩《我的世界》会失去原本的乐趣吧!
猜你喜欢
- 2024-10-25 Java唯一ID生成策略(java 生成id)
- 2024-10-25 Hive 自定UDF函数,生成 32 位随机数
- 2024-10-25 Java程序员必备:高薪工作全靠它(java程序员需要学什么)
- 2024-10-25 从编程的角度看,我的世界是一种怎样的存在?聊聊你不知道的MC
- 2024-10-25 Java Random可破解,随机数不再随机,更不安全
- 2024-10-25 JAVA入门:零基础实现幸运抽奖功能
- 2024-10-25 伪随机数生成器(伪随机数生成器 labview)
- 2024-10-25 通过冒泡排序测试Java和PHP性能(冒泡排序选择排序java)
- 2024-10-25 java随机抽取不同元素问题(java随机抽取不同元素问题有哪些)
- 2024-10-25 Java 如何从一个 List 中随机获得元素
你 发表评论:
欢迎- 最近发表
-
- Java内存溢出紧急处理:10个必知的Linux命令快速定位OOM
- 面试常问的 25+ 个 Linux 命令(linux面试命令大全)
- Java堆外内存溢出紧急处理实战:Linux命令定位与Spring Boot解决
- java开发常用的Linux命令,高频的没你想象的多
- Java 应用 CPU 飙升?8 个 Linux 命令组合拳快速锁定异常线程
- Java 开发者线上问题排查常用的 15 个 Linux 命令
- Java程序员必备的Linux命令:让你的工作效率翻倍
- Java程序员必备的Linux命令全解析
- [超全整理] Java 程序员必备的 100 条 Linux 命令大全
- SAP ABAP资源导航(sap aatp)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)