我的世界 为何用java开发?

news/2024/10/17 20:23:46/

mc用java开发就很好滴说明了一点编程语言本身只是个工具工具的意义在于被使用,老外搞这些工具,都带有一个明确的目的性,就是我要做什么然后再来看,我们怎么用手头上的工具将其实现。

mc的开发人员最早就是一个普通的java程序员,是因为他自己喜欢玩这类型的游戏,所以他就想着,诶,如何用他手中的技术,将他想要玩的东西实现。

另外,很多人可能不知道,mc的流行,跟mod的制作简单方便也有很大关系,很多玩mc的,其实并不是在mc,而是在玩mc的mod。

java本身的简单,健壮,使得mc开发mod也变得很容易因为开发mod容易,所以使得mc的mod是极大丰富了mc的生态,也在客观上提升了mc的玩家数量。

所以搞技术的时候,跟老外交流,是非常愉悦的,因为老外不管做什么技术都会首先跟你讲清楚,我们要做什么然后我们再来看,用手头上的工具怎么做。如果实在不行,我们再来看,怎么解决也正是这种思路,使得java等技术本身在逐年进步这个解决问题的思路。

你可能也听说过,你老板肯定就是这么思考问题的。

比如,怎么把大象塞入冰箱啊?一个不动脑子的工具人就会第一反应:不可能,做不到。

但是一个有脑子的潜在老板就会这么思考问题,别不着急说不可能,我们先来分析问题我们先看一下,大象有多大?冰箱有多大?如果冰箱尺寸大于大象尺寸,问题解决如果小于冰箱尺寸,那么请问,冰箱可以不可以用多个啊?大象能不能被拆分啊?大象岁数有多大啊?可以不可以是刚出生的大象啊?冰箱能不能定制啊?

所谓方法总比困难多,经过这么一分析,很多问题就迎刃而解了同样道理,你用这个方法去分析一下作者当时所在的环境。

先定义问题:我要实现一个模拟积木的软件?

分析问题:我手头上有什么工具,我会java,java是一个编程语言,那么我能不能用java来实现这个游戏啊?

如果不可以,请具体描述困难在哪里,看看我自己能不能克服。

其次,客户能不能接受。

当时有一个困难就是,需要一个美术人员做配合,那怎么办呢?作者找了他brother,不知道这个是哥哥还是弟弟,然后就由他来解决美术问题。

还有一个困难就是3d渲染,后来作者找了lwjgl来解决这个问题。

可能会有人说gc问题,这个后来市场验证,客户似乎并不是很在乎gc,其实你真做游戏就知道,gc那点停顿,很多人是能接受的,当然现在这种困难也被zgc所克服,然后一步一步,就有了后来mc的样子。

所以这就是一个普通工具人(打工人)跟一个老板本质上的不同。

很多机会,在工具人看来,那就不是机会。但是老板会把机会变成真正的产品。国内的程序员,跟客户之间,永远就隔着一个老板。所以有句话说,腾讯最优秀的,不是他的技术(就是程序员),而是他的产品经理。国内游戏行业也一直流传一句话,叫做一流的美工,二流的策划,三流的老板,不入流的技术。

说的就是这么一个道理,国内的这些人呢,一般就是两句话总结:事先你不行,事后我也行。就比如mc作者如果在国内,他站出来说,我要用java做一个积木游戏。肯定会有无数的人跟他讲,你不行的。然后等到他做出来之后,也会有n多人出来说,mc的代码写得真烂。

 


http://www.ppmy.cn/news/51147.html

相关文章

JavaScript小记——JSON

目录 JSON概念 JSON语法规则 JSON 数据 - 一个名称对应一个值 JSON 对象 JSON 数组 JSON字符串转JSON对象 JSON对象转JSON字符串 JSON遍历 this的介绍 JSON 是用于存储和传输数据的格式。 JSON 通常用于服务端向网页传递数据 。 JSON概念 JSON 英文全称 Java…

vue页面内嵌iframe使用postMessage进行数据交互(postMessage跨域通信)

什么是postMessage postMessage是html5引入的API,它允许来自不同源的脚本采用异步方式进行有效的通信,可以实现跨文本文档,多窗口,跨域消息传递.多用于窗口间数据通信,这也使它成为跨域通信的一种有效的解决方案. vue父页面(嵌入iframe的页面) 在vue中…

微信小程序原生开发功能合集十三:列表界面的实现

本章实现列表展示组件,包括列表数据加载、筛选、分页加载、快速搜索等功能。   另外还提供小程序开发基础知识讲解课程,包括小程序开发基础知识、组件封装、常用接口组件使用及常用功能实现等内容,具体如下:    1. CSDN课程: https://edu.csdn.net/course/detail/379…

3 redis线程IO模型

1 IO模型 1.1 IO IO (Input/Output&#xff0c;输入/输出)即数据的读取&#xff08;接收&#xff09;或写入&#xff08;发送&#xff09;操作&#xff0c;通常用户进程中的一个完整IO分为两阶段&#xff1a;用户进程空间<–>内核空间、内核空间<–>设备空间&…

Python Web开发技巧III

字符串类型与日期类型的互换 字符串 > 日期类型与 日期类型 > 字符串&#xff0c;就单纯SDK操作&#xff0c;简洁写法&#xff0c;开发使用这种写法就OK了。 from datetime import datetime, date# str -> datetime res1 date(*map(int, "2023-04-25".sp…

LeetCode 2418. 按身高排序

【LetMeFly】2418.按身高排序 力扣题目链接&#xff1a;https://leetcode.cn/problems/sort-the-people/ 给你一个字符串数组 names &#xff0c;和一个由 互不相同 的正整数组成的数组 heights 。两个数组的长度均为 n 。 对于每个下标 i&#xff0c;names[i] 和 heights[i…

根据身高排序(力扣2418)

问题&#xff1a; 给你一个字符串数组 names &#xff0c;和一个由 互不相同 的正整数组成的数组 heights 。两个数组的长度均为 n 。 对于每个下标 i&#xff0c;names[i] 和 heights[i] 表示第 i 个人的名字和身高。 请按身高 降序 顺序返回对应的名字数组 names 。 示例 …

第4章:运算符

1.算术运算符 ① SELECT 10010,100-35.5,100*2,100/2,100%30 FROM DUAL;②在sql中“”没有连接作用&#xff0c;表示加法运算&#xff0c;字符串转换为数值&#xff08;隐式转换&#xff09;。非数值看作0处理 SELECT 1001 1 FROM DUAL;SELECT 100 a FROM DUAL;③加法运算…