沙盘引擎 (SEngine)

创意诞生沙盘世界,不止如此想象!

用户工具

站点工具


extend:prop

这是本文档旧的修订版!




📚 游戏道具扩展

在《沙盘引擎》世界框架中,游戏道具是极为重要的存在,任何基于角色手持物品的逻辑都属于游戏道具范畴。

无论何种类型的游戏玩法,角色手中的物品都能起到大作用,无论是显示作用还是实际使用,亦或是【背包系统】等扩展操作,游戏道具系统都可以便捷实现。

📒 游戏道具简介

在默认情况下,沙盘引擎内所有的【游戏道具\物品】均没有任何作用它们只是看起来像XXX的一个模型,必须由开发者根据实际游戏玩法,具体设定它们应该有何实际操作。

这需要开发者在模组目录\Data\Prop\XXX.json文件修改扩展有关【游戏道具】的Json配置文件,这其中可能包括ID、模型、Flag、叠加数量、伤害、延迟时间、动画组等数值设定,这将直接影响到游戏道具的实际展现形式

📘 文件命名规范

想要进行游戏道具的扩展维护,必须对文件使用特定的命名规范,否则引擎可能无法识别配置文件。

命名规范:ID_Name.json

例如:10000_Base.json(自定义ID从10000开始)

这里需要注意,因为有些大型玩法模组可能会有【物品分类】等需求,所以游戏道具的配置文件允许由多个Json(数组)文件组合而成,如果游戏玩法相对简单,那么也可以只自定义一个json文件即可。

举例:游戏只有少数20个道具,并且基本没有什么分类需求,那么可以只建立一个如10000_GameItems.json,只在此文件内配置全部道具即可。

举例2:例如《我的世界》游戏,道具有方块、食物、工具等等很多内容,那么为了规范分类考虑,可以分别建立10000_Cube.json | 10001_Food.json | 10002_Tool.json多个文件,并将不同的物品配置编写在指定的分类json下。

引擎API可能会额外提供一些根据物品分类筛选列表的功能,所以对于物品较多的游戏,分类是有必要的(沙盘引擎的默认物品均进行了分类)

📒 道具配置设定

//枪类武器配置示例
[
    {
		"ID": 0, //道具ID
		"Model": 7000, //绑定模型ID
		"Flags": 132, //Flag类型(128+4 == 枪类+连续发射)
		"Multiple": 1, //背包内槽内叠加数量(1=不可叠加,通常有特性的物品一般都不应该叠加)
		"Damage": 10, //常规攻击力(因为此示例是Flags枪类武器,所以这里就是枪械的攻击力,平时则是普通攻击伤害)
		"Range": 1, //主要范围,通常指攻击检测范围(常规1左右),武器类表示武器伤害检测范围(非射程)
		"Shake": 1.0, //每次触发使用时抖动范围
		"Radius": 35, //次要范围,主要用于类似枪械射程等内容,普通物品如果不为0,则表示物品声音范围(引擎默认值35)
		"Direction": 1, //模型方向类型(0=自身顺向手持; 1=永远向前; 2=站立时手持,行为时向前; 3=站立时向前,行为时手持)
		"PreloadTime": 1.0, //物品刚切换时冷却CD时间
		"ActionInterval": 0.1, //每次触发使用的间隔(Action)
		"Audios": { //声音类(可空0)
			"Load": 0, //初次切换时声音
			"Idle": 0, //每次Action结束后声音
			"Focus": 0, //焦点时声音
			"Action": 0 //行为时声音
		},
		"Animations": { //动作类(可空0)
			"Idle": 2, //站立时动作
			"Focus": 15, //焦点时动作
			"Action": 15 //行为时动作
		}
	}
]
Flag 说明
0 默认(Normal)
1 不可攻击(Unavailable)
2 盾牌抵挡效果(Shield)
4 连续使用效果(Continue),否则是单次触发
128 预制效果:枪类
Key 说明
Animations 包含关键动作组Idle|Focus|Action|Reload,采用int指向动作组ID(0=无动作)
其中Reload是一个被动事件,只有API调用Character.ReloadProp()时会触发一次
(例如普通的球棒,并不具备Reload重载需求,Reload这更适合枪械类换弹时执行使用)
此处如果值为0或不填写,则是“通用物品”放到手上的形式,不具备其他动作

extend/prop.1684127697.txt.gz · 最后更改: 2023/05/15 13:14 由 bibiboxs