跳到主要内容

2024年1月10日星更新日志【2024.01版本】

物品栏格子的动态添加和锁定

在过去,每个物品栏的格子并非独立的数编节点,而是物品栏节点的子属性。但为了给物品栏系统添加新的功能,我们也为物品栏格子增加了独立的节点类型。

  • 点击数据编辑器左侧列表左上角的齿轮可以勾选并显示独立物品栏格子数编类型。用户将可以在这里添加和配置独立于物品栏之外的的物品栏格子。
  • 此后,使用全新的触发器动作添加物品栏格子并指定一个物品栏格子配置,用户将可在游戏运行中途为单位身上的指定物品栏动态地添加更多的物品栏格子。
  • 此外,物品栏格子现在也支持锁定和解锁操作。被锁定的物品栏格子将无法存放物品,若锁定时其中已经存在物品,则所存放的物品也会被强制移出格子。用户也可以在需要的时候使用解锁物品栏格子动作解锁被锁定的物品栏格子。

单位创建信息效果节点

在某些情况下,用户通过触发器拿到一个召唤单位,或许会想要知道该单位是由哪个单位所召唤出来的,甚至希望将召唤单位的属性与召唤者,甚至召唤该单位的Buff、物品的属性挂钩。

  • 为此,我们在触发编辑器中的单位类中增加了获取创建信息效果节点方法。调用该方法后会返回一个特殊的效果节点,该效果节点与普通的效果节点类似,可以获取效果节点的施法者、引发技能、引发物品、引发Buff和父效果节点。此时,若单位是由其他单位召唤得来,获取效果节点的施法者将可获得当前单位的召唤者,而获取效果节点的引发技能、引发物品和引发Buff将可获得召唤了该单位的技能、物品和/或Buff(如果有的话)。获取创建效果信息节点的父节点将等同于获取创建了该单位的效果节点(通常是一个创建单位效果节点)。
  • 若指定单位并非是由任何单位召唤出来的,则其创建信息效果节点的施法者会是该单位自己。

单位碰撞类型扩展

在过去,单位节点的碰撞类型字段只有两种选择:英雄碰撞和非英雄碰撞。相同碰撞类型的单位会互相阻挡,而不同碰撞类型的单位可以互相穿越。这也是为什么默认情况下你的英雄可以从重重怪物的包围中脱身的原因。 但随着星火编辑器的发展,两种碰撞类型已经难以满足日渐复杂的用户需求。因此我们将这个字段扩展成了8个复选框。其中英雄和非英雄分别是其中两个复选框,在此基础上,还增加了6个额外的自定义碰撞复选框。

而新的单位碰撞类型规则如下:当两个单位拥有重复的碰撞类型选项时,这两个单位会互相阻挡。而当两个单位各自勾选的碰撞没有重复时,这两个单位就可以互相穿越。 在这种机制下,用户将可以用这8个复选框制作出最多256种组合的碰撞方式,进一步强化了碰撞类型的自由度。

客户端单位回收优化

本段内容技术术语可能较多,读者可酌情观看: 在绝大多数情况下,星火编辑器的用户不用担心垃圾回收和内存泄漏问题。星火编辑器内部能帮助用户处理好一切。 但在一些特殊情况下,这些优化可能会引发一些令用户意外的后果。其中客户端单位的资源回收就是最典型的例子。 星火编辑器的用户可能习惯于使用“在对象上保存任意值”动作的便利性。但当把这一动作用在客户端单位上时,却有一些特别需要注意的地方,这里涉及到星火编辑器引擎的一些内部机制——

对于每个客户端来说,其实各个客户端并无法知道服务器上所有单位的状况。举例而言,当一个单位脱离了当前客户端玩家的视野范围(若视野迷雾机制被打开),或者跳转到了当前客户端玩家看不到的场景中时,对于客户端来说,该单位的信息将不再可知。即使该单位在迷雾中或者其它场景中已经被服务器销毁,客户端也是无法得知这一信息的(也并不应该得知,这是星火编辑器反作弊的机制之一)。

在这类情况下,客户端无法预知该单位是否还会回归,因此如何处理用户保存在该单位身上的任意值便成为了一个难题。显然,如果客户端无限地保存这些数据,对于那类无限刷怪类型的游戏将是很不利的。在整场游戏过程中,服务器可能会创建数万的怪物,它们不停地刷新并死亡。如果用户在这些怪物身上都保存了任意值,而这些任意值都没有被回收,造成的内存泄漏将是十分可怕的。

为此,星火编辑器的客户端单位有这样一个优化:当一个客户端单位离开当前客户端的可知范围一定时间后(默认为20秒),其携带的所有信息将被销毁。当该单位再次出现在客户端视野中时,客户端将通过服务器所提供的信息重建该单位。显而易见,此时,如果用户曾经在该单位的客户端保存过任意值,这些值都已经被清空。

如果用户希望无限期地某些客户端单位身上的任意值,也有多种解决方案可以选择。其中最佳实践为将想要保存的客户端单位存储在一个全局变量数组或者Map中,在这种情况下,即使单位脱离了可见范围,其信息也不会被自动释放。此外,用户也可以选择将一些必要的数据保存在该单位的服务端单位属性中,在这种情况下,客户端每次重建该单位时都会同步到这些属性。

除开这些途径外,我们还为用户提供了更加简单的解决方案——某些用户的项目可能全程出现的单位数量十分稀少,即使全部不自动回收也不会造成什么问题,又或者希望设置更长或更短的客户端单位回收时间。对于这样的用户,我们开放了客户端单位回收时间自定义功能。

用户将可以通过点击数据编辑器左侧列表左上角的齿轮,勾选游戏机制设置来显示默认游戏机制设置。在默认游戏机制节点中,我们增加了客户端单位刷新时间字段。用户可以随意地增加或者减少客户端单位的回收时间,此外,若在此填入负值,则代表客户端单位上的自定义数据永远不会被回收,直到当前游戏局结束。

多人协作优化

今后,新建项目的模版将会带上默认的.gitignore文件,方便使用git来进行版本控制的用户使用。该文件会自动忽略所有会在编辑器保存时自动生成的文件,方便用户挑选出所有必要的配置文件来进行提交。

此外,需要注意的是,由于编辑器采用了快速保存机制,因此从git上拉下来的新配置文件默认不会触发编辑器的全新保存。这会导致你的触发器尽管拉到了最新改动,但保存时生成的脚本却不一定是最新的(除非用户手动修改了数编数据和触发器数据并进行保存)。为了简化这一操作,我们还在所有新建的项目文件夹中增加了一个update_file.bat文件,只要执行该批处理文件,它就会自动清除项目文件夹中的保存时间戳,保证当用户下一次点击保存或调试按钮时,生成的数编数据和脚本总是最新的。

地形编辑器

  • 在地形编辑器中选中一个或多个单位后,现在可以通过按下数字键0-9来快速改变所选单位所属的玩家号。

  • 地形编辑器自动生成小地图时,现在支持生成长宽不一致的长方形场景地图正确生成小地图了。旧有的长方形场景地图项目需要重新填写小地图尺寸并点击重新生成按钮才能生成正确的小地图。

技能样例

默认技能样例中增加了一个可以通过蓄力来增大碰撞范围的火球术技能。施法范围光标也会随着蓄力的时间而增大。

数据编辑器

  • 在技能的AI配置节点加入了一个AI忽略该技能的选项。AI不会主动使用勾选了该选项的技能。适合用来制作需要通过脚本精密控制的Boss技能。
  • 技能配置中的是否显示冷却现在也可以管理技能的充能冷却显示了。
  • 批量导入导出CSV表格时支持utf-8和GB格式了。
  • 技能配置中的显示施法进度标旗现在对无限蓄力技能也有效了。
  • 在模型节点、粒子节点进行资源选择时,将会对非此类的资源进行过滤。

触发编辑器

  • 我们优化了名字型云变量在触发器中的悬停提示和描述,帮助用户更好地理解名字型云变量的用途和用法。
  • 服务器/客户端触发器现在有了相同的乘方、开方、次幂函数。
  • 服务器/客户端触发器现在有了相同的字符串格式化函数。
  • 我们为更多未归类的触发器动作、事件和函数添加了分类。
  • 设置镜头属性动作改名为设置活动镜头属性以明确其用途。镜头属性可选枚举里增加了Z偏移选项。
  • 追加云变量操作限制,默认状态下单局游戏每60秒的写入数据不得超过48MB(约等于2500万个中文字符,约等于36本《西游记》)

界面编辑器

在界面编辑器中绑定单位属性时,若填写的属性显示格式错误,将不会再引发运行时脚本崩溃。在新版本中,遇到此类错误时,UI控件将显示原始的属性格式字符串,并在客户端日志中显示一段错误信息,并正常继续执行UI脚本代码和触发器。

调试作弊码

现在调试作弊码不再区分大小写,例如:makeunit、MakeUnit和makeUNIT将起到完全相同的作用。

预制功能

商城中已经达到限购次数的商品将会自动移动到商品队列尾部。

其他编辑器优化

  • 启动编辑器、切换编辑器版本不再创建多版本的快捷方式。
  • 编辑器内调试时,将在调试信息中打印出当前项目使用的所有的依赖库的版本号。

创作者中心

  • 创作者中心增加『协作者』功能,方便多个开发者之间共享项目的美术资源。需要注意的是共享范围仅限于项目引用的资源,具体的文档可以参考协作者相关文档
  • 创作者中心云变量变更记录中增加了『value_size』字段,方便开发者判断存档的大小。

星火游戏优化

  • 对游戏启动、加载过程中的各环节进行了优化,减少了UI的闪动、提升了加载速度。
  • 优化了游戏加载过程中的视觉表现,提供更清晰的下载进度。
  • 手机端游戏设置中新增『性能信息数据』开关,打开后可以看到大部分编辑器调试时显示的调试信息,辅助开发者判断手机端表现异常问题。

新的教程文档

  • 我们增加了一些文档,介绍单位属性、技能属性、玩家属性的作用和它们的自定义方式。
  • 我们增加了处理玩家断线重连时恢复UI的最佳实践的文档。
  • 我们增加了当玩家从一局游戏中断线并加入另一局游戏时如何清算并处理云变量的文档。

错误修复

  • 修复了自定义飘字中单个+号无法正常显示的问题。
  • 修复了向背包中添加一定数量的堆叠物品时,可能会出现溢出的堆叠数量物品消失的问题。
  • 现在尝试用云变量存储带小数的数字积分时,会正常显示错误信息而非沉默。
  • 修复了主控单位没有任何技能时客户端的报错问题。
  • 修复了在组队状态掉线后,玩家实际被踢出队伍,但是状态未更新的问题。
  • 修复了开关技能必须按打开顺序关闭的问题。
  • 修复了竖屏游戏断线重连后变成横屏的问题。
  • 修复了界面编辑器中修改Page名称后组件库内未同步的问题。
  • 修复了调试时偶现的技能摇杆UI变黑的问题。
  • 修复了在数据编辑器中查看默认的多段技能动画配置时,多段技能动画配置会莫名其妙地增加的问题。
  • 修复了组合动画功能中的多项其它错误。
  • 修复了局内聊天面板在界面编辑器中修改布局不生效的问题。
  • 修复了数据编辑器中单位目标技能没有显示施法范围字段的问题。
  • 修复了服务端获得单位身上所有指定Id的Buff实例的触发器函数的问题。
  • 修复了在效果节点中修改技能冷却时间可能会导致技能冷却时间停住不动的问题。
  • 修复了在触发编辑器中新建数编节点类型字段时,部分字段在触发器中使用时会显示为nil的问题。
  • 修复了星火游戏盒偶现的因切换分辨率导致的点击区域异常的问题。
  • 修复了局内聊天面板在界面编辑器中修改后不生效的问题。