跳到主要内容

2025 年 2 月 13 日更新日志【12 版本】

提示

星火编辑器发布了新的编辑器版本:12。
除部分严重 BUG 修复会覆盖旧版本,以下新功能均在编辑器版本 12 中生效。
开发者可以在编辑器顶部菜单-编辑器版本中进行版本切换。

数编快速保存

星火编辑器在开发较大项目时的保存速度一直是一大痛点,星火 2.0 将使用全新的框架来保存数编和触发器的代码,以提高全局保存速度,但对于使用旧有文件存储框架的 1.0 版本,我们也仍然在努力加快用户的调试和保存速度。

在 12 版本中,我们在文件菜单下加入了「保存数编」功能。

该指令能以「快速」模式保存数编内容,但会跳过一些不常用的检测和流程。

具体保存时间视乎具体项目会有所变化,但基本测试表明,在保存数编内容较大的项目时,这一功能可使保存时间加快 7-10 倍。

需要注意的是,目前的快速保存机制跳过了一些步骤和流程,因此在一些特定条件下会有缺陷,因此星火编辑器目前暂未以该保存模式替代默认的保存命令。其中尤其需要注意的要点是:

数编快速模式指令会跳过所有对数编公式的改动编译,因此使用快速保存模式的用户需要对此有所预期——修改普通节点属性后点击数编快速保存命令并进行调试后,普通属性会正常生效,但节点公式的改动不会产生影响。

若想要测试公式改动,用户依然需要使用默认的保存命令来进行完整保存。

此外,需要注意的是,数编快速保存功能尽管不会对公式改动进行编译,但不代表用户对数编的改动不会被保存到项目中,快速保存功能跳过的仅仅是从公式带脚本代码的生成过程而已。因此对项目进行了快速保存后直接关闭项目的用户无需担心自己对公式的修改会在下次打开项目时丢失。

此外,界面编辑器控件的绑定事件底层也是数编公式,所以对于界编控件事件的修改,也无法通过「保存数编功能」进行,需要进行正常的保存后方可生效。

遍历所有的可附加枚举

星火编辑器的一个特色就是开发者可以在数编中增加自定义的伤害类型、单位类型、单位属性、验证器代码……等等。但有时候开发者会想要遍历所有这些他们自定义的可附加枚举,这一行为在过去的星火编辑器中虽然是可行的,但实现过程却非常复杂,许多开发者不得不手动记录下所有自己添加的可附加枚举。

为了方便开发者,在 12 版本中,我们包装了对数编中所有可附加枚举的遍历方法。现在服务端和客户端触发器都有了 「获取指定类型的所有可附加枚举」和「获取指定类型的所有可附加列表 Key」两种函数。

这两个函数会返回对应类型的 Map 字典集合。遍历集合就能获得对应的可附加枚举的所有内容,目前的可附加枚举类型包括:

  • 单位属性(字符串/数值)
  • 单位属性子类型
  • 单位状态标记
  • 游戏属性
  • 游戏配置
  • 玩家属性
  • 验证器代码
  • 技能分类
  • Buff 分类
  • 能量类型
  • 血条类型

自定义物品栏 UI 组件的优化

在听取了用户的反馈后,我们对自动以物品栏控件相关的功能进行了进一步的优化。

自从星火编辑器开放动态添加物品栏格子的功能后,用户就一直希望自定义物品栏格子的控件也能支持动态添加的物品栏格子。

现在用户可以通过动态创建的「自定义物品栏格子」控件来绑定动态添加给物品栏的格子。

此外,我们观察到新人用户在使用自定义物品栏组件来绑定物品栏时,经常会忘记将数编中对应的物品栏的显示位置设置为自定义显示位置,导致物品栏无法正确显示却没有任何提示的问题。为此,今后用户在使用自定义物品栏控件绑定类型为自定义位置 G 和 H 以外的物品栏时,将在信息面板收到一条警告信息,告知用户使用了错误的配置。

云变量货币物品的使用优化

一个主动使用的物品一旦被设置为云变量货币物品,那么它在被绑定到指定玩家前是无法被正常使用的,但在过去,玩家点击此类物品不会有任何提示,让用户难以查清物品无法被使用的理由。

为此,我们加入了更多调试信息,当这类情况发生时,用户可以在服务端信息列表中明确看到错误信息:「云变量货币物品未绑定用户,使用失败」。

此外,在过去,为了提醒用户如何正确修改云变量货币的堆叠数量,我们在设置物品堆叠数量函数中加入了警告信息,当用户尝试使用该动作修改货币型云变量物品的堆叠数量时,会显示警告信息来告知用户正确的操作方法,即使用「消耗云变量货币物品」动作来修改物品的使用次数。但这一警告信息在玩家通过点击物品栏 UI 正常使用物品时也会出现,这可能令部分用户产生了误解,因为对于已经绑定了玩家的货币型云变量物品,用户通过物品栏 UI 来使用物品实际上已经走了「消耗云变量货币物品」的路径,因此不需要用户再进一步进行处理。

为此,我们优化了提示路径,现在玩家通过点击 UI 来使用云变量货币物品时,该警告将不再出现。

技能摇杆组件的优化

当用户将技能摇杆与非主控单位绑定时,现在技能指示器将优先显示在被绑定单位身上而非主控单位身上。

连续施法『防止鞭尸』逻辑的进一步优化

星火编辑器在 11 版本中对连续施法逻辑进行了一定的优化,避免连续施法在击杀目标单位后仍然一直对目标单位的尸体进行『鞭尸』。

该功能加入以来,运作符合预期。 但在收集了用户反馈以后,我们注意到部分用户希望使用连续施法机制来实现这样的效果:

单位平时不会使用技能,但用户在第一次点击技能后,单位会开始连续使用这个技能,并且在击杀第一个目标后自动寻找附近的其它目标进行攻击。

为此,我们对连续施法的『防止鞭尸』逻辑进行了这样的改动,如果用户在技能数编表中勾选了「连续施法使用智能施法搜敌逻辑」,则『防止鞭尸』逻辑不会阻止单位寻找其他目标进行攻击。而只有在未勾选「连续施法使用智能施法搜敌逻辑」时,连续施法才会在最初的目标单位被击杀后自动停止。

点的地形碰撞标记集合

在过去,触发器仅能判断一个指定点是否存在碰撞,却无法精确判定改点碰撞的具体属性:如是完全禁止通行还是仅仅禁止建造建筑或是禁止行走,令一些想要构造自定义建造系统的用户感到了困扰。

在 12 版本中我们在服务端/客户端触发器增加了新的函数「获取场景点的碰撞标记集合」,用户可以指定任意一场景点,该函数将返回一个集合,包含了该点所拥有的所有碰撞属性。

该集合可以通过「遍历碰撞标记集合」面向过程方法进行遍历,获取每一个碰撞标记。

目前点的碰撞标记共有 11 种,但主要在使用的只有「不可建造」与「不可行走」两种标记。

碰撞标记集合还拥有「是否包含」方法来直接判断一个点的碰撞标记集合中是否包含指定的标记。

与此同时,考虑到用户构造自定义建造系统时可能出现的具体需求,客户端版本的「获取场景点的碰撞标记集合」函数还拥有一个额外的参数,允许用户决定是查询该点在地编中的默认碰撞标记还是包含该点上可能已经存在的建筑单位足印带来的额外碰撞标记。

触发器带方向的矩形单位搜索

在过去,触发器和数编都拥有获取矩形、扇形、圆形范围内单位的方法。但此前触发器只能获取两边与 xy 轴平行的矩形中的所有单位,而数编的直线搜索可以是任意朝向的矩形,这导致触发器与数编的功能不对应了。 为此,在 12 版本中,我们在服务端/客户端触发器增加了获取带方向的矩形区域内所有单位的面向对象方法,让用户可以更自由地自定义技能指示器和矩形单位搜索。 在服务端,该方法位于场景对象之下,名为”获取指定方向矩形区域内的所有单位”。在客户端,这是一个名为“获取矩形区域内的所有单位”的面向过程函数。

客户端触发器 Buff 相关内容优化

在过去,客户端事件中与 buff 获取与丢失相关的事件有“单位获得 Buff”、“单位失去 Buff”、“Buff 获得”、与“Buff 失去”四种,分别用于注册特定单位和特定 Buff 的 Buff 获得与丢失事件。但实际只有单位版本事件有效,Buff 版本的事件没有效果。我们注意到了这个问题后,在 12 版本中修复了 Buff 版本的这两个事件。 此外,现在客户端 Buff 对象可以通过”获取层数”方法来直接获取层数,无需通过服务端转发。

追踪弹道的最大距离限制

现在数编中的“发射投射物节点”与“目标移动器节点”在目标为单位目标时,不再有追踪距离上限。在过去,所有的追踪弹道会在飞行距离达到原始目标距离的两倍时自动停止,这一设置原本是为了减少场景中出现大量不断在追踪目标的弹道而进行的优化,但再过去这一逻辑给部分用户带来了困惑,因此在 12 版本这一追踪距离限制已经被去除。

单位移除事件类型参数

现在单位移除事件增加了“移除类型”这一参数,可以从中获取到单位被移除的原因。“移除类型”是一个预设值,可能的值为:

  • 正常死亡 - 因为单位死亡且经过了尸体保留时间后而导致的自动移除。弹道单位和阻挡单位会在死亡后立即被自动移除。
  • 脚本调用 - 因为触发器和脚本调用单位移除而导致的移除。
  • 场景关闭 - 因为场景关闭而导致的场景中的单位的批量移除。
  • 游戏关闭 - 因为游戏关闭而导致的所有单位移除。(触发器执行环境的生命周期中基本无法捕捉到)

触发编辑器

现在 for 循环允许负数的步长了,最终值可以小于初始值。(过去只能是正数)

隐藏了没有实际作用的“单位即将拾取物品”事件,该事件是意外被放出的。

我们进一步优化了沿路线移动/进攻动作的 AI,使得他们的路线选择更加合理。

我们优化了在触发编辑器中批量复制局部变量和语句时,如果被粘贴的地方缺少特定的局部变量,会自动创建变量但会使被复制的语句顺序被打乱的问题。今后复制行为依然会自动创建缺失的局部变量,但原有语句间的相对顺序将保持原样。

我们优化了单位和物品数组在客户端和服务端之间的序列化逻辑,在过去,如果单位/物品数组存在已被删除的单位/物品成员,则该数组是无法正确在服务器和客户端之间传递的,12 版本优化了这一逻辑,使得单位和物品数组的事件转发不会因为存在被无效物品/单位而失败。

「物品-云变量还原时」事件现在有了「触发事件的·绑定单位」参数,可以获取云变量物品的绑定单位。

此外,我们为客户端触发器中的一些函数和方法参数增加了更多默认值。

现在「调试-指定模式调试」在编辑器环境下也可以通过触发语句「获取调试模式」来获得输入的模式 Key 了,之前这一语句只有在实机环境下方可生效。

地形编辑器

12 版本中优化了地编的一系列崩溃问题,并在一些关键节点增加了更多错误提示。比如,当项目丢失光照氛围文件时,尝试新建场景将会提示光照氛围丢失,而不是点击创建之后没有任何反应。当项目缺少场景文件数据时,尝试打开场景会提示场景数据丢失,而不是使编辑器崩溃。

在过去,由于地形编辑器的菜单栏位于标题栏上,用户需要点击标题栏的空白部分才能拖动地编窗口。但我们注意到部分分辨率较低的用户显示器上,菜单文字会占满整个标题栏,对窗口的拖拽带来了麻烦。为此,我们修改了菜单栏的拖拽逻辑,用户即使按住了菜单栏的文字部分依然可以对窗口进行拖拽,同时也不影响菜单栏的下拉展开功能。

界面编辑器

12 版本优化了 UI 控件的有效性判定逻辑。当控件因为父控件或祖先控件被删除而消失后,对该控件进行有效性判定时,会考虑到祖先控件的情况,而将自己标注为已经失效。(在过去,对这类控件进行有效性判定将返回真)

数编技能样例

我们对数编中的眩晕 Buff 样例进行了优化,使其更符合现今星火编辑器版本的最佳实践,并使其能在被附加时正确打断并停止被眩晕的单位当前的行动,而非仅仅是禁止单位在被附加该 Buff 后开始的移动。

英文与繁体中文 Windows 操作系统支持

我们在用户中收集到了一些特殊案例,使用一些特定版本 Windows10 和 Windows11,且系统语言为英文或者繁体中文的操作系统中可能出现不兼容问题而导致编辑器无法正常运行。经过星火程序员的努力,以及部分使用英文操作系统的用户的自愿协助,12 版本的星火编辑器已能正确兼容这些特定版本的操作系统。

创作者中心

创作者中心支持开发者自主停用装备局了。

创作者中心的邮件支持一键取消了。

其他编辑器优化

现在调试时信息面板默认会出现在游戏视图左下角而非游戏实际尺寸的左下角,竖屏游戏不会在每次调试时被遮挡了。

现在对于非首次打开项目且默认不打开场景的状态,增加了更清晰都提示。

回响计划上线准备

为回响计划 MOD 增加了适配竖屏样式的加载页面。

优化了回响计划、回响计划 MOD 登录页面的 UI 和交互。

「局外任务」「局内任务」「首充礼包」「限时特惠」已经支持回响的 UI 风格。

创作者中心补充了回响计划 MOD 上线必须的能力。

错误修复

  • 修复了在地编场景中删除元素偶现的编辑器崩溃问题。
  • 修复了部分操作系统中,触发编辑器和地编布局无法正常显示的问题。
  • 修复了从地编创造拖放单位和素材到场景中偶现的元素被创建在左下角(0, 0)点的问题。
  • 修复了在场景中拖拽单位无法将单位移动到地图外,放置单位时却可以的问题。
  • 修复了在特定版特定语种操作系统环境下,编辑器无法正常运行的问题。
  • 触发器断点调试功能此前在新菜单界面发布时错误地被隐藏了,现已被重新开放。
  • 修复了数编效果节点在创建镜像单位时,如果目标单位所属的玩家缺少主控单位,创建镜像会失败的问题。
  • 修复了在特定场合下,尝试给 UI 控件添加事件会将该事件会绑定给其它所有同类 UI 的问题。
  • 修复了服务端隐藏血条触发器没有正确隐藏血条的问题。
  • 修复了拥有交互行为的单位在切换 UI 后回来时,交互界面会丢失的问题。
  • 修复了在游戏中右键点击地图时偶现的客户端脚本报错。
  • 修复了在触发器自定义函数中配置剩余参数(即可变参数)时,引用该函数的调用方显示的参数类型错误的问题。
  • 修复了多人调试窗口第一次打开时调试按钮始终为灰色无法点击的问题。
  • 修复了新的显示对话框自定义动作所创建的自定义对话框在点 X 关闭窗口时不会引发窗口关闭时事件的错误。
  • 修复了客户端触发器所属场景无法限制为初始地图的问题。
  • 修复了数编创建单位节点中创建方案为“使用效果树中单位的类型”时,特定配置下无法正确创建单位的问题。
  • 修复了调试模式中调试指定模式时获取模式的函数无效的问题。
  • 修复了「局内任务」预制功能库在主控单位被置空后出现的报错。
  • 修复了「天赋」预制功能在有多种资源货币时,切换分页未更新货币资源的问题。
  • 修复了星火对战平台重连时环境判断与预期不符的问题。
  • 修复了星火对战平台在游戏局内退出登录,会异常触发临时账号的问题。