《我的世界》开发大师实战班 开发重难点看这里
各位开发者们,想要做出优质的玩法,就离不开各类专业知识。开发大师实战班通过面向各阶段开发者,进行具有针对性的技术培训,将API需求、模型、场景、UI等难题逐一攻破,让大家能快速投入到深度的内容创作中。 不知道上一期开发大师实战班的重难点笔记有没有帮助到各位呢?本期开发大师实战班MOD SDK重难点问题汇总也是干货满满,在线为大家解答在实际开发中会遇到各种各样的问题,快来看看吧! 【MOD SDK重难点笔记】 【自定义维度】 Q:想要自定义全是海洋的维度怎么生成? A:需要用到minecraft:overworld_height组件。将noise_type设置为ocean或者deep_ocean。 另外,原版还有非常多预设的地形高度值:包括("stone_beach", "deep_ocean", "default", "default_mutated", "lowlands", "river", "ocean", "highlands", "taiga", "mountains", "mushroom", "less_extreme", "extreme", "beach", "swamp")。 ? Q:维度中如何统一全部群系? A:调整其他群系生成的概率。但即使如此,也做不到只有一个群系。 ? Q:如何在将特征生成于海滩边的同时,控制它的高度和真实位置? A:在feature_rule内利用三元运算符确认原位附近皆为海滩后,再在结构内加几层沙子(以免浮空),并且控制高度。 ? Q:自定义维度的时候,为什么当维度设置到20以上,游戏就进不去了?而文档标明已经支持到int的最大值。 A:建议看下各项键值名字有没有写对,包括检查下文件夹名字是否有写错或者键的字符串写错等等。看了官网技术手册中关于ModAPI的文档,文档意思感觉是从22开始,到int最大值前一个数字,如果最后什么都还不行就把数字调成更大一点(比如23、24、25等)。 ? Q: 在自定义的纬度中放置自定义结构特征,实现方法是什么? 我们想在一个新的纬度中删除掉原本的所有群系,填充为水,成为一个新的群系,并在水上放置多个自定义结构特征,使它们拼接为一个岛屿。 A:假设开发者手上已有这些生成好的群系文件(若没有可以打开官方示例自定义维度群系mod生成这些文件),只需在里面设置群系的初始高度为ocean或者deep_ocean这两个值即可。他们会将群系的高度调整成海洋高度,MC的设定是低于62的高度会有水,这两个值就是海洋和深海的高度。 ? Q:如何隐藏原版的特征? A:需要用到minecraft:ignore_automatic_features组件。它可以屏蔽这个群系的自定义树特征、矿石特征,但无法屏蔽像林中府邸、村民要塞特征等。 ? Q:我们放置的自定义结构部分会丢失,有方法解决么? 我们现在是多个结构组合出来的,看了下确实生成在好几个群系中间导致的,有方法指定生成在单个群系(比如海洋群系)中吗?我们想每次玩家进入这个维度都能准确地出现在岛上,这相当于一个boss房。 A:文档里有说自定义结构不能超过16x16,需要切割。可能有几个点放的地方已经不是你想要放的群系了,所以那几块丢了。比较直接的方法是判断下每个放置特征的最大点是不是都在你想要的群系里。如果不是一起消失群系的分布是随机的,建议将整个群系每个切割的部分,它们各自放置的点都检查一下是否在单个群系内。如果不是则全部放到0高度就是取消生成,要让玩家出生准确在一个群系不太可能,建议不要用自定义群系维度门。 ? Q:我们的岛有80多个小结构。如果通过place放置的话,怎么准确计算出它应该放置的位置?以及保证它在水上呢? A:建议通过不是自定义传送门的方式,让玩家传送到一个预定的新维度坐标里。有个接口是gettopblock获得某个方块最顶层的非空气方块,以这个高度为开始放置你的80多个小结构。可以先放置一个小黑屋小结构把玩家关在里面,然后开始隔着几个帧放置这80几个结构,放置完再把玩家放出来。 ? Q:如何知道放置的坐标是哪个? A:有个接口是locateNeteaseStrutureFeature,类似原版locate指令可以获得特征的位置。 ? Q: 假设一个玩家先进来,然后正在岛上,此时另一个玩家进来这个岛会不会重新又加载一次呢? A:这个应该还好,这个岛如果只放一次的话,就在保存一个extraData,然后每次进来这个维度前,都先确认下之前是不是放过岛屿了。 ? Q:我们是这样来的监听PlaceNeteaseStructureFeatureEvent 然后保存坐标的:玩家切换维度的时候tp过去,我们没用放置特征的接口,而是用的生成规则。 A:建议改用一个维度门,但里面的方块全部不是实心的方块,然后打开玩家方块碰撞检测,碰到后传送到维度过去。建议把维度放置用放置特征的接口放在那边,这个岛在新维度如果是一个唯一的boss岛,或者唯一的可以反复刷的boss岛,建议的处理方式如上文所述。但那个接口如果一次性放好几个特征会卡顿,建议把它们分开几个帧放完。 些知识点来自开发大师实战班导师Spcoo和境界的回答,有没有解开各位的疑问呢?关于实战班还有更多精彩内容,欢迎关注开发者公众号:我的世界Minecraft开发者 进一步了解!《我的世界》期待大家做出更多优秀的作品,无限未来由你我创造! 关于《我的世界》: 网易游戏代理的《我的世界》(Minecraft)是一个关于方块与冒险的游戏,玩家可以独自一人或与朋友们一起自由冒险,探索随机生成的世界,创造令人惊叹的奇迹。无论是建造简单质朴的小屋,还是拔天倚地的城堡,尽可自由发挥你无穷的想象力。 |