2024年9月9日更新日志【2024.09版本】
星火编辑器发布了新的编辑器版本: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。
-
若选择继承,则其计算逻辑为
-
当前节点的继承缩放=宿主的普通缩放*宿主的继承缩放(如果宿主也有宿主)。
绑点骨骼缩放
-
基于自身所绑定的绑点的骨骼动画的缩放,同样是独立乘区。