使命召唤ol键位技巧nline改键位点应用的时候就会现实检测到有重要命令未绑定按键,游戏将无法正常进行

这是我的房子&br&&img src=&/92ae6c3f527fed24f3ff1a_b.jpg& data-rawwidth=&2560& data-rawheight=&1920& class=&origin_image zh-lightbox-thumb& width=&2560& data-original=&/92ae6c3f527fed24f3ff1a_r.jpg&&某天下午不知道是打雷把我的木头房子点燃了还是怎样,&br&&img src=&/8b8ffbf91e3d816afeeb3d_b.jpg& data-rawwidth=&1360& data-rawheight=&704& class=&origin_image zh-lightbox-thumb& width=&1360& data-original=&/8b8ffbf91e3d816afeeb3d_r.jpg&&&br&我的房子就这样在我没注意的情况下迷之起火了。。&br&&img src=&/c440d1fe8c1047db20dde18fcdd8c537_b.jpg& data-rawwidth=&1360& data-rawheight=&704& class=&origin_image zh-lightbox-thumb& width=&1360& data-original=&/c440d1fe8c1047db20dde18fcdd8c537_r.jpg&&&img src=&/ee3bcb5f2d8fd35b38b8ee66946ad8fb_b.jpg& data-rawwidth=&1360& data-rawheight=&768& class=&origin_image zh-lightbox-thumb& width=&1360& data-original=&/ee3bcb5f2d8fd35b38b8ee66946ad8fb_r.jpg&&火势非常大..上图中的水是我从附近小河取来的&br&以为只有一个火源在燃烧,泼一桶水就能解决,然而我太天真了。。&br&&img src=&/96d69cdd0b5da795b12f0e73fc18b68a_b.jpg& data-rawwidth=&1360& data-rawheight=&704& class=&origin_image zh-lightbox-thumb& width=&1360& data-original=&/96d69cdd0b5da795b12f0e73fc18b68a_r.jpg&&&br&第二天&img src=&/62a811e70cff668e1cc80c_b.jpg& data-rawwidth=&1360& data-rawheight=&704& class=&origin_image zh-lightbox-thumb& width=&1360& data-original=&/62a811e70cff668e1cc80c_r.jpg&&红色的花实在是太可怕了。。&br&我不知道这游戏好不好玩,我只知道看了我的故事你或许会认为这游戏很有趣。。&br&对不起大家,我已把“高票,同学就吃手机”的部分删除啦,我对不起大家的票(?o?︿o??)
这是我的房子 某天下午不知道是打雷把我的木头房子点燃了还是怎样, 我的房子就这样在我没注意的情况下迷之起火了。。 火势非常大..上图中的水是我从附近小河取来的 以为只有一个火源在燃烧,泼一桶水就能解决,然而我太天真了。。 第二天红色的花实在是太…
什么时候开挂玩FPS游戏的人都能大声说话了?&a href=&///people/7f0b85c44ccaf132c4d6c& data-hash=&7f0b85c44ccaf132c4d6c& class=&member_mention& data-hovercard=&p$b$7f0b85c44ccaf132c4d6c&&@杨宇琛&/a&&br&你别删答案呀?我都截图了&br&&br&本来是被这位仁兄的kill rating深深吸引,手贱去查了一波战绩&br&&img data-rawheight=&2208& src=&/v2-19d85fd2ba4aa8a991818_b.png& data-rawwidth=&1242& class=&origin_image zh-lightbox-thumb& width=&1242& data-original=&/v2-19d85fd2ba4aa8a991818_r.png&&&br&43.5%的爆头率!我发现了一位新的fps界新星,战神啊!天才啊!&br&&br&没想到&img data-rawheight=&308& src=&/v2-0e4df47ffe29cfd178eef9ce26fa6e00_b.jpg& data-rawwidth=&905& class=&origin_image zh-lightbox-thumb& width=&905& data-original=&/v2-0e4df47ffe29cfd178eef9ce26fa6e00_r.jpg&&&br&不可能用挂的,这辈子不可能用挂玩游戏的,守望先锋500强怎么会用外挂打游戏呢?&br&&br&然后被封号一个星期后,还要强答一波问题&img data-rawheight=&2208& src=&/v2-7e78a9d832dd72e13e96ce_b.png& data-rawwidth=&1242& class=&origin_image zh-lightbox-thumb& width=&1242& data-original=&/v2-7e78a9d832dd72e13e96ce_r.png&&&br&&img data-rawheight=&2048& src=&/v2-62e7b0b0b9fc251f22f4a78e7defcad8_b.png& data-rawwidth=&1152& class=&origin_image zh-lightbox-thumb& width=&1152& data-original=&/v2-62e7b0b0b9fc251f22f4a78e7defcad8_r.png&&&br&真是乏趣的游戏,哼,阈值真低&br&&br&恕我直言,开挂玩FPS游戏还恶意炫耀的人,都是垃圾&br&&br&分割线&br&知乎真好玩,这里玩OW的个个都是500强,就算不是也认识好多500强的朋友,你们的交际圈一定高度重复吧hh&br&&br&&br&另外感谢恩基爱版友实力破案
什么时候开挂玩FPS游戏的人都能大声说话了? 你别删答案呀?我都截图了 本来是被这位仁兄的kill rating深深吸引,手贱去查了一波战绩 43.5%的爆头率!我发现了一位新的fps界新星,战神啊!天才啊! 没想到 不可能用挂的,这辈子不可能用挂玩游戏的,…
&h2&&b&最详细易懂的基本操作大全&/b&&/h2&&p&&br&&/p&&p&如果你身边有想入手吃鸡或者刚入手吃鸡的老铁&/p&&p&快转发这个给他(她)看吧&/p&&p&提升水平效果杠杠的&/p&&p&&br&&/p&&p&&b&首先我们来看官方的键位说明&/b&&/p&&img src=&/v2-6351aae1da5fde6f2928b_b.jpg& data-caption=&& data-rawwidth=&743& data-rawheight=&1744& class=&origin_image zh-lightbox-thumb& width=&743& data-original=&/v2-6351aae1da5fde6f2928b_r.jpg&&&p&看着是不是有点懵?没关系,尼克来按场景进程,逐个分析一下
&/p&&p&&br&&/p&&h2&行动操作(揽件)篇:&/h2&&p&首先开始的时候是跳伞&/p&&p&&br&&/p&&img src=&/v2-c8fdd861b0183bdb8db4f7_b.jpg& data-caption=&& data-rawwidth=&990& data-rawheight=&680& class=&origin_image zh-lightbox-thumb& width=&990& data-original=&/v2-c8fdd861b0183bdb8db4f7_r.jpg&&&blockquote&所以这些人每次坐飞机都在想啥?&/blockquote&&p&&br&&/p&&p&首先按T是语音键,这也是这个吹比游戏最重要的按键&/p&&p&如果是排野队,请和队友友好地打一下招呼&/p&&p&按F键出舱起飞&/p&&p&跳伞的时候,请全程按住W保证加速状态&/p&&p&鼠标上拉,远距离飞行状态(最慢速度下落)&/p&&p&鼠标下拉,最快速度原地垂直下落&/p&&img src=&/v2-87ab0f76f11b4b09a78e95e_b.jpg& data-caption=&& data-rawwidth=&402& data-rawheight=&447& class=&content_image& width=&402&&&blockquote&跳伞时左下角状态栏的意义见图&/blockquote&&p&&br&&/p&&p&鼠标拉到最上时,图中降落速度为126km,此时飞的最远&/p&&p&鼠标拉到最下时,图中降落速度为234km,此时降的最快&/p&&p&(小技巧,当快到强制开伞时,下拉加速到234km,保证一个下降初速度,可以使你比别人能够更早到达地面)&/p&&p&跳伞进阶攻略可见:&a href=&/question//answer/& class=&internal&&院长尼克:绝地求生跳伞有什么技巧?&/a&&/p&&p&&br&&/p&&p&&b&到达地面:&/b&&/p&&p&WASD+鼠标的FPS基本操作就不多说了
&/p&&p&F:平时可以是捡东西,也是开门/关门&/p&&p&TAB:物品栏,可以用使用/装备/丢弃物品&/p&&p&右键使用/装备物品,左键拖动可以丢弃,拖到相应上也可以装备&/p&&p&当你左键拉取物品时,相应发白的框便是该物品对应的物品栏&/p&&p&(小技巧:用F捡东西有时间延迟,按住TAB可以查看地上物品,在要连续捡多个物品的情况下,用TAB直接拖物品到背包更省时间)&/p&&img src=&/v2-1d7c0a75db_b.png& data-caption=&& data-rawwidth=&976& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&976& data-original=&/v2-1d7c0a75db_r.png&&&blockquote&鼠标放在瞄准镜时,可以看到右边M416瞄准镜栏发白了
&/blockquote&&p&&br&&/p&&p&Z:趴下&/p&&p&C:半蹲&/p&&p&这两个体位对于这个LYB游戏还是很重要的&/p&&p&毕竟后期大家都是伏地魔&/p&&p&Shift:跑步前进&/p&&p&(小技巧,喝两瓶功能饮料可以使得跑步速度加快)&/p&&p&&br&&/p&&p&ALT:自由视角&/p&&p&ALT这个键位容易被新玩家忽略&/p&&p&实际上ALT可以保证你向一个方向跑的同时&/p&&p&可以兼顾观察四周的动态&/p&&p&是使用频率非常高的键位&/p&&img src=&/v2-7d47e1c2a391acca552f161_b.jpg& data-caption=&& data-rawwidth=&307& data-rawheight=&284& class=&content_image& width=&307&&&blockquote&使用图中的方式观察周围动向&/blockquote&&p&&br&&/p&&p&=号:可以自动前进&/p&&p&X:收起武器,可以提升跑步速度&/p&&p&空格:跳,空格+C两个键同时按是大跳&/p&&img src=&/v2-116ecbf70bd37c3a652ef7a73b9df099_b.jpg& data-caption=&& data-rawwidth=&348& data-rawheight=&306& class=&content_image& width=&348&&&p&&i&(小技巧:配合方向键W,可以从二楼的窗户直接跳出去,且二楼落地不会掉血。这样省去了下楼的时间,也可以用来躲避追杀。方向+大跳对于一些跳地形也是必须的,比如跳围栏、跳屋顶等)&/i&&/p&&p&&br&&/p&&p&&b&水里游泳:&/b&&/p&&p&空格或鼠标向上W:上浮&/p&&p&C或鼠标向下W:下潜&/p&&p&&br&&/p&&h2&开车技巧(派送): &/h2&&p&好了,度过了漫长了揽件流程&/p&&p&终于到了激动人心的派送环节&/p&&p&&br&&/p&&p&首先我们站在车旁边按F可以上车&/p&&p&ctrl+1、2、3、4、5:可以更换车内的座位(1为驾驶座)&/p&&p&跑到车的另外一边再上车是妥妥的萌新动作&/p&&p&&br&&/p&&p&上车之后WASD控制方向&/p&&p&Shift:加速&/p&&p&空格:刹车&/p&&p&(小技巧,停车之后空格键=拉手刹+熄火,拉手刹保证车子不会顺着坡滑走,熄火让车引擎声消失)&/p&&p&副驾驶座位的同学可以按右键,把头探出去开枪&/p&&p&ps:切记不要按X卸了武器换成平底锅、镰刀什么的,按左键玩&/p&&p&那个场景会十分血腥&/p&&p&不要问我为什么知道……&/p&&img src=&/v2-8d918fa8905adf6c95c50f2c857272cc_b.png& data-caption=&& data-rawwidth=&210& data-rawheight=&211& class=&content_image& width=&210&&&p&&i&(小技巧,单排开车的同学,看到敌人可以ctrl+2换到副驾驶座,然后按右键就可以开抢啦,这时候车还因为惯性滑行,你可以灭了敌人再潇洒地回到驾驶座,开车过去舔他!)&/i&&/p&&p&&br&&/p&&p&在车内可以打开背包,右键点击燃料,可以给车加油&/p&&p&&br&&/p&&h2&战斗操作(送达)篇: &/h2&&p&惊心动魄的使命必达环节!&/p&&p&&br&&/p&&p&数字键1、2、3、4、5分别是切枪1、枪2、手枪、冷兵器、投掷物&/p&&p&Q、E:左右探身&/p&&p&(这个游戏的必备技能,通过这个方法最大化自己的攻击视野的同时,尽可能的隐蔽自己的身位)&/p&&p&长按右键,腰部射击(官方名词,意思为不用瞄准镜,直接举枪进行射击,适合贴身作战和霰弹枪的使用,准星较开镜模式会飘很多)&/p&&p&单击右键,开镜模式(瞄准镜是通过单击右键使用的)&/p&&p&Shift憋气:开镜模式下,按住shift增加视野,同时稳定准星。但需要憋气,下方气体时间耗尽之后失效。&/p&&img src=&/v2-86b876d0ba12f49d72d5_b.png& data-caption=&& data-rawwidth=&424& data-rawheight=&144& class=&origin_image zh-lightbox-thumb& width=&424& data-original=&/v2-86b876d0ba12f49d72d5_r.png&&&p&如图中的肺部形象就是憋气状态,开镜憋气是不会掉血的,水下没气了会扣血&/p&&p&&br&&/p&&p&G切换为手榴弹&/p&&p&R更换子弹&/p&&p&B切换开火模式&/p&&p&开火模式分为&/p&&p&点射模式:左键一下,射出1发,长按无效&/p&&p&连射模式:左键一下,射出3发,长按无效&/p&&p&自动模式:长按连射&/p&&p&建议新手拿到冲锋枪直接调成自动&/p&&p&撞见鬼,然后狂按鼠标,发现点射模式没调的场面已经屡见不鲜了&/p&&p&&br&&/p&&img src=&/v2-dcd13fbff43a91af8e6d7f3f_b.jpg& data-caption=&& data-rawwidth=&280& data-rawheight=&263& class=&content_image& width=&280&&&p&&br&&/p&&p&&br&&/p&&p&投掷技巧:&/p&&p&切换到手雷等投掷物&/p&&p&按住左键会出现一个抛物线&/p&&p&按R拉开保险栓&/p&&p&松开左键扔出&/p&&p&&br&&/p&&img src=&/v2-4cad0a70aaa87eff85ca0bef_b.jpg& data-caption=&& data-rawwidth=&296& data-rawheight=&291& class=&content_image& width=&296&&&p&&br&&/p&&p&(小技巧:还有一个扔地滚雷的技巧很多人不知道,按左键然后点击右键就可以把雷用低抛的方式扔出去)&/p&&p&&br&&/p&&p&数字键7、8、9、0都是快速嗑药&/p&&p&(也可以开TAB右键点击使用)&/p&&p&7是打急救箱(回满)&/p&&p&8是打急救包(回到75)&/p&&p&9是打绷带(红血状态可用,回复10点,最多到75)&/p&&p&0是喝饮料(止痛药和红牛等持续性回血的)&/p&&p&&br&&/p&&p&另外安利一记,其实Z键也能算一个战斗按键&/p&&p&来看看这个现在很火热的“拜佛枪法”&/p&&p&&br&&/p&&img src=&/v2-fc8ff163e1a2_b.jpg& data-caption=&& data-rawwidth=&275& data-rawheight=&214& class=&content_image& width=&275&&&blockquote&拜佛正式从篮球界进军游戏界!&/blockquote&&p&&br&&/p&&p&以上就是绝地求生所用的按键的使用说明啦&/p&&p&是不是很简单易懂呢&/p&&p&希望对萌新、萌妹,萌大佬们有所帮助&/p&&p&快转发给最菜但你绝不嫌弃的那个队友吧!&/p&&p&&br&&/p&&img src=&/v2-0eea167dcd739bd83a73ee0c04ad3272_b.jpg& data-caption=&& data-rawwidth=&809& data-rawheight=&500& class=&origin_image zh-lightbox-thumb& width=&809& data-original=&/v2-0eea167dcd739bd83a73ee0c04ad3272_r.jpg&&
最详细易懂的基本操作大全 如果你身边有想入手吃鸡或者刚入手吃鸡的老铁快转发这个给他(她)看吧提升水平效果杠杠的 首先我们来看官方的键位说明看着是不是有点懵?没关系,尼克来按场景进程,逐个分析一下 行动操作(揽件)篇:首先开始的时候是跳伞 所以…
11.30更新:见后面地形生成和总结部分。过百赞了知乎小透明好开森,谢谢大家!&br&12.3更新:谢大家厚爱。回答一位 &a data-hash=&de96a5c62a75321ecf4815& href=&///people/de96a5c62a75321ecf4815& class=&member_mention& data-editable=&true& data-title=&@兔子先生& data-hovercard=&p$b$de96a5c62a75321ecf4815&&@兔子先生&/a& 的问题,见文章:&a href=&/p/& class=&internal&&答兔子先生&/a&,欢迎讨论。&br&&br&研究过MC地形生成和基础架构的强答一发。&br&长文预警。&br&&br&先说架构。&br&&br&MC分客户端和服务端两面,客户端主要负责渲染,服务端是本地服务器或者远程服务器(本地游戏两个都要跑,真正的MC服只跑服务端)。其实这俩就共享一个IWorld接口,然后这个接口里面乱的一塌糊涂。&br&&br&地图的基础单元是chunk,就是16*256*16的大方块,里面包含小方块。小方块可以是普通IBlock,可以带特殊数据(metadata),也可以有TileEntity(按照方块处理的实体)。区块里面还存了Entity就是实体(人啊,僵尸啊,猪啊还有掉落的物品之类的),实体的位置和方向都是浮点数float或double(双精度),因此拥有更大的自由度。&br&前后端(客户端和服务端)存储数据都靠的这个chunk,传输和生成也是以chunk为单位,所以会看到服务器卡的时候是一块一块冒出来的。chunk放到HashMap里面备用。&br&保存(1.2之后的原版服务端anvil文件格式)把32*32个chunk放到一个.mca(老版是.mcp)文件里面,用一种碎片化管理的方式来节省空间同时减少IO句柄数量,具体的格式MC Wiki上有详细的解释。&br&&br&所有MC的存储数据(注意不包括方块和音乐本身这种理论上是做死了的数据)都用一种二进制数据格式存储(NBT Named Binary Tags 命名二进制标签 ——Minecraft Wiki),里面包含数组数据、浮点数、整数或者字符串,其实结构相当简单,项目有树形结构,每个子项还有字符串形式的名字。它其实可以和JSON简单互译,做命令方块地图时会用到的JSON格式的实体数据就是这个东西。&br&&br&服务端动态加载/保存区块,然后用一个单线程来每个tick更新整个地图(所以很慢啊喂!),具体方式既粗暴又简单:遍历每个方块,看到有计划更新(比如水、岩浆、刷怪笼、植物这种)的就让他更新一下,看到TileEntity或者Entity每个tick都更新,同时处理玩家的数据:放方块/砸方块/开箱子/熔铁锭等等。对了,服务端还要负责更新光照(看后面)。&br&要是玩家走到了没有生成过的荒野,就会启动区块生成器来生成新的区块。生成这个特别复杂,也是我主要研究的问题,一会儿再讲。&br&&br&客户端维护一个非常 *智障* 的GUI系统,里面的渲染基本上都是legacy opengl直接瞎写的,GUI更新基本上都是全屏更新的,鼠标行动基本上全是轮询的,根本不管什么事件啦dirty区域啦缓存啦,就两个字:粗暴。当然MC总共也没什么GUI好谈,所以也就算了。&br&这里提一句其实服务器里面花花绿绿的字符的实现原理也非常暴力,就是用小结号§来代表下一个字符是格式转义字符,从k到r(好像?)都代表不同的意义,颜色或者加粗或者倾斜或者随机颜色,封面MINECRAFT大字旁边那行字就是用这个渲染的。什么?你问§怎么办?没办法。(摊手)&br&&br&除了GUI就是游戏主要的渲染部分。MC应用15年前的opengl技术成功地把每一个chunk编译成16个list(opengl中的列表,可以理解为把要画的步骤先告诉显卡以后再用只要告诉他列表的号码就行了,用来提升效率),每个16*16*16,不包括TileEntity和Entity——它们是每帧单独渲染的,所以MC生物一多就卡,而用bug透视的时候看不到方块但是能看得到生物和箱子。&br&客户端每帧要是看到新的改变过的chunk(被什么东西更新过了)就把它和它四周的chunk都重新生成一遍list(这里你会看到要是服务器加载很慢的话最远处的chunk是看得到截面的),这个过程叫做tessellation,就是把每个小的面片(长方形)放到一起组成一个大的顶点数组(就是一个大模型),一股脑儿传给显卡(因为从cpu传连续数据比零零散散地传数据要快很多)。&br&最后渲染的时候也是通过数学计算把在视野(按照玩家视角)中的list找出来一一调用渲染。这里有个小bug,就是筛选是否在视野中是假定这个list里面的所有东西都包含在这16*16*16的大方块里面的,所以如果你搞一个信标的话,它的光柱会一直延伸到天空上,但是一旦整个list被判断不可见,这个光柱也会一起消失掉。&br&&br&至于光照,光照也是在服务器端算好的(是不是难以想象?),我们看到的有渐变的平滑光照也是在方块光照上加工计算出来的。&br&光照有两部分,一部分叫做天光(sky light),也就是不算任何方块光源这个位置的光照强度。细节上,他是这么计算的:如果他直接被阳光照射(上面没有别的方块),那么亮度是16(或者说15,取决于你是从0开始数数还是从1开始),如果上面一个是半透明方块,那么亮度是上面的亮度减去版透明方块的阻碍值(比如树叶是2,玻璃是1),如果上面是不透明方块(比如石头),那么亮度是0。你可能要问,山洞里面也不是全黑啊?别急,慢慢讲。&br&区块生成的时候只会这样一遍地生成最简单的光照,而把光照的扩散放到一个队列里面等待服务端更新时一点点处理,每个tick能上限好像是1个事件。(理论上这是为了加快速度不让光照计算拖慢服务器来着,然而。。)处理事件是一个递归的过程,从这个方块出发,如果他6个方向(上下左右前后)的方块的亮度大于等于它,那就不递归(这种时候定义空气的光阻为1),否则把那个方向上的方块+(自身亮度-1)放进队列。当然要是减到0就不动了。&br&按照mojang员工的天真想法,既然光照最大是15(因为我从0开始数数),每一格至少减弱1,那么跟我源头上这一个坐标差距大于十五的我就不用管了咯?所以他们限制每次递归最多递归到这么远,之后不管亮度多少都留到下一个tick去吧。但是这里会有一个bug:如果山洞顶上被开了一个洞,从天上漏光,结果从山洞边缘开始计算天光,算到洞附近发现开始变亮了,但是又碍于距离限制不能再算下去,所以有时候就会看到非常突兀的亮度变化。&br&光照的另一部分叫做方块光(block light),也就是萤石啊南瓜灯啊火柴啊这种方块的灯光。这种也是碰到空气就-1,碰到不透明的石头就变成0,碰到半透明的就减去他的光阻量(代码里面叫做opacity,意为不透明度)。然后每个方块上的亮度以最大值为准,同样塞到前面的那个队列里面。服务端更新的时候计算。&br&&br&光照当然是用来渲染的,而这也是MC渲染极其重要的一部分。&br&每个方块的光照强度等于方块光和天光的最大值,那么晚上怎么办呢?其实天光在晚上的亮度就等于 原先亮度 - 夜晚的亮度降,也就是原来12级光,白天是15级阳光,算出来就是12级,晚上变成11级月光,就是 12 - (15 - 11) = 8级光。当然这个值不能小于0。&br&最早的光照对应就是一个线性的亮度,15级就是100%的亮度,7级就是50%,0级就是0%,后来发现这样效果不好,就改成了对数型:第(n-1)级的亮度是第n级的90%,这样亮度变化比较自然,而且哪怕光照为0也不是全黑(地狱/下界的这个系数是90%,0级光实际上还有46%的亮度,所以显得下界特别亮)。&br&后来觉得还不好,所以就干脆弄了一个二维的亮度图,横坐标是天光,纵坐标是方块光,这个在minecraft.jar里面找得到一个纹理文件(哎呀名字我忘了),就是这个。因此可以看到方块光偏暖色,天光偏冷色,也是这么来的。&br&&br&渲染更重要的当然就是大家关心的纹理,所谓MC像素之称的来源之一。&br&如果打开beta以后的minecraft,jar文件就会看到,纹理图片都是分开的图片,但是一个list(还记得list吗)只能用一个纹理单元,因此MC就用了一种取巧的做法:程序启动的/更换材质包时候把所有要用的纹理加载一遍然后拼到一张图上面,有时候会存到.minecraft/下的一个临时文件夹里面,再加载进显卡,就可以一起用了。当然Entity和TileEntity的纹理是不用这么干的,因为他们每个都是独立渲染的,不需要这么弄。&br&这也是为什么MC的API要求方块必须在使用之前就在Registry里面注册好,这样才能知道你到底要哪些纹理啊。(貌似这个问题在1.8采用了新的model模式后有了改善)这也是为什么在切换语言之后MC都要卡好久,因为切换语言也算作切换材质包,要把所有的小纹理图片再拼接一遍,还要把所有的chunk已经生成好的list重新生成一遍。(卡!)&br&&br&然后就要根据玩家的位置,角度,以及人称(第一人称/背后第三人称/面对第二人称)来计算投影矩阵(也就是摆摄像机)。这个过程是在客户端处理的,所以就算服务端卡爆了你的脑袋还是可以自由旋转的,至于为什么你可以看到多人中别的玩家的脑袋转,我猜是时不时地传一些数据回去做插值弄的。&br&最后直接丢给opengl画出来,三维渲染部分就基本完成了。其实这里MC还允许像光影mod那样的后期处理(post-processing),1.7左右的版本有一个“Super Secret Setting”的按钮在游戏暂停的设置里面,点一下可以在好多后期特效之间切换。&br&还要画天空、太阳、月亮、天气和云层,当然太阳月亮就是贴个图(月有阴晴圆缺哦,纹理文件有一个专门管月相的),下雨下雪就是一个动画,云层也就是一堆半透明的方块。&br&最后一个部分:第一人称的手和手上拿的东西,这个也是三维渲染的,不过难度不大,相信大家想想就明白了,也就不多说了。&br&&br&然后是介于三维和二维之间的粒子系统。粒子系统其实原来是用来模拟像水滴、碎片、树叶这样数量巨大的东西,以至于渲染成真正的三维模型代价过高,不得不用一个永远对着玩家的面来代替,后来就管所有这种永远面向玩家的面叫做“粒子”(particle),或者“标志板”(bulletin board)。&br&MC的粒子系统主要都是一些效果:入水/钓鱼是的水滴,吃饭时的食物残渣,多人模式中别人头顶上的名字,魔药产生的效果,经验球,爆炸的“冲击波”,都是粒子。(是不是有点大)&br&反正粒子一般放在同样的三维环境中渲染,用同样的投影矩阵,但是往往会被归为一个特殊的粒子引擎,因为它们作为没有体积的物体却经常要表现出一种重力感(就比如说水滴会跳起来再落下去),不能放到一般的三维场景中渲染。&br&&br&三维画完了是二维:下面的道具栏和聊天内容这种,按E可以赛艇(划掉)打开的完整物品栏(inventories)、各种可交互菜单(箱子、铁毡、熔炉、村民……)。这些凌驾于所有三维内容之上(因为不会被挡掉),最后被渲染,同时也充当与玩家交互的功能。(所以说MC的GUI很乱啦。。这里都不分清楚的)&br&&br&说到交互,肯定大家会想,电脑到底是怎么知道我选中了哪个面,往哪里放了东西了呢?其实判断选中的面还简单,做点小计算都不难,真正的难点在于客户端和服务器之间的传输协议。&br&传输协议,顾名思义,就是两者之间关于信息传输所商定的协议。具体的技术细节在&a href=&///?target=http%3A//wiki.vg/Main_Page& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&wiki.vg&i class=&icon-external&&&/i&&/a&这里有详细说,我就不展开了。总结一下,就是:MC里面除了区块(chunk)的传输是全局的以外,其他各种东西的传输协议都是个管个的:箱子有箱子的传输协议,玩家有玩家的协议,熔炉有熔炉的协议。你作为玩家不管干了什么,改变了什么东西,都要通过相应的协议把实际内容传输给服务器端监听这个数据的东西,然后再由它对地图中的内容进行操作。&br&这里也能看出MC的一大毛病:该耦合的不耦合,该分离的不分离,协议一大堆各自为政,各种方块(block)又互相调用,乱成一团——一个基础的Block类足足有几千行。&br&&br&---------------------------------------------分割线-----------------------------------------------------&br&&br&说了这么多,我们来理一下思路吧。&br&&br&MC启动你的游戏有两种:本地 or 远程。&br&本地游戏需要 玩家操作GUI生成或加载世界 -& 启动本地服务端(IntegratedServer)-& 加载地图 -& 以单人单机模式提供游戏。&br&或者远程服务器由服务器管理员启动(官网上有下载原版的minecraft_server.jar,但是基本上现在用的都是水桶bukkit服),然后 启动服务端(原版是MinecraftServer) -& 加载地图 -& 以多人联机模式提供游戏。&br&&br&服务端启动后的基本流程是: 等待玩家连接并通过验证 -& 发送初始数据 -& 按需发送/加载/生成地 图 -& 更新(tick)地图内容,加上散播生物啊之类的操作 -& 发送地图 -& ……&br&而客户端则是: 连接服务端 -& 获取初始数据(时间、玩家位置、验证信息等) -& 获取地图(区块)数据 -& 渲染地图 -& 接受玩家输入(鼠标/键盘操作) -& 发送数据包给服务端 -& 获取更新过的地图 -& ……&br&当然理论上这里很多步骤都应该是多线程并行进行的,但是MC的这个代码写的啊……很多都没有优化,这也是为什么MC老是卡的重要原因之一。&br&&br&这大致就是整个MC里面在发生的事情的总结,接下去的内容比较技术向,请不愿看者直接跳到再下一个分割线。&br&&br&-------------------------------------------分割线---------------------------------------------------&br&&br&说说MC的地形生成吧。这个我研究的比较多,也想借此机会说一说。&br&&br&多图杀猫预警!!!!!!!!!!!&br&&br&更新:来填坑啦!&br&是时候祭出我尘封已久的mod开发工具了!&br&(本段内容基于1.10.2的fml反编译,使用的是IntelliJ idea进行开发,教程。。有空再说吧)&br&&img src=&/v2-ab89da9ade74_b.png& data-rawwidth=&1365& data-rawheight=&726& class=&origin_image zh-lightbox-thumb& width=&1365& data-original=&/v2-ab89da9ade74_r.png&&好吧这是今年8月从fml官网上直接生成的,前面那个换电脑的时候丢了。。悲伤。。&br&不过这都不能阻止我的脚步!ctrl+alt+F10运行!&br&&img src=&/v2-f6cc05ed0a56de75ad68d9f7a2eaa252_b.png& data-rawwidth=&857& data-rawheight=&510& class=&origin_image zh-lightbox-thumb& width=&857& data-original=&/v2-f6cc05ed0a56de75ad68d9f7a2eaa252_r.png&&&img src=&/v2-84c184ef3adee6e4f1b9f510_b.png& data-rawwidth=&857& data-rawheight=&512& class=&origin_image zh-lightbox-thumb& width=&857& data-original=&/v2-84c184ef3adee6e4f1b9f510_r.png&&OK!&br&&br&好吧说正事。&br&微软接手之后MC开发组搞了一个功能:生成世界时进入更多世界选项(英文版More world options)&br&&img src=&/v2-b88eca7a11584baf5799edc_b.png& data-rawwidth=&546& data-rawheight=&435& class=&origin_image zh-lightbox-thumb& width=&546& data-original=&/v2-b88eca7a11584baf5799edc_r.png&&世界类型点到“自定义”(Customized),(这里1.10.2直接点就可以了,我记得老一点的版本要按住alt还是ctrl再点才回出来),然后按“自定义”(Customize)按钮就能调整世界生成的一些参数:&br&&img src=&/v2-4c26addee4d55bbe7386b6b_b.png& data-rawwidth=&710& data-rawheight=&474& class=&origin_image zh-lightbox-thumb& width=&710& data-original=&/v2-4c26addee4d55bbe7386b6b_r.png&&(调成中文吧。。)&br&可以自定义的选项有四页,可以通过调整它们来直观地看到MC世界生成的各种参数:&br&&img src=&/v2-47a3b9ab9e2f55510ecdd227ffbfaddc_b.png& data-rawwidth=&870& data-rawheight=&668& class=&origin_image zh-lightbox-thumb& width=&870& data-original=&/v2-47a3b9ab9e2f55510ecdd227ffbfaddc_r.png&&&br&&img src=&/v2-fbefafe1bfadb3_b.png& data-rawwidth=&870& data-rawheight=&668& class=&origin_image zh-lightbox-thumb& width=&870& data-original=&/v2-fbefafe1bfadb3_r.png&&&img src=&/v2-ce28f7ce539ffd_b.png& data-rawwidth=&870& data-rawheight=&668& class=&origin_image zh-lightbox-thumb& width=&870& data-original=&/v2-ce28f7ce539ffd_r.png&&&img src=&/v2-626d4fc8eade5f8ff084bca_b.png& data-rawwidth=&870& data-rawheight=&668& class=&origin_image zh-lightbox-thumb& width=&870& data-original=&/v2-626d4fc8eade5f8ff084bca_r.png&&第三、第四页比较高级,之后说到具体的生成原理的时候再说,先来玩玩前两页的参数:&br&&img src=&/v2-4fce5de6930_b.png& data-rawwidth=&656& data-rawheight=&465& class=&origin_image zh-lightbox-thumb& width=&656& data-original=&/v2-4fce5de6930_r.png&&&br&抬高海平面,变成岩浆海,乱七八糟的东西都不要,河流越少越好,生物群系Extreme Hills+(全是山),生成!&br&&img src=&/v2-1fa23b4cb7f8be_b.png& data-rawwidth=&1365& data-rawheight=&726& class=&origin_image zh-lightbox-thumb& width=&1365& data-original=&/v2-1fa23b4cb7f8be_r.png&&厉害了我的哥!这里菱形的亮区也证明了我前面说的:光照更新的时候只能更新15格以外的,更远的哪怕有变化也不会继续更新下去。&br&&img src=&/v2-591bc5bde8f_b.png& data-rawwidth=&1365& data-rawheight=&726& class=&origin_image zh-lightbox-thumb& width=&1365& data-original=&/v2-591bc5bde8f_r.png&&过一会儿就好了。可以看到MC加载地图是加载了一个方形的区域。&br&&img src=&/v2-25c2dc7faf6f0c4cdfa8c14_b.png& data-rawwidth=&703& data-rawheight=&391& class=&origin_image zh-lightbox-thumb& width=&703& data-original=&/v2-25c2dc7faf6f0c4cdfa8c14_r.png&&远处的树是悬空的,因为另一边的区块还没生成出来。&br&&img src=&/v2-df88ccedbb5ff_b.png& data-rawwidth=&861& data-rawheight=&594& class=&origin_image zh-lightbox-thumb& width=&861& data-original=&/v2-df88ccedbb5ff_r.png&&因为离岩浆太近,草地上的雪都化了。&br&&img src=&/v2-60ba215a925d70c1c04d0f37878cdf34_b.png& data-rawwidth=&318& data-rawheight=&64& class=&content_image& width=&318&&按E可以赛艇。&br&&br&再来一个:&br&&img src=&/v2-28c94bfe01_b.png& data-rawwidth=&670& data-rawheight=&572& class=&origin_image zh-lightbox-thumb& width=&670& data-original=&/v2-28c94bfe01_r.png&&泥土大理石统统不要,我就是要石头直接暴露在阳光之下。&br&&img src=&/v2-dcefc_b.png& data-rawwidth=&746& data-rawheight=&454& class=&origin_image zh-lightbox-thumb& width=&746& data-original=&/v2-dcefc_r.png&&&br&感觉发家致富都靠这个了。&br&&img src=&/v2-bc21c5a9652_b.png& data-rawwidth=&677& data-rawheight=&468& class=&origin_image zh-lightbox-thumb& width=&677& data-original=&/v2-bc21c5a9652_r.png&&&br&别的统统不要,Extreme Hills生物群系,生成!&br&&img src=&/v2-1db9c5d8fcb4d783cdcf69_b.png& data-rawwidth=&857& data-rawheight=&601& class=&origin_image zh-lightbox-thumb& width=&857& data-original=&/v2-1db9c5d8fcb4d783cdcf69_r.png&&金矿与钻石的海洋!&br&&img src=&/v2-cd17a6dd8d5a5c2789fd_b.png& data-rawwidth=&875& data-rawheight=&607& class=&origin_image zh-lightbox-thumb& width=&875& data-original=&/v2-cd17a6dd8d5a5c2789fd_r.png&&&br&我要完成一个小目标了!(虽然是创造)&br&&br&好吧就玩到这里,我们来看代码吧。&br&&b&警告:&/b&接下来有大量程序猿内容,患有&b&代码恐惧症&/b&者可跳过。&br&&br&地形生成的代码主要在这几个包里面:&br&&img src=&/v2-266c3c47c39aff55d0fdbff_b.png& data-rawwidth=&387& data-rawheight=&400& class=&content_image& width=&387&&&br&net.minecraft.world.gen底下的是 不同世界类型(主世界/下界/末地/超平坦)、重要的地形元素(洞穴/峡谷)、噪声生成器(用来生成随机的东西):&br&&img src=&/v2-1fb69b0bf2cb9d46709f_b.png& data-rawwidth=&352& data-rawheight=&423& class=&content_image& width=&352&&net.minecraft.world.gen.features是各种特征,有树(包括树的变种针叶林之类的)、植被(仙人掌、花草之类的)、地质(黏土clay、沙子sand)、地貌(湖泊、沼泽、下界的岩浆)、人文景观(地牢、沙井,但是村庄女巫房海底遗迹这些不在这里):&br&&img src=&/v2-f6103bfdac4b_b.png& data-rawwidth=&309& data-rawheight=&482& class=&content_image& width=&309&&&img src=&/v2-b64f2d8262eff164dc737f_b.png& data-rawwidth=&279& data-rawheight=&522& class=&content_image& width=&279&&net.minecraft.world.gen.layers其实才是生成生物群系(biome),也就是从二维上确定每个竖列(1*256*1)是什么类别,net.minecraft.world.biome管的是生成生物群系之后确定每个生物群系的特征。这个包里面的东西很重要,一会儿一起说:&br&&img src=&/v2-89fe3c1ed0cb9c5eddca_b.png& data-rawwidth=&472& data-rawheight=&484& class=&origin_image zh-lightbox-thumb& width=&472& data-original=&/v2-89fe3c1ed0cb9c5eddca_r.png&&net.minecraft.world.biome正如前面所说是各种生物群系的内容,这个也之后单独说:&br&&img src=&/v2-091ebc5cdabee870d3843_b.png& data-rawwidth=&293& data-rawheight=&650& class=&content_image& width=&293&&&br&net.minecraft.world.gen.structure管的是复杂的大型人文景观生成(村庄,1.9之后的末地城,废弃矿洞,下界要塞,海底遗迹):&br&&img src=&/v2-6f56fe75eadf5db901f76_b.png& data-rawwidth=&395& data-rawheight=&506& class=&content_image& width=&395&&&br&net.minecraft.world.gen.structure.template是按照文件中定义的方块模板来确定真正使用的方块,就像自然生成的草地并不是千篇一律的,而是会随机地旋转一定的角度,就是这个东西在帮忙:&br&&img src=&/v2-6f3fd8adae0_b.png& data-rawwidth=&377& data-rawheight=&150& class=&content_image& width=&377&&net.minecraft.village和net.minecraft.world.end是管理村庄和末地的特殊活动(和村民交♂易,打末影龙):&br&&img src=&/v2-b45aebfdde3078baf7f8602_b.png& data-rawwidth=&412& data-rawheight=&380& class=&content_image& width=&412&&&br&各个包的介绍就到这里,接下来介绍一下生成一个区块的整体流程,这里我截一段net.minecraft,world.gen.ChunkProvideOverworld(生成主世界区块)里面的代码来描述,加了中文注释:&br&&div class=&highlight&&&pre&&code class=&language-text&&public Chunk provideChunk(int x, int z)
// 生成一个区块专属的伪随机种子,这个种子只跟x和z的位置有关
this.rand.setSeed((long)x * L + (long)z * L);
ChunkPrimer chunkprimer = new ChunkPrimer(); // 封装了一下方块设置的操作
// 生成低分辨率的生物群系、密度图、方块,后面会讲
this.setBlocksInChunk(x, z, chunkprimer);
// 生成标准大小的生物群系
this.biomesForGeneration = this.worldObj.getBiomeProvider().loadBlockGeneratorData(this.biomesForGeneration, x * 16, z * 16, 16, 16);
// 按照生物群系替换掉高度图里面的普通方块
this.replaceBiomeBlocks(x, z, chunkprimer, this.biomesForGeneration);
// 前面生成选项里面看到的各种设置,要不要洞穴之类的
if (this.settings.useCaves)
this.caveGenerator.generate(this.worldObj, x, z, chunkprimer);
if (this.settings.useRavines)
this.ravineGenerator.generate(this.worldObj, x, z, chunkprimer);
if (this.mapFeaturesEnabled)
if (this.settings.useMineShafts)
this.mineshaftGenerator.generate(this.worldObj, x, z, chunkprimer);
if (this.settings.useVillages)
this.villageGenerator.generate(this.worldObj, x, z, chunkprimer);
if (this.settings.useStrongholds)
this.strongholdGenerator.generate(this.worldObj, x, z, chunkprimer);
if (this.settings.useTemples)
this.scatteredFeatureGenerator.generate(this.worldObj, x, z, chunkprimer);
if (this.settings.useMonuments)
this.oceanMonumentGenerator.generate(this.worldObj, x, z, chunkprimer);
// 构造区块对象,把方块和生物群系数据填进去
Chunk chunk = new Chunk(this.worldObj, chunkprimer, x, z);
byte[] abyte = chunk.getBiomeArray();
for (int i = 0; i & abyte. ++i)
abyte[i] = (byte)Biome.getIdForBiome(this.biomesForGeneration[i]);
// 生成基础的天空光照(见前文)
chunk.generateSkylightMap();
&/code&&/pre&&/div&重点的setBlocksInChunk函数:&br&&div class=&highlight&&&pre&&code class=&language-text&&public void setBlocksInChunk(int x, int z, ChunkPrimer primer)
this.biomesForGeneration = this.worldObj.getBiomeProvider().getBiomesForGeneration(this.biomesForGeneration, x * 4 - 2, z * 4 - 2, 10, 10); // 这是一个低分辨率的生物群系表,用在generateHeightmap里面的
// 生成密度图,原文虽然写的是高度图,但是实际上是密度图,可能是fml的人理解有问题
this.generateHeightmap(x * 4, 0, z * 4);
// 这里往下的这么一大段都是在插值,密度大于0的填上石头,低于海平面而且不是石头的
// 填上海水,别的都是空气。
// 话说这段真是乱七八糟,一堆magic number,估计fml的人也懒得看懂,
// 既没加注释也没改变量名。。。
for (int i = 0; i & 4; ++i)
// 为什么是33和5呢? 33=32+1, 5=4+1
int j = i * 5;
int k = (i + 1) * 5;
for (int l = 0; l & 4; ++l)
int i1 = (j + l) * 33;
int j1 = (j + l + 1) * 33;
int k1 = (k + l) * 33;
int l1 = (k + l + 1) * 33;
for (int i2 = 0; i2 & 32; ++i2)
double d0 = 0.125D;
double d1 = this.heightMap[i1 + i2];
double d2 = this.heightMap[j1 + i2];
double d3 = this.heightMap[k1 + i2];
double d4 = this.heightMap[l1 + i2];
// 于高度y方向线性插值
double d5 = (this.heightMap[i1 + i2 + 1] - d1) * 0.125D;
double d6 = (this.heightMap[j1 + i2 + 1] - d2) * 0.125D;
double d7 = (this.heightMap[k1 + i2 + 1] - d3) * 0.125D;
double d8 = (this.heightMap[l1 + i2 + 1] - d4) * 0.125D;
// 于x和z方向线性插值
for (int j2 = 0; j2 & 8; ++j2)
double d9 = 0.25D;
double d10 = d1;
double d11 = d2;
double d12 = (d3 - d1) * 0.25D;
double d13 = (d4 - d2) * 0.25D;
for (int k2 = 0; k2 & 4; ++k2)
double d14 = 0.25D;
double d16 = (d11 - d10) * 0.25D;
double lvt_45_1_ = d10 - d16;
for (int l2 = 0; l2 & 4; ++l2)
if ((lvt_45_1_ += d16) & 0.0D)
primer.setBlockState(i * 4 + k2, i2 * 8 + j2, l * 4 + l2, STONE);
else if (i2 * 8 + j2 & this.settings.seaLevel)
primer.setBlockState(i * 4 + k2, i2 * 8 + j2, l * 4 + l2, this.oceanBlock);
d10 += d12;
d11 += d13;
&/code&&/pre&&/div&感觉这一段还要解释一下。&br&x和z不是16,32这样的世界坐标,而是区块坐标,是世界坐标的16/1,也就是区块(1, 2)代表了世界坐标上面的(16,32)到(31,47)的矩形区域。&br&这里首先生成了一个低分辨率的生物群系,长宽是10*10,是因为接下来要用的密度图长宽是5*5。&br&然后生成密度图,这个待会儿也会讲。之所以说是密度图而不是高度图是因为它是三维的5*33*5,而不是二维的结构,所以只能称之为密度。&br&接下来是线性插值。一个区块是16*256*16,而为了让密度更为平滑,这里把密度图的长宽各放大4倍,高度放大8倍,再做线性插值就会比较光滑不会变化特别突兀。&br&有人要问,5*4不是20吗?33*8不是264吗?其实因为5*33*5多出来的一圈是不用的,而且插值需要两个值才能计算,所以四个采样点其实需要5个数据,33也一样是这个道理。&br&再浅显一点来说,密度图里面的0,1,2,3,4(java数组从0开始)对应的是区块x或z轴里面的0, 4, 8, 12, 16,既然我们要计算位置为13,14,15的方块,那就得用12和16对应的3和4来插值。&br&插值的过程从循环变量为j2的那个循环开始,0.125就是8分之1,因为高度上放大8倍,后面的0.25也是因为放大了4倍,lvt_45_1其实可以写得易懂一点的,也是一个插值变量,跟前面的d1,d2,d3,d4,d10,d11是一样的,只不过mojang的程序猿为了装逼特地写了这么个东西罢了。。所以说代码质量差不仅在于架构,还在于其中各种细节的写法,像这种绝对就不算优秀的代码。&br&&br&先到这里吧。。还有好多。。各位先看着哈。。&br&&br&--------------------------------------------分割线-------------------------------------------------&br&&br&总结全文,深化主旨,首尾呼应:&br&Minecraft是个好游戏,但代码写的确实不咋地。&br&&br&我最初接触MC还是13年,那时候大部分还在用1.4.2或者1.5,当然,都是盗版。&br&一开始只是玩单机,打生存,搭房子,有时候开创造玩玩红石电路,特别喜欢一个人晚上独自边打MC边听他的bgm。C418的歌,很宁静,让人很放松。&br&后来基本上大部分玩法都玩儿遍了,也不怎么愿意去花功夫做那种超大的红石电路或者建筑之类的,总想着找点别的花样。于是我装了Forge,下了很多mod,比如IndustrialCraft这种大名鼎鼎的,还有一些辅助性的mod,比如1.6.2之后就停止开发的SPC(Single Player Command 卖安利)。SPC是模仿WorldEdit的担任命令行mod,就是各种批量编辑,一个人搭建筑非常方便(因为WorldEdit WE只有多人能用,SPC可以单人模式用)。结果换1.7.2之后SPC不支持了,于是就萌生了自己开发一个的想法。(好吧最后还是流产了,当时水平不够做出来的性能很差,现在有能力做了又没了当初那种激情)&br&又因为刚好学java,听说MC也是用java写的,所以就网上找教程写mod。我还记得14年的时候架着100K不到的梯子屁颠屁颠地装fml的时候,去maven central仓库上下东西动不动就停住了,结果一晚上都没装好。&br&国内(哪怕到今天)都缺少真正有质量的mod开发教程,特别是中文的基本没有。贴吧上曾找到过一篇讲mod开发环境配置的,不过也止于1.6.2,到了1.7之后FML的整个API变了好多,原来的教程都用不了了。&br&后来在网上找到了一篇文章:&a href=&///?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& ,是MC最早的开发者Markus Persson(马库斯·泊松,网名notch)的个人博客,还有一篇讲述他的地形生成算法的博文:&br&&a href=&///?target=http%3A///post//terrain-generation-part-1& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/post/3&/span&&span class=&invisible&&/terrain-generation-part-1&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&大概翻译一段(水平有限):&br&&blockquote&&p&In the very earliest version of Minecraft, I used a 2D Perlin noise heightmap to set the shape of the world. Or, rather, I used quite a few of them. One for overall elevation, one for terrain roughness, and one for local detail. For each column of blocks, the height was (elevation + (roughness*detail))*64+64. Both elevation and roughness were smooth, large scale noises, and detail was a more intricate one. This method had the great advantage of being very fast as there’s just 16*16*(noiseNum) samples per chunk to generate, but the disadvantage of being rather dull. Specifically, there’s no way for this method to generate any overhangs.&/p&&p&在Minecraft最早的版本中,我将一张2维perlin noise图作为高度图来确定世界的形状。或者说,好几张perlin noise图。一张是整体海拔,一张是地形的粗糙度,一张是小范围的细节。对于每一列方块,其高度是 (海拔+(粗糙度*细节))*64+64。 海拔和粗糙度的图都是连续光滑的,大尺度的噪声图,而细节则更加参差不齐。这个生成方式有一个巨大的优点就是奇快无比,因为对于每个区块,只不过需要生成16*16*(噪声图的数量) 个采样点,然而缺点就是地图相当单调无趣。更重要的是,这种方式根本生成不了悬崖。&/p&&br&&p&So I switched the system over into a similar system based off 3D Perlin noise. Instead of sampling the “ground height”, I treated the noise value as the “density”, where anything lower than 0 would be air, and anything higher than or equal to 0 would be ground. To make sure the bottom layer is solid and the top isn’t, I just add the height (offset by the water level) to the sampled result.&/p&&p&于是我改成了一种有些相似的、基于3维perlin noise的生成方式。我并不是对“地面高度”进行采样,而是将这个噪声的数值看做是“密度”(因此我说前面代码中应该是密度图而不是高度图 ——译者注),其中密度小于0的点都是空气而大于等于0的会成为大地(其实就是实心方块 ——译者注)。为了确保地图底端是地面而顶端是空气,我便把采样值加上采样点的高度(海拔高度)。(其实应该说是“减去采样点的高度”更易懂,因为大于0的才是方块,而水下的高度是负值 ——译者注)&/p&&br&&p&Unfortunately, I immediately ran into both performance issues and playability issues. Performance issues because of the huge amount of sampling needed to be done, and playability issues because there were no flat areas or smooth hills. The solution to both problems turned out to be just sampling at a lower resolution (scaled 8x along the horizontals, 4x along the vertical) and doing a linear interpolation. Suddenly, the game had flat areas, smooth hills, and also most single floating blocks were gone.&/p&&p&不幸的是,我立刻碰上了可玩性和效率两方面的麻烦。因为有大量的点需要被采样所以效率很成问题,又因为缺乏大片的平地或平滑的山丘而缺乏可玩性。这两个问题共同的解决方案最终定为了这样:用一个更低的分辨率去采样噪声图(横向8倍,纵向4倍)(代码里面是横向4倍纵向8倍,可能跟后来的代码改动有关 ——译者注)并且进行线性插值(见setBlocksInChunk函数 ——译者注)。突如其来地,世界上有了平原、丘陵,而且单独浮在空中的诡异方块中的绝大部分也都消失无踪了。(其实还有很多了啦 ——译者注)&/p&&/blockquote&这激起了我浓厚的兴趣。于是我把长长的代码打印下来,8号字体,一面3列,足足十几张纸,每天一有空就看代码,读代码,用笔做注释,并且为我觉得命名不当的部分想一个更好的名称。到现在这些还藏在我的书桌里面。这些东西百度根本搜不到,google也很少有结果,而以fml对这些代码的注释程度来看他们根本懒得去读这些既混乱又不必要读懂的代码。&br&当然后来还是不了了之了。我自己也仿造过MC,当时就是完全追星似的疯狂模仿,用的java,跟MC一样的LWJGL库,同样(好吧我承认这么做有盗版的嫌疑)的纹理,几乎相同的文件格式、区块大小、渲染原理、(基于notch文章的)地形生成、体系架构,几乎就是我前面写的这么多的一个自己的重现。我甚至还学习MC混淆了编译后的代码。可笑的是,迫于当时的水平,效率竟比MC原版还要低。最后开发进程是因为我U盘的丢失而终止的,源码自然也丢了,只剩一份速度奇慢的编译版本,下载地址:&a href=&///?target=http%3A///s/1eQvM0U2& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/s/1eQvM0U&/span&&span class=&invisible&&2&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&,有兴趣的自己下载来玩玩吧。&br&今年想过要重制,结果忙了一个夏天又泡汤了,现在想来总觉得有点可惜。&br&后来被朋友忽悠着去打了一段时间MC服务器,也买了正版,不过服务器没有打过一个月的,基本两三个星期就崩掉关服不开放了,也不知道是我的问题还是整个现状都这样。(我真的没有干过坏事啊!)据说国内开一个服很快就会有黑客来勒索要钱否则就DDoS攻击(Distributed Denial of Service分布式拒绝服务攻击,用大量肉鸡的流量淹没对方,让对方或因为过高的流量费用而关闭服务,或因为过低的响应速度而降低服务质量到一个不可接受的程度),也不知道是不是真的,反正崩了好几个服,打拼好久的家园东西都没了,也就不打了。&br&最近确实玩的不多,也就偶尔休息的时候像以前那样,搞搞建筑,搭搭红石电路之类的,都是单机玩,一方面没空,一方面也有点享受那种独自一人的感觉和C418的背景音乐。&br&&br&我知道这段算不上问题的“从编程的角度来看”,不过写了前面这么多,也使我回想起来以前发生过的不少。要不是这个答案,也不知道这段往事会被封存到什么时候。就借此机会,一吐为快吧。希望大家不必计较,并且欢迎任何技术上的讨论。&br&&br&以上。&br&&br&&br&&br&&br&各位看官看完记得点个赞再走啊。。。谢啦。。。
11.30更新:见后面地形生成和总结部分。过百赞了知乎小透明好开森,谢谢大家! 12.3更新:谢大家厚爱。回答一位
的问题,见文章:,欢迎讨论。 研究过MC地形生成和基础架构的强答一发。 长文预警。 先说架构。 MC分客户端和服务端两面…
Minecraft 的没落是可见的,作为一款在2011年诞生的游戏,到今天已经有五年了,但是由于Minecraft的超强可玩性和游戏性,即使是五年后的今天也依然火遍全球,但是任何一款游戏都有被放弃的时候。&br&看看近几年,Mojang对Mc做了哪些真正有意义的更新?说白了就是『这个mod不错,来小X给我加上』,无脑吸收mod,无脑扩张游戏覆盖面,而几乎毫无深度,1.9所谓的战斗系统的改革也完全没法解决任何根本性问题,五年过去了,这个游戏的水底依然连一条能看见的鱼都没有。而Mojang却不以为然,继续研究他们的『滤镜』和『北极熊』。&br&真的有人会因为北极熊来玩Minecraft么?并不是,Minecraft的精髓在于自由的沙盒,探险、生存、挖矿,而Mojang几乎没有完善这其中的任何一点,几个生态群系生成的建筑顶多两只手就能数过来,当玩家知道了这个世界原来只有这些无聊的内容,自然就会离他而去。红石、建筑这些终究是少数骨灰玩家的爱好,而大多数玩家只是想简简单单玩一个游戏,但Minecraft每次鸡肋的更新就好像在指着玩家脑袋说『你们的智商大概只适合玩这些内容』&br&&br&铁路矿车,到现在玩家想做一条远距离的高铁都几乎毫无用处,这个系统只能被用于后期的自动收集以及一些小众范围。&br&&br&钓鱼,那个智障的判定,在自己家里挖个洞放一格水就能钓到鱼,愚蠢么?来来回回就那么几种鱼,而且还都是看脸来钓。看看隔壁家《星露谷物语》,不同地区、不同时间都能钓上来不同的生物,而Minecraft作为一款3D沙盒游戏完全有能力做的更好。&br&&br&PVE,大多数玩家在几个小时里就可以杀掉龙,那么接下来的游戏要干什么?整个战斗系统就是无脑的点左键(1.9变成了按节奏点左键:) ),盾牌更不需要说了,几乎没有任何战斗技巧,让我庆幸的是斧子终于能作为战斗武器出场了,而盔甲还是那个老样子,你们把护甲做出战斗差异化能累死么,『钻石甲减缓移动速度,金甲几率自动格挡,铁甲防御速度均衡,皮甲移动速度更快』这种简单的设定明显能够大幅度提高游戏性,至少玩家不再是无脑的穿钻石套然后闭上眼睛按左键。而怪物更是少之又少,除了几个自然生成的建筑会刷点无关痛痒的怪物,你只要有一套保护4的钻石甲基本在这个世界你就是无敌的存在。&br&&br&在我眼中,MInecraft的后期游戏性很强,也很弱,原因是对于绝大部分玩家他们很难在后期通过正确的引导来获得正确的游戏方式,对于一款娱乐性的沙盒游戏来说,『技术流』终究是小众群体,而真正普通玩家如果想眼继续体验Minecraft的其他游戏乐趣,只有选择装载MOD或加入服务器。&br&&br&谈到Mod和服务器,就要涉及到开发,看看Mojang对开发者的态度,对服务器的态度,大概就是说『你们这些人都是吃我的用我的,我能让你们开发就不错了,爱搞搞不搞就滚』。&br&但是实际上,如果Minecraft没有Mod,我相信这只是一款有一点意思的沙盒游戏,如果没有服务器,那么多人联机永远就不会有那么多有趣的玩法,在Minecraft中枪战、小游戏更是不可能。而Mojang从来没有考虑过开发者的想法,这导致纯净服务器只能非常艰难的用箱子来做GUI,展示信息只能在聊天栏,除此之外你几乎没有什么可以显示文字在玩家屏幕上的方法,什么?图像?想都别想。&br&&br&如果某一天MInecraft没有人玩了,我一点也不意外,开发商在一点一点消磨所有人的热情,微软的介入也只能完善生态,当所有人都没有兴趣陪他们玩下去的时候,大概就是Minecraft陨落的时候了。&br&&br&但是,就算Minecraft挂掉了,沙盒游戏也不会死掉,沙盒游戏所代表的自由终究是玩家会追求的东西,Mojang的愚蠢和自大很大程度上是他们认为『我们做出了这么牛逼的游戏』,实际上,并不是Mojang只做了Minecraft,而是Minecraft选择了Mojang。&br&&br&-----------------------------补充&br&或许有人说『你是在拿一个RPG的眼光来看MC』来质疑我所提出的方向不清真,那么我的回答是,我是以一个『游戏』的角度来看待MC,而之所以很多人认为我是在以RPG的眼光去看待,原因其实很简单,RPG游戏涵盖面积大得多,可玩性的覆盖也更大,但是Minecraft终究是Minecraft,他不是世界上任何一个RPG游戏,我也不会用RPG游戏的角度去审视这个游戏。&br&&br&但是,终究MInecraft是个游戏。&br&&br&有人质疑我对于钓鱼系统的理解,认为我将Minecraf与星露谷物语进行相比不公平,认为Minecraft的实现难度太大,而实际上这种洗白是错误的,正是因为Minecraft对于一些基础、底层的游戏性完全没有任何用心,才导致现在这样的结果。而Minecraft本身是一个以现实世界为基础所构建的虚拟世界,绝大部分世界观是与现实世界相同的,不论是合成的摆放、装备的增强,都是以我们现有对世界的理解来进行延伸的,那么在这样的角度上,我提出更好的钓鱼系统,有什么错的呢?&br&&br&Minecraft的游戏核心之一就是探险,虽然钓鱼只是我举得一个简单的例子,但是如果真的能够做到『不同生物群系、不同海域、不同时间、不同季节钓到不同的鱼』,我相信玩家会组织出海、探险等活动,这总要比在地狱刷上5个小时的凋零头要强得多。&br&&br&你可以说,Minecraft之所以成功是因为他简单、可塑性强,那么现在他成功了,这个世界上用无数的Minecraft玩家,然后呢?&br&&br&IOS在早期也是使用拟物化设计,那么为什么现在采用了扁平化?很大的原因是『用户们已经能够接受现有的设计与现实概念之间的转换』,那么这种为初期所考虑的『为了帮助用户/玩家更快的上手系统/游戏』的设计就应该被强化。如果没有得到持续的游戏性,即使是自由的沙盒游戏,也会有看到边际的一天,当玩家有一天无法从这个世界得到好奇心的满足,或许就要考虑寻找下一个世界了。
Minecraft 的没落是可见的,作为一款在2011年诞生的游戏,到今天已经有五年了,但是由于Minecraft的超强可玩性和游戏性,即使是五年后的今天也依然火遍全球,但是任何一款游戏都有被放弃的时候。 看看近几年,Mojang对Mc做了哪些真正有意义的更新?说白了就…
多图预警!&br&&br&我在高考后接触到《我的世界》这款游戏..........的安卓版,当时被这种自由自在建造的感觉惊呆了&br&于是便花了三天时间把高中母校的新教学楼捣鼓出来了= =手机屏幕点的真心蛋疼= =&br&&br&来来来,只需三步骤,建成教学楼!&br&step.1把主楼梯建好。。。&br&&img src=&/ca976c033c4a0092a21c_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/ca976c033c4a0092a21c_r.jpg&&&br&step.2把框架建好。。。&br&&img src=&/f661c4c64176bef2f858ab9cf341897f_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/f661c4c64176bef2f858ab9cf341897f_r.jpg&&&img src=&/d35b85bcbd93f8ea70df6c_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/d35b85bcbd93f8ea70df6c_r.jpg&&&br&step.3再添上一些细节就完成了。。。。&br&&img src=&/55ed9791352aafe4bacf63_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/55ed9791352aafe4bacf63_r.jpg&&&br&咦....试着把特效开最大试试?&br&。。。。。。。。。。。。&br&。。。。。。。。。。&br&。。。。。。。&br&。。。。&br&。。&br&。&br&&img src=&/d8acb5cfb1ba33934cfca9f192a85671_b.jpg& data-rawwidth=&300& data-rawheight=&225& class=&content_image& width=&300&&&br&啧啧跟真的一样呢=...=&br&===========教学楼内部的分界线===============&br&来看看教学楼内部吧。。。。&br&大图高清无码~~~&br&&br&【楼梯】&br&&img src=&/f7d26a0b8b5ddff73fcf35d3_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/f7d26a0b8b5ddff73fcf35d3_r.jpg&&&img src=&/d42cb33b8f_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/d42cb33b8f_r.jpg&&&br&【教室】&br&= =没找到桌子椅子就用树桩木板代替了XD&br&&img src=&/9d76cc367cde3f0622f5bde93e8f7c0f_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/9d76cc367cde3f0622f5bde93e8f7c0f_r.jpg&&&img src=&/7e7a61cb2ac216c8cb12_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/7e7a61cb2ac216c8cb12_r.jpg&&&br&【风雨跑道】&br&其实就是教学楼一层挑高的空间= =&br&展板挂满了宣传画~~&br&&img src=&/dbb3aa55db6c79a407bdaf86ccdae367_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/dbb3aa55db6c79a407bdaf86ccdae367_r.jpg&&&img src=&/65a7dd124d9ea_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/65a7dd124d9ea_r.jpg&&&br&&br&【教学楼背面】&br&当初建造一半种的小树苗等建好了以后都长大了~~&br&&img src=&/97ae1f8ba734cbe45d81c1_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/97ae1f8ba734cbe45d81c1_r.jpg&&&br&&img src=&/064baf06e3d411d57e90c50b5f85c252_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/064baf06e3d411d57e90c50b5f85c252_r.jpg&&&br&【厕所(咦?)】&br&这是站在洗手盆上截的图= =&br&&img src=&/cac0af4c2ec7afe82a5531_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/cac0af4c2ec7afe82a5531_r.jpg&&&br&被困在隔间里的小鸭子~&br&&img src=&/d14b38e758e1e30f9d4ec733e892ba2e_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/d14b38e758e1e30f9d4ec733e892ba2e_r.jpg&&&br&说到小鸭子,那会一个人孤零零的建造好无聊,于是扔了一大堆小鸭子,然后到处都可以看到它们的身影= =他们欢快的嘎嘎声给予了我无穷的动力~~&br&&br&他们出现在脚手架上。。&br&&img src=&/ca7de2cd8ce6dba_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/ca7de2cd8ce6dba_r.jpg&&&br&或者跳楼的时候。。。这表情真淡定= =&br&&img src=&/4be98dbf1bb381ff1fcb1a2faba6f092_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/4be98dbf1bb381ff1fcb1a2faba6f092_r.jpg&&&br&=======================================&br&在建造的过程,回忆不停的涌现出来&br&&br&每次上课走到楼下都会抬头跟教室走廊上的同学打招呼。。&br&&img src=&/9a0909cea4c666c6671c_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/9a0909cea4c666c6671c_r.jpg&&&br&回家时跟小伙伴有说有笑的走下主楼梯。。&br&&img src=&/330ec871f1f3dbae6e16dc87460ebdb8_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/330ec871f1f3dbae6e16dc87460ebdb8_r.jpg&&&br&最常见的还是坐在座位上,听课刷题聊天,就这样一天天过去,直到最后交卷铃响起。。。&br&&img src=&/7e7a61cb2ac216c8cb12_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/7e7a61cb2ac216c8cb12_r.jpg&&&br&==============================&br&致高中。&br&&br&&br&==============================&br&百年校庆,祝母校越来越好。
多图预警! 我在高考后接触到《我的世界》这款游戏..........的安卓版,当时被这种自由自在建造的感觉惊呆了 于是便花了三天时间把高中母校的新教学楼捣鼓出来了= =手机屏幕点的真心蛋疼= = 来来来,只需三步骤,建成教学楼! step.1把主楼梯建好。。。 ste…
&img src=&/v2-4e7a8cbbec392cb7844a_b.jpg& data-rawwidth=&331& data-rawheight=&210& class=&content_image& width=&331&&&p&震惊!9月30日早上九点三十分,腾讯 WeGame 官方,曾发布了一条微博,其内容是「大吉大利,____吃鸡?敬请期待!」配图为《绝地求生:大逃杀》的宣传图。&/p&&img src=&/v2-2acdbe66efa_b.jpg& data-rawwidth=&411& data-rawheight=&300& class=&content_image& width=&411&&&p&不过,这条微博发布后没多久就删除了。&/p&&p&再加上之前传闻腾讯投资《绝地求生》开发商蓝洞。一系列的信息让我浮想联翩,鹅厂如果真代理国服吃鸡,会不会是一个大坑?&/p&&img src=&/v2-09c75d6444fedc191c56a8cd622a0f6e_b.jpg& data-rawwidth=&538& data-rawheight=&305& class=&origin_image zh-lightbox-thumb& width=&538& data-original=&/v2-09c75d6444fedc191c56a8cd622a0f6e_r.jpg&&&p&首先它的名字肯定是叫:天天吃鸡或是全民吃鸡。&/p&&img src=&/v2-d94a93b605af36dc07478c_b.jpg& data-rawwidth=&861& data-rawheight=&565& class=&origin_image zh-lightbox-thumb& width=&861& data-original=&/v2-d94a93b605af36dc07478c_r.jpg&&&img src=&/v2-b2cd2899ba7_b.jpg& data-rawwidth=&558& data-rawheight=&225& class=&origin_image zh-lightbox-thumb& width=&558& data-original=&/v2-b2cd2899ba7_r.jpg&&&p&按鹅厂的尿性,Wegame限定是少不了的,内测还不得下个腾讯游戏助手,在里面抢上一波激活码?上线前一周连续签到领新手礼包自然也跑不掉。&/p&&img src=&/v2-3e106f07e6e7de5328fbcd205d9c67d5_b.jpg& data-rawwidth=&334& data-rawheight=&214& class=&content_image& width=&334&&&p&界面大概是这种画风,三级心悦会员专属角色,配充电作战服,防毒面具。在毒圈内降低百分之50毒伤,提升百分之50物理防御。以一打10不是梦。&br&&/p&&img src=&/v2-bb57bd7b1f_b.jpg& data-rawwidth=&433& data-rawheight=&245& class=&origin_image zh-lightbox-thumb& width=&433& data-original=&/v2-bb57bd7b1f_r.jpg&&&p&玩个游戏比在尼玛景区上厕所还难!&/p&&img src=&/v2-15ceab9e0f50f7ecac07344_b.jpg& data-rawwidth=&482& data-rawheight=&270& class=&origin_image zh-lightbox-thumb& width=&482& data-original=&/v2-15ceab9e0f50f7ecac07344_r.jpg&&&img src=&/v2-5cfcb28362b8ddd135d04_b.jpg& data-rawwidth=&341& data-rawheight=&256& class=&content_image& width=&341&&&p&别怕,不要998,不要299,只要99,开通吃鸡VIP,从此告别排队等待。什么,你说你死也不开?&/p&&img src=&/v2-3f20dcf7ced0cf43dd82c30c_b.jpg& data-rawwidth=&202& data-rawheight=&202& class=&content_image& width=&202&&&p&可以!骚年,很强势。但不开会员可是没有降落伞的哦!自己找个河跳吧&/p&&img src=&/v2-ebc6a86e780ed098a22c49_b.jpg& data-rawwidth=&204& data-rawheight=&204& class=&content_image& width=&204&&&p&而且会员可是分梯度的,像最高等级的钻石会员不仅降落快,飞的远,而且局直送吉利服;&/p&&img src=&/v2-2b2cec406e7f9b5cf176d7_b.jpg& data-rawwidth=&553& data-rawheight=&312& class=&origin_image zh-lightbox-thumb& width=&553& data-original=&/v2-2b2cec406e7f9b5cf176d7_r.jpg&&&p&98K专属会员子弹,拥有额外30%破甲效果,你值得拥有。&/p&&img src=&/v2-cef4b55d73a56b6a399c90f26d9602b4_b.jpg& data-rawwidth=&242& data-rawheight=&200& class=&content_image& width=&242&&&img src=&/v2-4db93d2cc6cc9175ba112_b.jpg& data-rawwidth=&144& data-rawheight=&109& class=&content_image& width=&144&&&p&着陆后3分钟内无敌。落地成盒?不存在的!&/p&&img src=&/v2-3bb9efd28cbd01c99bebc6a_b.jpg& data-rawwidth=&376& data-rawheight=&374& class=&content_image& width=&376&&&p&有些骚年可能会觉得这不公平 。&/p&&img src=&/v2-4bd3cc7f76d_b.jpg& data-rawwidth=&264& data-rawheight=&158& class=&content_image& width=&264&&&p&放心,每胜利一局你将会有机会获得特殊道具碎片,10个碎片可以合成类似会员专属的特殊道具,肝它一个通宵就能体会人民币玩家的快感了!想想还有点小激动呢!&/p&&img src=&/v2-01e7ba3a882b35ee66fd_b.jpg& data-rawwidth=&614& data-rawheight=&407& class=&origin_image zh-lightbox-thumb& width=&614& data-original=&/v2-01e7ba3a882b35ee66fd_r.jpg&&&img src=&/v2-b91d7dea604ba73a87b51_b.jpg& data-rawwidth=&558& data-rawheight=&247& class=&origin_image zh-lightbox-thumb& width=&558& data-original=&/v2-b91d7dea604ba73a87b51_r.jpg&&&p&武器道具千篇一律没意思?没关系!只要充值,即可解锁黄金武器皮肤,在游戏中捡到对应的枪械道具时,就会变成金闪闪!&/p&&img src=&/v2-ce6ed7f784_b.jpg& data-rawwidth=&558& data-rawheight=&414& class=&origin_image zh-lightbox-thumb& width=&558& data-original=&/v2-ce6ed7f784_r.jpg&&&p&黄金枪、黄金盔、黄金平底锅……土豪象征,绝版珍藏!&/p&&img src=&/v2-9d6fab2e6de6_b.jpg& data-rawwidth=&404& data-rawheight=&304& class=&content_image& width=&404&&&img src=&/v2-40a3a4ffca34ba1d9efd2edb_b.jpg& data-rawwidth=&409& data-rawheight=&229& class=&content_image& width=&409&&&p&限时不过瘾?土豪当然是充值排名拿永久的!&/p&&img src=&/v2-7dcbfff5f9f8f8071acd5ca_b.jpg& data-rawwidth=&230& data-rawheight=&123& class=&content_image& width=&230&&&p&充值前3还有专属霸气称号,3000米开外都能看见你金光闪闪的ID&/p&&img src=&/v2-7e506caee604d26ab1aa_b.jpg& data-rawwidth=&376& data-rawheight=&333& class=&content_image& width=&376&&&p&&br&&/p&&p&跳伞真是弱爆了,首冲388送翅膀, 着陆,快人一步。 先搜刮一波装备,占据有利地形,一枪一个还不是美滋滋。&/p&&img src=&/v2-d6283dbb2ad69f4e1c8b067_b.jpg& data-rawwidth=&342& data-rawheight=&304& class=&content_image& width=&342&&&img src=&/v2-cc4ec9b38d17c6f050368dbc6292afff_b.jpg& data-rawwidth=&170& data-rawheight=&163& class=&content_image& width=&170&&&p&有些老铁可能要说了,可是我菜的抠脚,装备再好也吃不了鸡啊!&/p&&p&没什么大不了的,复活币帮你忙!一枚1Q币,多买还打折。打不死你,耗也耗死你!&/p&&img src=&/v2-abc413ef9d_b.jpg& data-rawwidth=&543& data-rawheight=&255& class=&origin_image zh-lightbox-thumb& width=&543& data-original=&/v2-abc413ef9d_r.jpg&&&p&真是普通玩家看了沉默,春哥看了流泪。&/p&&img src=&/v2-103cdfb7ba8_b.jpg& data-rawwidth=&254& data-rawheight=&298& class=&content_image& width=&254&&&img src=&/v2-ad1bfd0f8f7a08c1c7a4be83_b.jpg& data-rawwidth=&254& data-rawheight=&171& class=&content_image& width=&254&&&p&开放聊天功能,这时一贯的特色了。然后开始喇叭:各种撕逼,工会招人&/p&&img src=&/v2-b1fcce4ad35de_b.jpg& data-rawwidth=&860& data-rawheight=&574& class=&origin_image zh-lightbox-thumb& width=&860& data-original=&/v2-b1fcce4ad35de_r.jpg&&&p&还有一些不能明说说的PY交易&/p&&img src=&/v2-c2c0a3ecc90a_b.jpg& data-rawwidth=&500& data-rawheight=&157& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&/v2-c2c0a3ecc90a_r.jpg&&&p&游戏外的捆绑套路也不会少。&/p&&p&列如开通超级QQ会员获取各种专属礼包、绝版限定皮肤!&/p&&img src=&/v2-d1dbf491fadb3e0ffb81b724_b.jpg& data-rawwidth=&1291& data-rawheight=&553& class=&origin_image zh-lightbox-thumb& width=&1291& data-original=&/v2-d1dbf491fadb3e0ffb81b724_r.jpg&&&p&只要充值开通专属“鸡钻”,即可享受踢人,防踢特权。打不过我还踢不过吗?&/p&&img src=&/v2-689a5d82ac_b.jpg& data-rawwidth=&544& data-rawheight=&246& class=&origin_image zh-lightbox-thumb& width=&544& data-original=&/v2-689a5d82ac_r.jpg&&&p&刚买的电脑,玩个吃鸡怎么这么卡呢?现在就安装腾讯电脑管家,享受双倍升级加速!&/p&&img src=&/v2-49c3abef7f54fd31bcf2ee_b.jpg& data-rawwidth=&811& data-rawheight=&472& class=&origin_image zh-lightbox-thumb& width=&811& data-original=&/v2-49c3abef7f54fd31bcf2ee_r.jpg&&&p&以上纯属吐槽,如果腾讯真代理吃鸡也不见得就是坏事,至少不用开代理,也不会有多大的网络延迟!还是期待一下正式上线的真实情况吧。最后&/p&&img src=&/v2-80dd26fcc4fe_b.jpg& data-rawwidth=&504& data-rawheight=&404& class=&origin_image zh-lightbox-thumb& width=&504& data-original=&/v2-80dd26fcc4fe_r.jpg&&
震惊!9月30日早上九点三十分,腾讯 WeGame 官方,曾发布了一条微博,其内容是「大吉大利,____吃鸡?敬请期待!」配图为《绝地求生:大逃杀》的宣传图。不过,这条微博发布后没多久就删除了。再加上之前传闻腾讯投资《绝地求生》开发商蓝洞。一系列的信息…
&b&我觉得饥荒不只是一个小型的休闲游戏,它有着许多生存大作难以企及的深度。&/b&&br&&br&两年前,PC上,我的Wilson曾经存活了几百天。&br&&br&他能通过放风筝和轮流压制的技巧,无伤摧毁一个两层的蛛巢;也能让猪人、鱼人和牦牛互相残杀,自己渔翁得利,在三只鸡蛋上跳舞。他铸就了石头砌成的高墙,开垦了成片的农场、移植了草地和果树,铺上了奢华的地毯,还养了狸猫、高脚鸟和乌鸦作为宠物。基地当中,武器、防具和工具填满了几个箱子,灯火熠熠生辉,还有好多复活祭坛:“逝者不死,必将再起,其势愈烈。”&br&&br&但他从没笑过。&br&&br&“生命不能承受的不是存在,而是作为自我的存在。”很明显,在这片没有社会的旷野,Wilson找不到可以彰显自我的缘由。他或许曾欣喜于火堆旁小高脚鸟的诞生;雪夜中,他的心或许也曾为瑟瑟发抖,簇拥在火堆旁边称他为“Friend”的猪人柔软,可前者长大后会无情地与之为敌,后者则会在月圆之夜变成怪兽:饥荒世界中,一切都只是资源和风险,战战兢兢,如履薄冰的生活永无止境。&br&&img src=&/1fbde57fde3c_b.png& data-rawwidth=&2048& data-rawheight=&1536& class=&origin_image zh-lightbox-thumb& width=&2048& data-original=&/1fbde57fde3c_r.png&&(猪人和Wilson一起在火旁取暖)&br&&br&和许多肩负伟大使命的游戏主角不同,Wilson存在的意义就是存在本身,一切看似宏伟的目标,其实只是为了在世界中继续存活而必要的方法。Wilson没有社交,他一直在为我一个人表演自己生存的方式,这种表演当然有人定胜天的志气,却也透露着一股宿命的悲哀。&br&&br&米兰·昆德拉在《不朽》中为存在做了他所理解的注释。有两种方式能让自我实现存在意义的不朽:加法和减法。前者需要为自己贴上无数的标签;后者则需要明心见性,找到自我与他人间真正的差异。Wilson和大多数人一样,迷失在生存和欲望当中,只懂得加法的意义。他存在的方式,或许只是建造越来越庞大的基地,搜集越来越多的物品,然后修筑他自认为坚不可破的壁垒,团结能够团结的力量,抵御死亡的入侵。在这一过程当中,他竭尽全力去表演和争取,却只能得到注定的结局。&br&&br&我们何其相似。&br&&b&------------------------------------------------------&/b&&br&&br&饥荒为什么是款好游戏?&br&&br&&b&&b&&b&成熟的风格和思想内核&/b&&br&&/b&&/b&&br&成熟的游戏都有自己的风格,这种风格往往掺杂着制作人想表达出来的哲学主题,也决定了游戏的深度。&br&&br&有人说,《饥荒》的美术风格之所以为人称道,是因为受到了蒂姆·伯顿黑色幽默审美的启发。在低亮度、浓重阴影和低饱和度的基调上,人物两头身的漫画画风不拘一格,和节奏明快的小调BGM一起,构成了一种荒诞与真实并存的风格。技术和魔法并存的设定也强化了这种感觉。&br&&br&&img src=&/5da1f05b444ca1fb7e07_b.png& data-rawwidth=&2048& data-rawheight=&1536& class=&origin_image zh-lightbox-thumb& width=&2048& data-original=&/5da1f05b444ca1fb7e07_r.png&&&b& (&/b&精神归零的主角被自己臆想出来的暗影怪兽杀死,一旁的科学仪器也被雷劈中)&br&&br&游戏的叙事一样充满魔幻现实主义的色彩。宏观而论,纵向的时间轴,抑或说四季的变化与昼夜的更替固然构成了最为稳定的时间维度。而在中观的冒险过程中,饥荒世界的背景也会通过一些道具甚至彩蛋展现出来:由机械守护的地毯,上面有着大理石雕塑和传送器零件,似乎是旧世先进文明的遗铎;随处可见的骷髅旁边,总是有着各种各样的资源甚至农地;森林中的墓碑中安放着谁的灵魂,又是经何人之手得以修建?种种细思极恐的细节,彼此并无直接的交互,却又有着千丝万缕的关联。甚至在微观层面,每个人物在检查各种物品和进行各种动作时,也会说出不同的语句,这些碎片化的内容共同建构出了一个个彼此迥异的人物。宏观、中观和微观角度融合,既增添了叙事的深度和广度,又进一步渲染了魔幻现实主义的氛围。&br&&img src=&/8b146fe650fbc16af4cd9ff7e2f79350_b.jpg& data-rawwidth=&2048& data-rawheight=&1536& class=&origin_image zh-lightbox-thumb& width=&2048& data-original=&/8b146fe650fbc16af4cd9ff7e2f79350_r.jpg&&(死去的前人留下了一根冰魔杖和一件保暖背心。周围的猎犬头骨仿佛述说着搏斗的痕迹)&br&&img src=&/b54aea18cd72e8e_b.png& data-rawwidth=&580& data-rawheight=&466& class=&origin_image zh-lightbox-thumb& width=&580& data-original=&/b54aea18cd72e8e_r.png&&(一封信,或能揭示人物之间的关系)&br&&br&游戏一旦形成自己的美学和叙事风格,那便有了艺术的影子。倘若还能隐藏一些三观在其中,水平就更会达到新的高度。饥荒把“人都是要死的”观念发扬到了极致,主角容易死,经常死,一定会死,而且死了就啥都没了。作为典型的生存游戏,《饥荒》中的人物具备饱腹、生命和精神三项数值,任意一项跌落,主角就离死不远了。数值的跌落速度会越来越快,不定期前来袭击的猎犬也会越来越多。此外,黑夜、寒冷、火灾……种种条件一旦达成,主角也会迅速死亡。若没有复活祭坛,那一切都只能重头再来。而这种对意义虚无的怀疑和轮回式的宿命,正是荒诞派和魔幻现实主义的经典之作:《等待戈多》与《百年孤独》的思想内核。&br&&img src=&/d0c1efd6e9a7_b.png& data-rawwidth=&2048& data-rawheight=&1536& class=&origin_image zh-lightbox-thumb& width=&2048& data-original=&/d0c1efd6e9a7_r.png&&(开头动画中的穿越机器。Wilson的衣着和神态颇有上个世纪拉丁美洲的韵味,而拉美则是魔幻现实主义的起源之地)&br&&br&&b&充足的内容玩法&/b&&br&&br&除了魔幻现实主义的深度之外,《饥荒》一样具备优秀游戏所应该具备的广度:充足的内容和玩法。&br&&br&《饥荒》的道具十分丰富,科技树也设计得合情合理,NPC更是有猪人、鱼人、牦牛、蜜蜂等数十种之多。每种NPC都能提供食物、资源、保护和死亡,全看玩家的选择。同时,既然游戏以饥荒命名,那必然拥有各式各样的特色食物,从只能增加生命的花瓣,到用火堆制作的烤肉,再到用晾肉架、锅具制作的组合烹饪,都有着各种属性。与丰富的道具相对应,主角能够完成的动作也有很多。从空手采集,到砍伐、开采、挖掘、点燃、种植等等,一切道具,包括地表都可以互动。珍贵的道具一样可以在危急关头当成燃料使用。&br&&img src=&/3beffefc42925c_b.png& data-rawwidth=&2048& data-rawheight=&1536& class=&origin_image zh-lightbox-thumb& width=&2048& data-original=&/3beffefc42925c_r.png&&(黑暗中,主角费力地咀嚼,腮帮子高高鼓起)&br&&br&在游戏过程中不难发现,原本单调的资源获得过程成为了一场可能性的冒险,甚至外出拾粪都显得乐趣十足。以猪皮为例,玩家可以消耗珍贵的装备正面肛掉一个猪人村庄,也可以寻找废弃的猪人小屋或复活祭坛,用锤子砸掉建筑获得素材,更可以在猪人村旁边种下蜘蛛卵,静待长成的蜘蛛和猪人撕逼,然后坐收渔翁之利。特定的资源只会在特定的地形出现,集全道具和建筑并不是一件容易的事情。&br&&img src=&/e657d6fd9f9ef3d73da2e5_b.png& data-rawwidth=&2048& data-rawheight=&1536& class=&origin_image zh-lightbox-thumb& width=&2048& data-original=&/e657d6fd9f9ef3d73da2e5_r.png&&(地底世界虽常年黑暗,却别有洞天,NPC和资源也不相同)&br&&br&总之,游戏把战斗、搜集和探索机制成功地糅合在一起,工具也在一定程度上彼此相通,手感浑然流畅。同时,生存模式当中也嵌有固定地图的冒险模式,供集全传送装置零件,开启传送门的玩家挑战。&br&&br&&b&极度用心的细节&/b&&br&&br&在细节的打磨上,除了受个别玩家诟病的闪退问题,《饥荒》几乎做到了95分的水平。拉近视角并不会出现平板端游常见的模糊问题。虽然是2D游戏,但是视角却可以转换,以便玩家拾取被遮挡住的物品。主角靠近任何物品,都会有名字显示出来,而且长按可以选择不同的动作。&br&&img src=&/70dff8cd_b.png& data-rawwidth=&2048& data-rawheight=&1536& class=&origin_image zh-lightbox-thumb& width=&2048& data-original=&/70dff8cd_r.png&&(大雨倾盆,道具尽皆潮湿——拉近视角可以发现,纹理一样令人赞叹)&br&&br&细节精心另外的表现,就是游戏层出不穷的隐藏设定和彩蛋了。通过采花(什么鬼)可以回复的精神,在恶魔花附近逗留则会降低;浑身潮湿的时候,木头不好燃烧,砍树时还会出现“手滑”的现象;四季的色调、天气变化、昼夜长短和生物活动也各不相同。一个栩栩如生的饥荒世界就这么构建出来。人设也是如此:&br&&img src=&/f54f959d796fba8c6ff4de6f049a0f7a_b.png& data-rawwidth=&2048& dat

我要回帖

更多关于 使命召唤键位设置 的文章

 

随机推荐