跳到主要内容

2023年6月19日星火编辑器更新日志

优化编辑器功能:

调试用作弊码

为了方便用户在编辑器中的调试,我们为编辑器增加了一些默认的作弊码。这些作弊码只会在调试模式下生效。在编辑器调试模式下,用户可以在查看项目设置->信息列表中的作弊信息页面,并在“输入作弊码”输入框中输入作弊码。除了官方作弊码外,用户还可以通过触发器事件中的“玩家-输入作弊码”事件来实现自定义的作弊码功能。以下列出我们在这个版本中添加的官方作弊码列表:

God 格式:god {玩家号} {1/0 开关} 打开指定玩家的无敌状态。如god 1 1使玩家1无敌,god 1 0则关闭。 大括号代表可选参数。单输入god代表使得输入作弊码的玩家无敌,再次输入关闭。 无敌的定义:玩家单位造成10倍伤害,免疫任何伤害。 可以通过玩家是否开启无敌模式来判断玩家是否进入了无敌模式。

MakeUnit 缩写:mu (缩写的意思是mu可以替代makeunit,下同。) 格式:makeunit 单位id {数量} {所属玩家} 在主控单位的位置(或者如果拿不到主控单位的话,0, 0位置)创建属于指定玩家的指定类型单位。 不填数量和玩家代表给当前玩家创建1个。 大部分长的作弊码都有缩写,makeunit $$default_units_ts.unit.星火战士.root 1 1和mu $$default_units_ts.unit.星火战士.root 1 1效果一样,下同。

MakeItem 缩写:mi 格式:makeitem 物品id {数量} {叠加数量} 在当前玩家主控单位的位置(或者00位置,拿不到鼠标的话)创建属于指定类型指定数量指定叠加数的物品。不可叠加的物品叠加数量无效。

DamageTaken 缩写:dt 格式:damagedealt 玩家 倍率 设置指定玩家的受到伤害倍率。1代表100%,0代表不会受到任何伤害。

Cooldown 缩写:cd 格式:cooldown {玩家} {1/0 开关} 设置指定玩家是否忽略冷却。(冷却开始后立刻置0,公式不用管) 只输入cooldown就是开关自己的冷却。 可以通过玩家是否开启无限冷却模式来判断玩家是否进入了该模式。

Energy 格式energy {玩家} {1/0 开关} 玩家每次消耗技能资源以后立刻回满。 可以通过玩家是否开启无限能量模式来判断玩家是否进入了该模式。

Kill 缩写: k 需要有选中单位 杀死选中的单位。没有的话输出提示信息要求选中一个单位。

RemoveUnit 缩写:ru 需要有选中单位 删除选中的单位。没有的话输出提示信息要求选中一个单位。

DebugUnit 格式: DebugUnit {1/0 开关} {1/0 粘滞} 开启时,默认显示一个简单的单位属性框,遍历显示选中的单位身上所有的属性。没有单位选中时隐藏。 若为粘滞状态,则需要在输入的时候选中一个单位。此后一直追踪显示这个单位的状态,即使该单位不再被选中,或者选中了其它单位。 注意是服务端属性,下同。不受客户端视野影响。

DebugPlayer 格式: DebugPlayer {玩家号} {1/0 开关} 显示一个简单的panel,显示指定玩家的所有属性,有多个玩家时并排显示。 不输玩家号就是测试者。

DebugGame 格式:DebugGame {1/0} 显示简单的panel,显示所有游戏属性。

SetUnit 缩写 su 格式 setunit 属性名 属性值 {子属性类型} 需要选中单位。 设置选中单位的属性

SetPlayer 缩写:sp 格式:SetPlayer 属性名 属性值 {玩家号} 设置指定玩家的指定属性

SetGame 缩写:sg SetGame 属性名 属性值 设置指定的游戏属性

Speed 缩写 s Speed 游戏速度倍率 设置游戏的速度倍率,限制上限为10。

暂停所有单位逻辑

  • 星火编辑器拥有在服务端暂停游戏的功能,但用户在使用这个功能的时候遇到了一些边界问题。如,服务器在暂停期间无法执行脚本也无法对客户端发送消息,同时也无法进行等待逻辑,但用户却希望能服务器逻辑在暂停期间有更好的自由度。
  • 为此,我们在服务端触发器中增加了暂停所有单位和取消暂停所有单位的动作。暂停所有单位不会停止服务器的脚本逻辑,仅仅是停止了所有单位的逻辑更新。在此期间,被暂停的单位无法移动和使用技能,他们身上技能冷却和Buff时间也不会推进。但服务器却可以在这段时间内正常执行其它的触发器逻辑,比如修改被暂停单位的属性或是对它们造成伤害,对客户端发送自定义事件等等。
  • 除此之外,拥有无法被时停单位状态的单位暂停所有单位的情况下依然可以行动。但此时单位的行为会异于普通状态下的单位,我们不建议滥用这一设置。

触发编辑器的纯代码文件模式(试验性功能)

星火编辑器现在提供了在地图中编写纯TypeScrip代码和纯Lua代码的流程支持。该流程不但允许用户使用ts或者lua来编写游戏逻辑,也允许用户将ts/lua中定义的函数暴露到触发器图形界面中,以供图形界面调用。 详细教程可见【教程链接】:

如图:在可视化触发器中调用代码编写的函数

请注意使用纯代码模式编写游戏逻辑依然不是星火编辑器官方支持的逻辑编程方向。我们的官方支持人员不会对编写纯代码逻辑时遇到的编程范畴内的问题提供支持。

场景客户端缓存

  • 在一些特殊情况下,我们希望客户端跳转到一些临时场景时不会立即释放原场景(比如只是加载一个用来播放过场动画的场景)。或者进入某个练功房场景时的时候不释放大地图。这样,当临时场景退出时,客户端可以较快地加载原始场景,而不需要从头开始加载。
  • 在另一些情况下,我们会希望客户端在初始化时就顺便加载某个临时场景,因为我们在游戏中可能会需要频繁地加载这些临时场景。 为此我们在客户端添加了以下触发器动作:

添加场景缓存:需要填写一个场景名,场景名不是客户端当前的场景,客户端会先读取它并缓存它。如果是当前场景就不需要耗时,立刻将其放入缓存中。缓存中的场景在客户端发生场景切换时不会释放,当服务器要求客户端再次跳转到该场景时,客户端可以以较快地速度重建对应的场景,而不需要从头加载。

删除场景缓存:令客户端不再缓存指定的场景。

此外,我们还在客户端增加了以下客户端事件:

场景 - 请求切换时:当服务器要求客户端跳转场景时,客户端会先执行该事件再开始场景的加载与释放流程。这个事件会自带原始场景名和目标场景名参数。用户可以捕捉这个事件,赶在原始场景被释放掉时按需要将原始场景缓存下来。这个事件与我们原有的场景 - 加载完成时是对应的。只不过加载完成时发生在场景加载完成以后,此时原场景若没有事先缓存下来,可能就已经被释放了。

相关教程可以参考使用客户端缓存场景来快速跳转场景

场景对象(试验性功能)

  • 我们加入了场景对象的概念。现在服务端每个被加载的场景都会产生一个对应的场景对象。场景对象可用于管理该场景下所有的单位、区域、触发器和游戏表现。
  • 场景对象是我们今后将会进一步强化的游戏多场景支持功能和中途加入游戏功能的一部分。
  • 目前场景对象相关的API尚不完善。我们建议用户试验性地使用该类型相关的属性和方法。

单位行动路线AI的自定义

  • 令单位沿指定路线行动、令单位沿指定路线进攻、令单位组沿指定路线行动(保持队形)、令单位组沿指定路线行动(保持队形)这四个触发器动作现在经过了重构。今后在触发编辑器中选择的这些触发器动作将使用新版逻辑,但旧有触发器中这些动作的逻辑将保持不变。旧触发器可以通过重新选择这些动作来使用新版的行动逻辑。
  • 使用了新版本的行动路线动作后,用户将可以在数据编辑器的自定义AI设置->自定义AI样例(沿路线移动)中详细地调整和自定义单位的行动路线AI。

单位选择圈模式

  • 我们在客户端触发器中加入了启用/禁用选中指示器的触发器动作。单位选择指示器是一个默认关闭的功能,需要通过这个触发器来开启。
  • 在开始单位选择指示器功能后,鼠标/手势点击屏幕上的单位进行选中时,将会在单位脚底显示选中标记。默认情况下,玩家自身的单位会显示绿色选择圈,敌方单位会显示橙色选择圈,中立单位会显示白色选择圈,盟友单位会显示蓝色选择圈。
  • 每个单位脚底选择圈范围的大小受到单位数据的被搜索半径字段的影响。
  • 可以在数据编辑器->游戏机制设置->默认全局游戏机制配置中修改和配置不同状态下的单位选择圈表现。
  • 单位选择圈也能够帮助用户更好地使用我们新增的官方调试作弊码功能。

数据编辑器

技能数据现在拥有了显示冷却的标旗。不勾选该标旗的技能将不显示冷却。于此对应的,AI视为普攻标旗不再自动地隐藏技能的冷却。这一改动是为了能更好地将普攻配置和冷却显示配置解耦合。

触发编辑器

  • 我们对触发编辑器的整体界面进行了一次整改,现在用户进入触发编辑器后应该能注意到不少耳目一新的布局。特别值得注意的是,“显示详细设置”勾选项现在移动到了窗口的右上角。
  • 触发编辑器现在终于可以直接复制触发器文件夹了。
  • 我们增加了新版循环遍历语句的逻辑。数组、Map和简单表使用新版遍历语句进行遍历时将可以通过break语句跳出遍历。
  • 我们重构了替换技能相关的函数和数编节点,现在替换一个被动技能不会再导致原有被动技能的效果依然存留了。
  • 我们在客户端增加了淡入/淡出转场的API。该动作可以指定淡入淡出时间,也可以指定下一句动作是否等待淡入淡出执行完后才执行。此外,该函数还有一些可选参数,可以指定淡入淡出特效的颜色、透明度、曲线变换模式等等。
  • 我们在客户端增加了单位身上的所有物品和单位指定编号物品栏的所有物品函数。
  • 我们在服务端增加了单位组内的随机单位和单位组内的随机指定数量个单位函数。
  • 计时器现在可以进行暂停、修改和读取剩余时间、修改和读取逝去时间等操作。
  • 游戏属性现在可以通过服务端触发器修改和读取,也可以通过客户端触发器读取了。
  • Buff现在可以通过遍历其当前属性加成列表字段来遍历和获取它们当前所添加的所有属性值。
  • 我们进一步优化了多场景区域支持的一些痛点,现在触发器中可以正确地注册跨场景的区域进入和离开事件了。
  • 我们进一步优化了触发编辑器的代码生成逻辑,现在生成代码时更不容易导致脚本文件崩溃了。此外,也为更多情况下的代码错误提供了运行时错误提示支持。
  • 我们优化了TypeScript编辑器代码的编译时错误在编辑器内的显示方式。现在可以在项目设置->信息列表->编辑器中通过勾选和取消勾选ts错误提示来显示和隐藏ts编译时错误。

社区生态支持

  • 我们斥重金向知名音频供应商EpicStockMedia采购了3000个音效,这些音效可以供所有星火编辑器的开发者在星火编辑器制作的游戏中免费使用,且不会因为未来我们可能与之结束合作而失去授权。现在可以在『我的资源-声音-Epicstock』中找到这些音效。
  • 为《通天路》制作了游戏的主视觉与五图
  • 新制作了一批仙侠风格的技能icon以及一些矢量风格的技能、状态icon
  • 创作者中心的报错支持查看该局游戏的完整日志了

错误修复

  • 修复了本地化文本在编辑器信息框输出时会多带一个true字样的问题。
  • 修复了自动拾取的物品创建在非默认场景时无法被自动拾取的问题。
  • 修复了一些云变量货币查询相关的问题。
  • 修复了客户端物品有时候拿不到客户端单位的问题
  • 修复了在关闭官方物品提示UI的情况下拖动物品会留下错误的物品品质外框图片的问题。
  • 修复了“点击物品栏物品”事件的一些问题。
  • 修复了物品的词缀附加描述过长时出现的显示问题。
  • 修复了自定义物品属性需求没有正常地生成到物品信息表的问题。
  • 修复了自带血条的物品在被拾取后血条位置显示出错的问题。
  • 修复了天赋配置中,是否可以回退的标旗无效的问题。
  • 修复了部分早期制作的模型存在骨骼异常的问题。
  • 修复了单位升级时按等级变更属性配置异常的问题。
  • 修复了物品栏格子编号类型异常的问题。
  • 修复了部分情况下导入音频后播放报错的问题。
  • 修复了通过数编-创建单位节点创建的单位粒子表现异常的问题。
  • 修复了A卡无法正常预览粒子的问题。

游戏相关更新:

设置中增加『下局开启诊断模式』的选项,会在下一局记录更丰富的日志,用于排查问题