108 lines
7.2 KiB
Markdown
108 lines
7.2 KiB
Markdown
---
|
||
front: https://nie.res.netease.com/r/pic/20211104/69055361-2e7a-452f-8b1a-f23e1262a03a.jpg
|
||
hard: 入门
|
||
time: 10分钟
|
||
---
|
||
|
||
# 理解附加包的结构
|
||
|
||
接下来在本节中,我们将着重且正式介绍前文中已经出现过多次的**附加包**(**Add-on**)的概念。
|
||
|
||
## 附加包的概念
|
||
|
||
附件包这一概念由是微软引入我的世界开发,在我的世界中国版中,网易沿用了这一概念同样作为中国版作品的代名词。从本质上看,国际版和中国版的附加包性质是一样的。**附加包**就是一个带有一个**清单文件**(**Manifest File**)的能够通过**基岩引擎**(**Bedrock Engine**)对我的世界做出修改的**模组**(**Mod**),一般是以一个文件夹、一个压缩包或者某种特殊格式的加密文件出现。
|
||
|
||
基岩引擎就是我的世界游戏读取并应用附加包的一套接口和程序。我们只要按照规定的格式编写附加包,引擎就不会报错。而清单文件则是一个被称作`pack_manifest.json`或者`manifest.json`的文件,用于引领整个附加包的内容,同时方便基岩引擎了解附加包的类型,使其能够知道应选择何种接口来对接这个附加包。
|
||
|
||
从上述定义可以看出,附加包根据清单文件中的规定可以分为不同的类型。在中国版中,我们主要使用的便是**资源包**(**Resource Pack**)和**行为包**(**Behavior Pack**)两种附加包。
|
||
|
||
- **资源包**:资源包是一种用来存放客户端资源的附加包,其中存放的大部分内容都是用于客户端显示、渲染、计算的内容。比如,资源包中常放着方块、物品、实体等物体的纹理,有些资源包中还存放着渲染用的自定义的材质和着色器。对于和行为包一起制作用于特定玩法的一些资源包,还存放着各种方块、物品、实体等元素的客户端定义文件。
|
||
- **行为包**:顾名思义,行为包主要用来存放各种元素、物体的行为。同时行为包还存放着各种用于逻辑计算的表、脚本,决定了游戏的服务端如何运作。比如,行为包中一般用来存放玩法的方块、物品、实体等元素的服务端定义文件,以及交易表、战利品表、维度、群系、地物等用于游戏服务端的数据或逻辑。模组API编写的脚本也存在于行为包中。
|
||
|
||
国际版和中国版的附加包的格式有相同之处,也有不同之处,这里我们着重介绍中国版的附加包格式。
|
||
|
||
## 资源包结构
|
||
|
||
```shell
|
||
RESOURCE_PACK
|
||
│ biomes_client.json # 客户端生物群系配色定义文件
|
||
│ blocks.json # 客户端方块属性定义文件,包括纹理、各向异性和方块形状等
|
||
│ pack_icon.jpg # 资源包的图标,也可以为.png或.tag格式
|
||
│ pack_manifest.json # 资源包的清单文件,也可以单纯地为manifest.json
|
||
│ sounds.json # 声音定义文件,将声音事件链接到对应的系统音效类型上
|
||
│
|
||
├─animations # 客户端动画定义
|
||
├─animation_controllers # 客户端动画控制器定义,主要用于实体骨骼动画
|
||
├─attachables # 附着物定义
|
||
├─effects # 中国版特效定义
|
||
├─entity # 国际版客户端实体定义
|
||
├─fogs # 迷雾定义
|
||
├─font # 字体图片及其定义
|
||
├─items # 国际版客户端物品定义
|
||
├─materials # 材质定义
|
||
├─models # 模型定义,包括了几何、骨架和网格等
|
||
├─netease_items_res # 中国版客户端物品定义
|
||
├─particles # 国际版粒子定义
|
||
├─render_controllers # 渲染控制器定义
|
||
├─shaders # 着色器
|
||
├─sounds # 声音,包含了声音文件和声音事件的定义文件
|
||
├─texts # 本地化
|
||
├─textures # 纹理(资源包必须存在的文件夹)
|
||
└─ui # JSON UI定义
|
||
```
|
||
|
||
## 行为包结构
|
||
|
||
```shell
|
||
BEHAVIOR_PACK
|
||
│ pack_icon.jpg # 行为包的图标,也可以为.png或.tag格式
|
||
│ pack_manifest.json # 行为包的清单文件,也可以单纯地为manifest.json
|
||
│
|
||
├─animations # 服务端动画定义
|
||
├─animation_controllers # 服务端动画控制器定义,主要用于实体命令动画
|
||
├─biomes # 国际版服务端生物群系定义
|
||
├─BoxData # 中国版素材
|
||
├─config # 中国版模组配置文件
|
||
├─customBook # 中国版自定义书
|
||
├─blocks # 国际版服务端方块定义
|
||
├─entities # 国际版服务端实体定义(行为包必须存在的文件夹)
|
||
├─features # 国际版地物定义
|
||
├─feature_rules # 国际版地物规则定义
|
||
├─functions # 函数
|
||
├─Galaxy # 中国版逻辑编辑器的宏和模板
|
||
├─items # 国际版服务端物品定义
|
||
├─loot_tables # 战利品表定义
|
||
├─netease_biomes # 中国版服务端生物群系定义
|
||
├─netease_blocks # 中国版服务端方块定义
|
||
├─netease_dimension # 中国版维度定义
|
||
├─netease_effects # 中国版状态效果定义
|
||
├─netease_enchants # 中国版魔咒定义
|
||
├─netease_features # 中国版特征定义
|
||
├─netease_feature_rules # 中国版特征规则定义
|
||
├─netease_group # 中国版物品分组定义
|
||
├─netease_items_beh # 中国版服务端物品定义
|
||
├─netease_micro_blocks # 中国版微缩方块定义
|
||
├─netease_recipes # 中国版配方定义
|
||
├─netease_tab # 中国版物品分类/物品栏分页定义
|
||
├─Parts # 中国版零件定义及其脚本
|
||
├─Presets # 中国版预设定义
|
||
├─recipes # 国际版配方定义
|
||
├─Script_xxx # 中国版的各类Python脚本
|
||
├─spawn_rules # 生成规则定义
|
||
├─storyline # 中国版逻辑编辑器的逻辑文件
|
||
├─structures # 结构
|
||
├─texts # 本地化
|
||
└─trading # 交易定义
|
||
```
|
||
|
||
以上为完整的资源包和行为包的文件夹模板框架。大部分资源包和行为包无需拥有以上全部的文件夹,只须在需要的时候建立对应的文件夹和相关的文件即可。在上述所有文件中,只有**清单文件**(`pack_manifest.json`或`manifest.json`)是必须正确存在的,这关系到一个附加包是否能被游戏正常识别。
|
||
|
||
## 资源包、纹理包和光影包的区别
|
||
|
||
为了避免大家对各种概念的混淆,这里着重强调一下**资源包**、**纹理包**(**Texture Pack**,旧译**材质包**)和**光影包**(**Shader Pack**)的区别。
|
||
|
||
前面我们已经介绍了,资源包就是一种附加包的类型,一般包含着纹理文件、声音文件、着色器文件、各种客户端的实体、物品、方块定义文件中的全部或者一部分。这种包我们统称为资源包。
|
||
|
||
而纹理包(旧译材质包)则是指那些基本上只有**纹理**(**Texture**)贴图文件的资源包。一般的纹理包都主要用于修改原版纹理,更改原版游戏的外观,使游戏画风焕然一新。
|
||
|
||
光影包则是指主要包含**着色器**(**Shader**)文件的资源包,有些光影包还包含一些自定义材质(Material),或暴露出一些纹理(Texture)接口供其他纹理包使用(比如这段时间很火的四合一PBR贴图规则接口)。光影包主要用于改变游戏的渲染效果,同样的纹理在不同的渲染效果下显示的样貌和状态是不同的。阴影效果、水面反射、体积云雾都是光影包能够实现的特效。 |