🏆 导航菜单
🎪 扩展内容
🎯 沙盘引擎文档
🕹️ 文章及书籍&教程
🎖️ 外部的链接
🏆 导航菜单
🎪 扩展内容
🎯 沙盘引擎文档
🕹️ 文章及书籍&教程
🎖️ 外部的链接
这是本文档旧的修订版!
在《沙盘引擎》世界框架中,游戏道具是极为重要的存在,任何角色可手持的物品都属于游戏道具范畴。
无论何种类型的游戏玩法,角色手中的物品通常都能起到很大作用。
有些只是显示作用、有些可能有实际使用功能,也可能搭配【Prop背包系统(抽象功能)】进行扩展操作。
针对这些需求,【自定义游戏道具扩展+Prop道具系统】几乎都可以相对容易的实现。
在沙盘引擎世界中,所有的【游戏道具\物品】全部基于抽象的概念,实际上并没有任何默认作用,它们只是看起来像XXX的一个模型,通过API方式放到了角色手上(动物等特殊类型角色不会有效果),开发者可根据实际游戏玩法需要,自行通过【自定义游戏道具+代码编写道具功能】设定它们应该有何实际操作。
想要将一个普通模型注册为游戏道具,需要开发者找到LocalMod\Store\Data\Prop
目录,新建或修改有关【游戏道具】的Json配置文件,这其中可能包括ID、模型、Flag、叠加数量、伤害、延迟时间、动画组
等数值设定,这将直接影响到游戏道具的实际展现形式。
想要进行游戏道具的扩展维护,必须对文件使用特定的命名规范,否则引擎可能无法识别配置文件。
命名规范:GroupID_Name.json
例如:10000_Base.json
(自定义ID从10000开始)
注意,自定义游戏道具的配置文件默认是以Group组.json
的形式存在,也就是说,单个json文件内允许由多个配置项(数组)组合而成。
因此,如果游戏玩法相对简单(或没有分类需求),那么可以只自定义一个json文件即可,不建议给每个道具都单独分配一个json。
举例:游戏只有少数20个道具,并且基本没有什么分类需求,那么可以只建立一个如10000_GameItems.json
,只在此文件内配置全部道具即可。
举例2:例如《我的世界》游戏,道具有方块、食物、工具等等很多内容,那么为了规范分类考虑,可以分别建立10000_Cube.json | 10001_Food.json | 10002_Tool.json
多个文件,并将不同的物品配置编写在指定的分类json下。
*引擎API可能会额外提供一些根据物品分类筛选列表的功能,所以对于物品较多的游戏,分类编写物品可能是有必要的**。*
根据Key值顾名思义,对于部分基础属性(例如Pos\Scale\Flags\Speed...
等属性),可以考虑省略部分配置,以使用引擎提供的默认值。
例如:ID
固然是不能省略的,但Speed
默认值是1.0
,所以如果没有Speed
需求,即使不填写也不会出错。
注意:自定义道具与其他自定义操作一样,有关ID
部分必须从10000
开始。
//物品道具Json配置示例 [ { //示例:枪械武器 "ID": 10000, //道具ID "Model": 5163, //绑定模型ID "Pos": {"x": 0, "y": 0, "z": -0.2}, //模型位置偏移(可空) "Scale": {"x": 1.5, "y": 1.5, "z": 1.5}, //模型缩放(可空) "Flags": 132, //Flag类型(128+4 == 枪类+连续发射) "Multiple": 1, //背包内槽内叠加数量(1=不可叠加,通常有特性的物品都不应该叠加) "Damage": 10, //常规攻击力(因为此示例是Flags枪类武器,所以这里就是枪械的攻击力,平时则是普通攻击伤害) "DamageRange": 1, //产生攻击的检测范围(范围内的实体都会被攻击) "DamageShake": 1.0, //产生攻击时的检测范围偏移\不稳定性(0为不偏移,枪械类:表示后坐力偏移程度) "Distance": 35, //距离属性,主要用于类似枪械射程等内容,普通物品如果不为0,则表示物品声音范围(引擎默认值35) "Direction": 1, //手持物品方向类型(表格详情) "PreloadTime": 1.0, //物品刚切换时冷却CD时间 "Speed": 1.0, //物品每次Action时的动画速度,直接影响Action时间间隔(例如:枪械射速) "Audios": { //声音类(可空0) "Idle": 0, //拿出物品时声音 "Focus": 0, //焦点时声音 "Action": 0 //行为时声音 }, "Animations": { //动作类(可空0) "Idle": 2, //站立时动作 "Focus": 15, //焦点时动作 "Action": 15 //行为时动作 } }, { //示例:可省略的简单写法 "ID": 10001, "Model": 5163, "Damage": 10, //甚至也可以省略 } ]
Flag | 说明 |
---|---|
0 | 默认(Normal) |
1 | 不可攻击(Unavailable) |
2 | 盾牌抵挡效果(Shield) |
4 | 连续使用效果(Continue),否则是单次触发 |
128 | 预制效果:枪类 |
Direction | 说明 |
---|---|
0 | 手肘正前方向(因动作不同,可能并不是角色的正前方) |
1(常用) | 角色正前方 |
2 (默认) | 闲置时手持方向[0],行为时正前方[1] |
3 | 闲置时正前方[1],行为时手持方向[0] |
Key | 说明 |
---|---|
Animations | 包含关键动作组Idle|Focus|Action ,采用int 指向动作组ID(0=无动作)此处如果值为0或不填写,则是“通用物品”放到手上的形式,不具备其他动作 注意:道具的 Action 使用方式、动作、时机完全与此处配置有关(例如:武器射击,实际上是等待动作到达射击部分后,才会触发Action ) |
当通过上述操作成功注册\绑定道具后,开发者可能希望在游戏内使用新的道具,或者给不同的道具实现不同的功能,请参考此部分操作。
chara.SetProp()
功能【给予】角色一个道具到背包(注意道具ID要填写正确)chara.PropSlot
正确)Action
行为时做些什么,或者能否触发的前提条件),参考《OnCharacterPropActionBefore及OnCharacterPropAction》针对游戏道具扩展部分的内容,经过沙盘引擎开发组的自我评估,几乎很多扩展功能都可以通过上述内容实现,具体取决于开发者如何合理控制Json以及API的行为事件交互。