2024年9月9日更新日志【2024.09版本】
本次更新为公测版本更新。
除部分严重BUG修复会覆盖旧版本,以下新功能均在编辑器版本2024.09中生效。
开发者可以在编辑器顶部菜单-编辑器版本中进行版本切换。
修复镜头『焦点位置Z轴偏移值』不生效的问题带来的表现变化
我们修复了镜头『焦点位置Z轴偏移值』不生效的问题,默认状态下,这个值是10。
如果开发者曾经调整过此参数,升级到09后可能会发现镜头表现不同。若是希望恢复到之前的设置,可以在『数据编辑器』-『游戏镜头』中找到镜头,并将其值设置为『10』。
若是有多个镜头,可以用批量视图进行修改。
设置/获取单位属性的调整
在2024.09版本中,我们调整了设置/获取单位属性的底层实现,对应的触发语句也进行了调整。
在新版本中,选择『设置/修改/获取单位属性』语句时,子属性类型可以选择除基础值、百分比值之外的自定义属性类型,但不可选择最终值。如果想获取单位属性的最终值,请使用『单位的自定义属性最终值』语句。
对于使用代码开发的开发者,今后应该使用set_custom和add_custom语句设置和修改单位的数值属性,使用get_custom语句获取单位数值属性(非最终值),使用get语句获取单位属性的最终值。
跨服消息功能
我们注意到部分用户的作品会尝试跨服传递一些信息,以下是一些案例:
一些项目使用公用的用户虚拟Id来存储一些公共的数据,如玩家排名等等。但是又希望在排位变化以后通知到当前在同一项目中其它在线的游戏局的玩家。
部分作者会在游戏胜利时给玩家发送信息,但这时候某个真人玩家可能已经离开了游戏并开了另一局新的游戏,作者希望把消息传递到这个玩家。
部分作者会想要建立一个跨服聊天频道,让同一个项目所有游戏局的玩家都能进行在线聊天。
我们注意到部分作者为了实现此类功能,会过于频繁查询和存取云变量,导致了较大的数据库成本。为此,在2024.09版本中,我们加入官方的跨服消息功能。以下触发器动作被加入到了服务端触发编辑器中:
发布跨服频道消息
- 该动作可向一个指定名称的频道发送指定的字符串/数值。
- 频道名称可为任意字符串,订阅了该频道的游戏会收到这一消息。
订阅跨服频道消息
- 收取指定频道的跨服消息,并可获得消息进行处理。
取消订阅跨服频道消息
- 停止收取指定频道的跨服消息。
向指定用户发送跨服务频道消息
- 指定一个用户虚拟Id,只有当该用户在线时才会收到消息,可指定频道名。
- 用户可以在同一游戏局中,也可以在不同的游戏局中。
订阅指定用户的跨服频道消息
- 收取发往指定用户虚拟Id指定频道的跨服消息,并可获得消息进行处理。
取消订阅指定用户的跨服频道消息
- 停止收取指定频道的跨服消息。
注意事项
跨服消息虽然成本消耗远小于频繁的云变量查询和设置,本身依然会产生一定的流量,星火编辑器依然不建议用户过度使用这一功能。当仅需要通知特定玩家时,应尽量使用向指定用户发送和接收消息的版本,当不再需要接收消息时,应及时取消订阅。(游戏局结束时,当局的所有订阅也会被自动取消)
跨服消息仅能对同一项目的不同游戏局发送,不同作者和项目的频道是互相独立的。
物品堆叠数量的默认显示规则优化
在过去,星火编辑器的默认UI中,不可堆叠的物品不会在右下角显示其堆叠层数。但另一方面,如果一个可堆叠的物品因为某种原因导致其堆叠数量变为0,那么它同样不会显示堆叠层数。这可能对玩家造成一些误解,把堆叠层数为0的可堆叠物品当作是堆叠层数为1的不可堆叠物品,但当玩家尝试去使用这些物品时,又会收到充能次数不足的错误信息。
为了统一UI观感的预期,从2024.09版本开始,可堆叠的物品将永远显示其堆叠层数,即使其当前堆叠层数为0,用户也能看到他们具有0个这种物品,避免出现看起来明明可以使用的物品却无法使用的问题。
注:当一个物品的堆叠层数为0时,该物品依然可能存在,只要该物品没有勾选『次数耗尽时销毁』标旗。这是为了让一些物品在次数耗尽后依然能够提供被动增益而存在的功能。比如说一个物品可以召唤两次鱼人宠物,但携带时会使玩家的智力属性+3,那么如果这个物品在使用次数耗尽时就消失了,那么召唤完宠物就会丢失属性加成就会很奇怪。此外,部分用户可能会想要在游戏中实现能够反复补充使用次数的物品,因此堆叠层数为0的物品有其存在意义。
真人玩家槽位初始化逻辑优化
在过去,星火编辑器为了优化执行效率,在一个真人玩家槽位被连入之前,引擎不会对它的玩家和队伍属性进行初始化。
但由于调试模式必然是单人游戏,因此引擎又会对调试者之外的真人玩家槽位进行虚假的初始化,并为他们分配假的用户id。
调试模式与在线模式的这一差异造成了一些两个模式的不一致之处。比如如果用户给尚未连入的玩家槽位创建了单位,这个单位可能会被已经连入的同阵营玩家判定为敌方单位(因为此时该玩家槽位还不存在队伍信息)。但调试模式下又因为所有玩家槽位已经被初始化了信息,这些单位又会呈现正确的队伍状态。
我们观察到了少数项目因为这一差异而导致的隐患,为了避免进一步的混淆,我们在2024.09版本对在线模式的玩家槽位初始化逻辑进行了优化。现在在游戏开始时,每个真人玩家槽位都会进行初始化,并呈现正确的队伍信息,即使这些玩家还尚未连入。
自定义附着表现的销毁逻辑
现在数编表现节点增加了『在宿主销毁时销毁自身』的标旗。勾选该标旗后,如果该表现附着了其它表现或者单位,则会在它附着的宿主销毁时,自动销毁自身,反之,则会解除附着并继续存在于场景中,直到用户手动将其销毁或因别的因素而销毁。
此外,我们还在客户端的表现对象上增加了『设置是否在宿主销毁时销毁』和『设置是否会在宿主销毁时销毁』两个方法,允许用户动态地对特定表现的自动销毁逻辑进行修改。
单位/表现的缩放因子及其继承规则
星火编辑器的单位和表现存在着表现缩放、素材级别缩放、继承缩放等等因素,但在过去,用户可能并不是十分理解这些缩放因子间的关系和用途。为了帮助用户更好地理解这些缩放因子之间的逻辑关系,2024.09版本对这些缩放因子进行了整理,并将整体规则列出如下:
素材级别缩放
- 用于处理不同3d软件来源间导入模型的基准尺寸不一致的问题。有些模型可能需要放大,有些模型可能需要缩小才能达到我们的基准尺寸标准。
- 该缩放层级应当对触发器级别的缩放透明且互不干扰。用大白话说就是,这个缩放是为了“假装素材原本就那么大”。
- 素材级别缩放可以在数编的模型素材节点上配置。
- 2024.09版本中,数编的模型素材节点增加了是否继承继承父节点的素材级别缩放的标旗。该标旗默认不勾选。也就是说,当表现附着于一个单位时,默认不会继承其宿主、乃至宿主的宿主的素材级别缩放。用户可以通过勾选该标旗来将该因子设置为会继承。
- 在2024.09版本之前,素材级别缩放实际上默认会被继承,但这属于非预期的错误。
普通缩放(触发器缩放)
- 通常由触发器脚本设置,所以也称为脚本缩放。脚本缩放是一个独立乘区,默认总是为1。
- 用户可以通过『设置单位缩放 』和『设置表现缩放』动作来动态修改单位和表现的触发器缩放。
继承缩放
- 当表现附着于另一个表现或单位时,从宿主继承而来的缩放。也是单独乘区。
- 通常而言的继承缩放指的是继承而来的普通缩放。素材级别缩放也可被继承,但一般不建议启用。
- 可在数编的表现节点中设置是否继承父节点的缩放,否则该因子为1。
- 若选择继承,则其计算逻辑为
- 当前节点的继承缩放=宿主的普通缩放*宿主的继承缩放(如果宿主也有宿主)。
绑点骨骼缩放
- 基于自身所绑定的绑点的骨骼动画的缩放,同样是独立乘区。
- 骨骼缩放仅能通过动画或者资源库来进行设置。比如『近战英雄样例』的『血焰之剑』技能就是通过动画来操纵绑点骨骼的缩放,以达到使得大剑在蓄力期间变大的效果。
- 骨骼缩放目前必定被子节点继承,因为骨骼缩放本质上是一个动画属性,而非表现属性。
通过触发器构造数编效果节点相关功能的进一步强化
单位.创建带有引发物品的效果节点:在一些情况下,我们可能想要模拟一些物品公式的环境数据。例如,有时候用户可能想要通过服务端触发器来运算手动计算某个物品的某个属性加成公式的运算结果。
这类公式需要传入一个效果节点才能手动强制执行,在多数情况下,直接传入持有者单位的『获取创建信息效果节点』就能解决问题。但单位的创建信息效果节点类似于模拟了一个以该单位为施法者的效果节点,如果原始公式里会取效果节点的引发物品,那么依然是无法取到的。
为此,我们专门为单位类型增加了『创建带有引发物品的效果节点』这个面向对象方法。该方法可以返回一个效果节点,模拟指定施法者使用某个物品引发的效果树。通过将该效果节点传入到物品属性公式中,可以使公式正确地获取到引发物品和施法者,得出正确的模拟运算结果。
效果节点.造成伤害:我们注意到部分用户会在自定义效果节点中使用触发器中的『令单位对单位造成伤害』动作来执行自定义伤害而非使用伤害效果节点。但这种做法其实是有潜在危害的——使用该触发器动作造成的伤害其实与当前技能的效果节点完全无关,但用户可能会错误的认为它们有所关联。因此在进行伤害响应或其它与伤害效果树相关的逻辑判定时,用户可能会惊讶地发现这些触发器伤害并不具有他们所预期的效果树信息。
尽管这样的逻辑属于错误的写法,我们依然能理解到用户希望能在一些特殊情况更加自由地控制效果树伤害的想法。因此在2024.09版本中,我们为效果节点对象增加了新的『造成伤害』面向对象方法。该方法与『令单位对单位造成伤害』动作拥有相似的用法,但却可以将用户所构造的自定义伤害效果模拟成指定效果节点的子效果,这样,用户就又能享受到使用触发器造成伤害的自由度,又能将这些伤害设置到正确的效果树环境之下,避免预期外的错误。
触发器使用物品
在过去,通过触发器来命令单位使用物品是可行的,但实现方式并不十分直观。在2024.09版本中,我们包装了一些使用物品相关的函数,方便用户更加直接地通过触发器下达使用物品的指令。以下触发器动作被加入到了服务端触发器中。
- 令单位使用物品(无目标)
- 令单位使用物品(单位目标)
- 令单位使用物品(向量目标)
- 令单位使用物品(地面目标)
此外,我们还给物品对象增加了一个『可对目标使用』方法。该方法可以在不使用物品的前提下预先判断持有者单位是否能对指定目标使用指定的物品,如果无法使用,还会返回无法使用的原因。
云变量物品相关改动
我们注意到一些开发者的线上项目中经常遇到云变量物品还原失败的情况,主要出现于云变量物品保存后,开发者删除了该物品的数编蓝图,尝试还原云变量物品时出现“解析物品失败”的报错提示。为此,我们添加了『物品-云变量还原失败』事件。开发者可以监听该事件,在物品不存在时删除该无效物品,同时使用『列表型云变量删除项』语句删除对应的云变量列表项ID。
此外,我们还修复了获取云变量物品自定义数据后,修改并保存自定义数据无效的问题。
官方样例更新
我们注意到用户在实现翻滚类技能时经常会遇到一些问题,为此我们在默认的数编技能样例中添加了一个新的技能样例『翻滚(可提前起身)』。
这个技能可以令施法者向着指定方向翻滚一段距离,而且可以在翻滚的中途提前起身并中断移动器。
我们在默认数编技能阳历中添加了一个新的技能样例『预警陨石』,开发者可以参考此技能,实现BOSS战中常见的技能预警机制。
单位转身速度的优化
在过去,开发者想要改变一个单位的转身速度时,必须同时设置该单位的转身速度、最大转身速度和最小转身速度属性,这会给开发者带来理解上的困难和使用上的不便。在2024.09版本之后,改变转身速度只需设置单位的转身速度属性即可。
触发编辑器
- 现在触发器的Ctrl+F全局搜索功能可以搜索到注释和动作组名称当中的内容了。
- 增加了『单位.物品栏』、『获取物品栏』和『指定编号物品栏的全部物品』语句的悬停提示,开发者可以根据提示分辨出该语句传入的物品栏编号规则。
- 服务端触发器增加了『单位-即将拾取物品』事件,监听该事件可以在物品真正被拾取之前执行自定义逻辑。例如:在物品所在的位置创建一个假的物品单位,并让该单位向拾取者移动,从而实现拾取效果。
- 客户端触发器增加了『设置鼠标指针图片』和『使用系统鼠标指针』两个api,可以使用任意鼠标指针图片,并随时还原回系统鼠标样式。建议鼠标指针图片大小为48*48。
- 客户端触发器的从『屏幕坐标获取所有单位』函数现在增加了一个『是否精确选取』的参数,默认为否。当不勾选该参数时,该函数将使用旧有逻辑,将单位视作一个圆柱形来进行选取检测,一旦勾选该选项,客户端将消耗一定计算量,对指定屏幕坐标下的单位进行更加精确的选取。如果用户遇到默认的通过坐标获取单位逻辑无法正确获得预期结果时,可以试着使用精确选取模式。
界面编辑器
- 文字输入框组件和数字输入框组件现在在右侧的属性列表中可以通过下拉菜单来选择输入框字体,而非需要通过填写字体名称。
- 现在在UI编辑器中修改页面名称时,客户端触发编辑器中『创建组件实例』函数的参数选择列表里,对应页面组件的名称也会同步刷新了。
- UI编辑器和触发编辑器的事件中新增了『滚动条位置改变』事件,可以在滚动条位置改变时获取当前位置或执行自定义逻辑。
- 触发编辑器中暴露了文本框的『显示方式』属性,可以在运行时动态改变文本框的显示方式。
- 我们在界面编辑器组件库中增加了『视频组件』,但是距离非常优雅的实现游戏过场动画还差一些优化,我们会在后续版本中继续优化此组件。
音频批量导入功能
音频文件支持批量导入了。
此外,若将音频作为项目资源导入,还可以在创建时自动生成对应的蓝图。
作为项目资源导入的音频,需要在每次上传项目时上传,所以如果这样的文件非常多,可能会一定程度上降低上传速度;粗略的认为正常网速下,100MB以下的音频资源带来的影响可忽略不计。
创作者中心
- 创作者中心查询客户端日志时,不再需要选择Canary环境还是创意工坊环境。
- 创作者中心新增游戏的开局次数漏斗,可以看到分平台启动、开局的漏斗数据。
- 创作者中心新增游戏的时长数据漏斗,可以看到分平台维度下开局的时长漏斗。正所谓『战报会骗人,但是战线不会』,当你发现大多数玩家在前10分钟就离开了游戏的时候,问题就变得非常明确了。
- 创作者中心支持查询列表型云变量并支持修改单个元素了。
- 创作者中心对于布尔值的云变量,不再需要手动填写『false和true』,而是改为手选枚举值;之前修改布尔值后变为字符串的问题得到了解决。
- 创作者中心支持开发者自主对Canary数据进行清档了。
- 创作者中心支持开发者上传视频并在审核后用于游戏内的视频组件了。
星火对战平台
- 优化了星火对战平台的搜索功能,现在可以搜到不限于当前页签的游戏了。
- 优化了普通创意工坊游戏竖屏时的加载过程。
- 对战平台增加了『月榜』功能,具体规则我们会在后续文档中更新。
预制功能
- 『预制功能-新手引导』的页面层级现在支持配置了。
- 『预制功能-商城』支持开发者自己配置单次购买的最大数量,不再限定为999。
- 『预制功能-商城』支持星火币兑换开发者的自定义代币的『首充多倍』和后续『额外赠送』功能。
- 添加了『预制功能-商城』后,可以使用语句获得玩家在本游戏中累计消费的星火币数量。
- 优化了『预制功能-局外任务』、『预制功能-成就』所共用的提交方式,由开发者决定更新的时机。
文档更新
我们大幅更新了界面编辑器的文档,分为“常用界面控件介绍”和“UI案例与最佳实践”两部分。前者介绍了矩形面板、按钮、文本框等常用界面控件,并附带了每个控件的基本使用方法,开发者可以举一反三,创造出更加进阶的用法;而后者列举了一些常见功能和案例,并给出目前最佳的解决方案,请开发者实现相关功能前务必熟读。
错误修复
- 修正了在部分特殊情况下,技能的长按出提示信息的有效点击范围非常小的问题。
- 修正了带品质表现的物品在离开视野并重新进入视野后可能会丢失品质表现的问题。
- 修复了替换技能后,默认AI仍会尝试使用原本被替换的旧技能的问题。
- 修复了触发编辑器左侧触发器列表进行搜索过滤时偶现的报错问题。
- 修复了在数据编辑器中将单位的AI配置成“空”时,AI报错的问题。
- 修复了添加预置库之后,自定义的可附加枚举生成失败的问题。
- 修复了数编可附加枚举设置了空字符串的TS脚本名称后会导致该枚举选项无法在触发器中被选取的问题。
- 修复了弹道命中后,反弹响应节点的坐标点对象不是场景点的问题。
- 修复了客户端技能的图标公式中,多段技能获取段数报错的问题。
- 修复了技能公式中在特定情况下获取效果节点为空的问题,现在可以获取正确的效果节点了。
- 修复了编辑器调试环境下打开抽奖界面报错的问题。
- 修复了开启开关技能后使用Buff禁用该技能,删除Buff后,该技能不会启用的问题。
- 修复了数据编辑器中将节点连线拖到窗口标题栏,该连线不会根据鼠标位置移动的问题。
- 修复了Buff的属性最大值限制在移除Buff后仍生效的问题。
- 修复了『使单位向目标单位进行追踪(跟随)运动』和『使单位向目标点进行直线运动』语句中,『碰撞单位』的回调函数参数错误的问题。
- 修复了打开项目后,导入模型发射器的模型,该模型不会复制到粒子目录的问题。
- 修复了客户端触发器中使用『获取矩形/扇形区域内的所有单位』语句时,提示索引为空的问题。
- 修复了移除单位后,该单位碰撞足印仍残留的问题。
- 修复了客户端触发编辑器中,不能在匿名函数内使用面向对象方式访问数编表成员的问题。
- 修复了触发编辑器中监听包含点的自定义事件时,点类型会变成未定义类型的问题。
- 修复了触发编辑器中无法在派生类的对象通过面向对象方式选取基类成员变量和方法的问题。
- 修复了触发编辑器中复制一个类后,新类构造函数的显示名不会自动变更的问题。
- 修复了设置一个单位属性的最大值时,该单位属性自动四舍五入的问题。
- 修复了通过『获取场景内整个区域』语句获得的区域中宽度和高度数值相反,导致矩形场景没法正确获得场景中所有单位的问题。
- 修复了界面编辑器粒子控件在暂停播放后可能会残留的问题。