1.15

来自RustedWarfare Wiki

1.15版本的更新主要以Mod特性为主,新单位添加较少。

1.15
测试版更新
当前类型 测试版
首次更新时间 2021-07-15 10:27
最后更新时间 2022-08-26 13:36
内部迭代版本号 1.15p10 173
1.15p9 172
1.15p8 170
1.15p7b 169
1.15p7 168
1.15p6 167
1.15p5 165
1.15p4 160
1.15p3 159
1.15p2 158
已发布平台 Google Play、App Store、Steam

Google文档上查看官方发布的更新日志 (英文)

1.15p1

1.15p1是Rusted Warfare在1.15版本中的首次公开更新,仅支持PC版本

1.15p1更新日志

Rusted Warfare Beta - v1.15p1

• 在单人游戏遭遇战的高级选项和多人游戏中, 可以单独为某个玩家设置游戏选项, 例如:

    • 现在可以为每个AI玩家设置不同的难度等级。

    • 不同的玩家可以有不同的初始单位, 可以用来选择模组中的派系。

    • 可以为每个玩家分别覆盖不同的单位颜色。

   

• 为Android版添加"保存到内部存储"的选项, 让存档/模组/自定义地图功能可以在不授予存储权限的情况下正常运作。请注意, 在卸载时游戏时内部应用存储会被Android系统一并删除。

• 可以从模组设置界面中删除或导出模组。

• 可以从自定义地图界面导入新地图。

• 电脑版:添加实验性的-teamshaders命令开关。开启后将使用着色器为队伍颜色着色, 减少含大图片的模组的内存占用以及第一次应用着色时的卡顿。


• 添加类似于TA(横扫千军)、C&C(命令与征服)中的可编写模组的流式资源系统。

    • [core]streamingCost

       • 类似于价格, 但该单位在建造队列中或正在建造时需要消耗资金。若在建造该单位时资源耗尽, 则建造过程或建造队列将暂停。

    • [action]streamingCost

       • 类似于价格, 但该动作在队列中时需要消耗资金, 若在该动作在队列时资源耗尽, 排队将暂停。Flags可以用于暂停或解除触发器的暂停。类似于价格, 但在这个单位在建造队列或建造时支付费用。 如果在建造过程中资源耗尽, 建造或排队将暂停。标志可以用来暂停和解除触发器的暂停。

    • [core]switchPriceWithStreamingCost:boolean/[action]switchPriceWithStreamingCost:boolean

       • 快捷方式, 将streamingCost设置为price的值并清除价格。

       • 在all-units.template中增加[core]switchPriceWithStreamingCost, 以快速将mod切换到流式资源。

       

• 大幅修改动态逻辑布尔值, 新增动态数字、单位、字符串类型

    • 与其使用"autoTrigger: if self.energy(greaterThan=100)", 不如用"autoTrigger: if self.energy > 100"

   

• 逻辑布尔值与数字的数学运算: - + * /

    • 示例:"autoTrigger: if 2*self.energy + parent.energy-10 > 50"

   

• 动态文本, 例如: [action]text: 队伍:%{ self.teamId } 还剩 %{ parent.resource('gold') } 颗黄金。

    • 动态文本支持已经被添加到[action]text, [action]description, [action]setUnitMemory, [action]showMessageToPlayer, [action]showMessageToAllPlayers, [action]showMessageToAllEnemyPlayers, [action]showQuickWarLogToPlayer, [action]showQuickWarLogToAllPlayers, [action]debugMessagee中。

   

• 增加了对多行的支持, 可以在ini的任何key上使用3个引号来开始和结束。示例:

copyFrom:""" ROOT:a.ini, ROOT:b.ini, ROOT:c.ini """

• 添加 [attack]shootDelayMultiplier, 默认为1

• 添加 [action]setUnitStats, 允许动态地改变一些选定的字段而无需转换。 支持=/+=/-=,支持动态数字或逻辑. 可修改的字段有:maxHp, hp, maxShield, shield, shieldRegen, maxEnergy, energy, armour, mass, shootDelayMultiplier, moveSpeed, maxAttackRange.。示例: setUnitStats: maxHp+=self.energy+100, hp+=50, shieldRegen=0.5

• 添加 [action]resetUnitStats (布尔值)

• 添加 [action]convertTo_keepCurrentFields - 转换时不要更改这些字段, 配合setUnitStats食用更佳 (允许的字段: maxHp, maxShield, shieldRegen, maxEnergy, armour, mass, shootDelayMultiplier, moveSpeed, maxAttackRange.)

• 添加 [action]whenBuilding_temporarilyConvertTo_keepFields - 使用whenBuilding_temporarilyConvertTo或whenBuilding_temporarilyConvertFrom时请勿更改这些字段,配合setUnitStats食用更佳。

• 修复了whenBuilding_temporarilyConvertTo在单位类型之间闪烁的问题。

• 修复了沙盒模式中重载单位时临时标签被重置的问题。

• 修复了沙盒模式所有标签栏都会显示触发器调试的问题。


• 添加了[core]defineUnitMemory

    • 可为自定义存储给每个单位创建独一无二的变量。

       • 示例1:

       [core]defineUnitMemory: boolean nukeActive, boolean laserReady, float experience, unit nextTarget, unit homeBase, string customText

       • 示例2:

[action]setUnitMemory: """ customText=memory.customText+'hello', nukeActive=true。 experience=experience+attacking.hp, nextTarget=self.attacking.nearestUnit(withinRange=300, withTag='x', relation='enemy') """

• 新的逻辑布尔函数:readUnitMemory(name:string, type:string{boolean,unit,float,string}, [default])

    • 示例:parent.readUnitMemory('nukeCountdown', type='float') .如果该单位的存储不存在该数据或保存的数据类型是错误的, 则使用默认值。

   

• 新增逻辑布尔函数:memory(name), 它是读取当前defineUnitMemory类型的单位的快捷方式。

• 修复同一张图片使用不同模式时teamColoringMode的问题。

• 新的资源快捷方式。示例:self.resource.credits和self.resource('credits')


• 新增逻辑布尔/数字/单位/字符串函数

    • self.maxHp()

    • self.teamId() - 返回当前单位的队伍id。在单位和一些标记物上可用。 //译者注:原文疑似有误,此处已纠正

    • self.x() - 返回地图上的x坐标值。在单位和标记物上可用。

    • self.y() - 返回地图上的y坐标值。在单位和标记物上可用。

    • self.z() - 返回地图上的z坐标值。在单位和标记物上可用。

    • self.dir() - 返回该单位的朝向。在单位和标记上可用。

    • self.priceCredits() - 返回该单位"price"的"creidts",即原版资金。

    • distance(x1,y1,x2,y2) - 计算两点之间的距离。比distanceSquared慢。

    • distanceSquared(x1,y1,x2,y2) - 更快地计算两点之间的距离, 但结果是平方。 //译者注:更适用于比较两点距离

    • distanceBetween(unit1, unit2) - 示例: distanceBetween(self, activeWaypointTarget) < 100

    • distanceBetweenSquared(unit1, unit2) - 比distanceBetween用起来快一点点...

    • int(x) - 移除一个数字的小数部分. 示例:int(4.2) == 4

    • select(bool, textA, textB) - 若为true则返回文本A, 否则返回文本B。

    • debug(logicBoolean) - 返回一个文本字符串, 帮助解释这个结果是怎么来的。可以看到嵌套逻辑、比较和运算符。

    • str(x) - 将数字、单位或布尔值转换成字符串. 示例:str(self.energy)+'x'=='100x'

    • substring(text,start,end) - 示例:substring('hello',0,2) == 'he' //注:这不支持使用负数来从文末取字;另外当start的数大于end的数时不会报错,而当在游戏中显示相关消息时,游戏会直接崩溃,这属于bug(1.15p8)

    • length(string) - 以数字形式返回文本长度。

    • squareRoot(num) - 求一个数字的平方根。

    • min(num, min2) - 返回最小数, 示例: damage = min(self.hp, self.energy)

    • max(num, min2) - 返回最大值, 示例: max(5, 10) == 10

    • createMarker(x,y,[height],[teamId],[dir]) - 返回一个临时的单位标记。可以保存在自定义存储中或作为移动命令的参考, 等等。不影响游戏状态。如果不再被引用, 则自动删除。

    • globalSearchForFirstUnit(withTag=x, relation) - 返回找到的第一个与筛选器匹配的单位。

    • null/nullUnit - 一个空的/缺失的单位。在需要比较时很有用, 示例:self.customTarget2 != null

• 新的逻辑布尔/单位参照体系

    • 支持函数之间的链接, 示例: self.attachment(withTag='x').lastDamagedBy.getAsMarker()

    • self - 这是当前单位的现有参照(在以前的版本中是唯一选项)。示例:autoTrigger: if self.energy > 100

    • attachment([slot], [withTag])

    • attacking - 单位正在攻击的当前目标,不一定是当前的路径点目标。

    • lastDamagedBy - 攻击此单位的最后一个单位

    • parent - 父级 - 运输单位或附带单位的父级。 示例:autoTrigger: if parent.energy > 100

    • activeWaypointTarget 当前动作的路径点目标。包括攻击、运输、修复等动作。

    • customTarget1 - 自定义存储, 默认为建造此单位的单位。

    • customTarget2 - 自定义存储, 默认为空。

    • nearestUnit(withinRange=500, withTag='x', relation='any') - 按条件查找一个单位,该代码运行较慢,不建议在autoTrigger中使用

    • getAsMarker() - 立即在单位的当前位置创建临时标记。标记创建速度快并在不被引用时自动移除. 它不会链接到任何单位,并且在单位死亡时仍然存在,在创建源移动时仍然保持不变。

    • getOffsetAbsolute([x],[y],[height]) - 返回带有绝对偏移量的标记。

    • getOffsetRelative([x],[y],[height],[dirOffset]) - 返回带有相对偏移量的标记。

    • thisActionTarget - 在[action_NAME] / [hiddenAction_NAME]中使用,以获得动作的目标、位置、自动触发事件源等等。会根据动作触发源设置为单位、标记或空值。注意:当用于界面文本之类的字段时它将始终为空,因为该值只在动作事件上有效。如果你想让它显示在界面上,请将该值保存到自定义存储中。

    • thisActionTarget - 示例:fireTurretXAtGround: mainGun (thisActionTarget==带地面位置的标记)

    • autoTriggerOnEvent: tookDamage (thisActionTarget==造成伤害的单位)

    • autoTriggerOnEvent: killedAnyUnit (thisActionTarget==被摧毁的单位)

    • autoTriggerOnEvent: transportingNewUnit (thisActionTarget==被运输的单位)

    • autoTriggerOnEvent: transportUnloadedOrRemovedUnit (thisActionTarget==被卸载的单位)

    • autoTriggerOnEvent: queuedUnitFinished (thisActionTarget==被建造的新单位)

    • autoTriggerOnEvent: touchTargetSuccess (thisActionTarget==碰到的目标)

    • alsoTriggerAction: x (thisActionTarget==与原动作相同)

    • [turret]onShoot_triggerActions: x  (thisActionTarget==被击中的目标)

    • takeResources_triggerActionIfAnyCollected: x (thisActionTarget==带有资源的目标)

    • addWaypoint_triggerActionIfMatched: x (thisActionTarget == 移动动作的标记/攻击的目标等。注:如果只是想搜索,请使用addWaypoint_maxTime: 0)

• 向所有单位添加了customTarget1/customTarget2。可用于存储对另一个单元的引用。CustomTarget1默认为建造该单位的可移动单位或建筑物。适用于航空母舰、步兵小队、传送器链接等([core]defineUnitMemory还可用于添加更多内容)

    • 添加了 [action]takeResources_excludeUnitsWithoutCustomTarget1EqualTo

    • 添加了 [action]takeResources_saveFirstUnitToCustomTarget1

    • 添加了 [action]takeResources_saveFirstUnitToCustomTarget2

    • 添加了 [action]setCustomTarget1 - 单位参照

    • 添加了 [action]setCustomTarget2 - 单位参照

    • 添加了 [action]swapCustomTarget1And2 - 布尔值

    • 在动态逻辑中添加了self.customTarget1

    • 在动态逻辑中添加了self.customTarget2

• 添加了[action]setResourcesWithLogic/[action]addResourcesWithLogic

    • 示例: setResourcesWithLogic: hp=self.parent.hp - 10, energy = self.energy / 2

    • 示例: addResourcesWithLogic: hp = select( self.parent.energy>5, 10, 20 )

• 添加了[core]autoTriggerCheckRate 和 [core]autoTriggerCheckRate

    •  可用选项: everyFrame (默认值), every4Frames, every8Frames

    • 注: 所有的触发器,无论检查速率如何,都会在首次创建时和自动触发器冷却时间后进行检查。每4帧/每8帧的检查率是随机分布在各单位之间的,这样它们就不会全部出现在同一帧上,使其更流畅。对于具有复杂自动触发器的mods来说,在all-units.template中添加[core]autoTriggerCheckRate:every8Frames后会有很大的性能提升。通常自动触发器的性能会提高8倍。在极少数情况下,一些触发器可能仍然需要逐帧检查,所以这不是一个默认值。

• 新的单位生产/生成参数:

    • 添加了spawnSource(unitRef) - 影响位置和队伍。

       • 示例: [action]spawnUnits: tank(spawnSource=memory.lastLocation)  

    • 添加了copyWaypointsFrom(unitRef) - 将目标上的所有路点复制到创建的单位上。

       • 示例: spawnUnits: tank(copyWaypointsFrom=self)

• 向${}模板板块添加了系数操作符(%)

• [turret]unloadUpToXUnitsAndGiveAttackOrder - 在炮塔位置卸载单位(需要测试)

• 添加了 [core]borrowResourcesWhileBuilt

• 类似于[core]borrowResourcesWhileAlive但在单位建成后才会生效。主要对房屋之类的建筑有用,这些建筑有负的资源,可以加到单位上限等。

• 添加了 [action]takeResources_includeReference

    •  示例: [action]takeResources_includeReference: self.lastDamagedBy

• 添加了 [action]addWaypoint_target_fromReference - 单位参照

• 修复Android版自定义抛射体的imageShadow不显示的问题。

• 以及此处未列出的其它大量修复。

1.15p2

根据Luke在Discrod上的发言,1.15p2本在更新计划之中,但该版本却并没有正常发布。1.15p2不受官方支持或承认。

1.15p2更新日志
- 该版本没有更新日志 -

1.15p3

1.15p3首次更新于2021-07-18 16:58:45

1.15p3更新日志
Rusted Warfare Beta - v1.15p3
  • 添加[attack]shootDamageMultiplier
  • 添加[projectile]ignoreParentShootDamageMultiplier
  • setUnitStats现在可用于动态地修改shootDamageMultiplier
  • setUnitStats现在可用于动态地修改maxTurnSpeed
  • 添加[action]switchToTeam: {logicNumber} (起先没有加入到1.15p1)
  • 修复了"引用:正在攻击的目标单位"在1.15p1中丢失的bug
  • 修复了在地图加载生成大量建筑物单位时会有延迟的问题

1.15p4

1.15p4首次更新于2021-07-27 08:11:17

1.15p4更新日志
Rusted Warfare - Beta - v1.15p4
  • 添加了与"autoTriggerOnEvent"一同使用的"eventsource" (在1.15p1更新日志中thisActionTarget和autoTriggerOnEvent并用的示例是错的。改用eventSource即可达到目的)
  • 在[core]部分向defineUnitMemory添加了一个@memory快捷方式,用于快速创建单个内存变量。配合单位模板与copyFrom逻辑作为defineUnitMemory来覆盖也可以正常使用。 示例: @memory customText:string
  • 新增[action]fireTurretXAtGround_withTarget (采用单位或标记作为引用)
  • 新增[effect]pivotOffset —— 类似于dirOffset但也旋转所有相对的键,并产生子效果
  • 新增[effect]pivotOffsetRandom
  • Android版更新: 修复1.15beta版本中存档文件无法删除的bug
  • Android版更新: 修复1.15beta版本中存档文件无法重命名的bug
  • Android版更新: 修复多人游戏/遭遇战高级选项中用于选择地图的下拉列表无法准确选取地图的bug
  • Android版更新: 尝试修复在某些设备上播放大量音效时会出现音频故障的问题(如果成功修复,请告知luke)
  • 修复: DamagingBorder会对被运输的单位造成伤害的问题
  • 修复: 在水下由运输单位卸载的舰船不会浮起来的问题
  • 新增会影响heightSpeed的[projectile]trueGravity逻辑,[projectile]gravity只会直接更改高度而不会影响加速度
  • 修复模组中有空颜色字段时显示的错误提示过于迷惑的问题
  • 修复了convertToNeutralIfNotTransporting会导致游戏不同步的问题

1.15p5

由于Google对发布在Play商店上的应用作出了API Level上的要求,且Android 11更新了API 30中的存储机制,此次更新大幅度修改了Rusted Warfare关于文件存储的机制。

1.15p5更新日志

Rusted Warfare - Alpha - v1.15p5

<< 注意,游戏的测试版一旦更新到API 30后将无法降级到API 29,因此此次更新将先作为Alpha进行测试,您需要根据需求选择性地加入Alpha测试 >>

  • 添加Android存储访问框架(Storage Access Framework, 简称SAF)支持,即使游戏更新到Google Play要求的API30,SDK模组作者们也能愉快地继续制作mod
  • 在没有SAF的情况下,Android API 30 禁用了所有跨App的正常直接文件访问(例:使用文本编辑器编写mod中的ini文件),这会让在Android手机上写Mod变得毫无体验,因为如果不添加SAF,你每修改一次Mod都需要打包一个".rwmod"再导入才能运行
  • SAF是一种在Android上让应用访问外部文件的方式,但这种方式在处理文件的内部过程上与传统的方式完全不同, 所以请玩家们测试一下所有与文件相关的系统(存档、自定义地图、导入文件、回放、读取mods等),因为后端系统已经大幅改变了,所以有任何问题请都向"我"(Luke)反馈
  • 但不幸的是,SAF的性能比原来的直接文件访问慢得多,可能会导致未打包的模组加载速度大幅减慢,所以在沙盒模式中新增了一个"Quick Reload"按钮来尝试在Android上解决此问题,这样能减少加载时间。(这只会重新加载地图上处于活动状态的单位的数据,目前这可能会错过一些过渡单位)
    • 注意导入的.rwmod模组的加载时间应该基本不受影响,甚至有时还会更快,这个问题主要影响Mod作者
  • 大幅加快了所有平台上游戏的模组加载速度,对大量使用copyFrom的场景速度有大幅提升
  • 修复Windows 64位版本上的DPI缩放问题
  • 修复PC版1.15p4引入的界面缩放时的bug
  • 缓存mod-info.txt数据以避免在游戏Mod被禁用的情况下还提取zip中的文件,以加快加载速度
    • 译者注:游戏会根据文件夹名生成缓存文件并在之后优先读取,可能导致新的更改不能生效。PC版可以手动删除"cache/mod-info.cachedata/"中对应的文件,Android版则可以使用调试选项中的命令来清理缓存。这是测试版中的一个bug(1.15p8)
  • setUnitStats现在可以动态地改变fogOfWarSightRange
  • setUnitStats现在可以动态地改变nanoRange
  • 修复了Android系统上实验性OpenGL模式会造成崩溃的问题
  • 修复${}静态块中的换行符问题
  • 修复Android上多人游戏列表会水平滚动的问题
  • 修复在Android Beta版上删除和重命名存档或回放时的问题
  • 所有随机逻辑都更加随机。并且每场游戏都会创建一个共享的随机种子,用于随机开局生成、随机资源放置等。
  • 添加了用于生成能在多人游戏同步的随机浮点数的rnd(min,max) 逻辑布尔值。例如: [action]requireConditional: if rnd(0,1)<0.6 (这个动作将有60%的概率生效)
  • 修复了PC版在某些设备上的实验性队伍颜色渲染的问题
  • 修复了沙盒模式中回放模式无法使用Mod单位的问题
  • 修复了add/setResourcesWithLogic会将所有输入转换为小写的bug
  • 添加了lowercase(数据类型为字符串)和uppercase(数据类型为字符串)两个逻辑函数
  • 添加了cos()和sin()逻辑函数
  • 添加了direction(x1,y1,y2,x2)和directionBetween(unit1, unit2)逻辑函数
  • 添加了autoTriggerOnEvent添加了enteredTransport和leftTransport两个动作(event),其中eventSource为被运输的单位
  • 修复了copyWaypointFrom在单位有unitsSpawnedOnDeath时对自己不起作用的问题
  • 修复了unloadUpToXUnits和GiveAttackOrder在附属单位中不能正常工作的问题
  • 在单位生成时可以添加aggressiveTeam选项
  • 添加了[action]sendMessageTo:unitRef , [action]sendMessageWithData:variableList, [action]sendMessageWithTags:tagList
    • 使用autoTriggerOnEvent:newMessage(withTag=x)来读取目标单位上的消息,eventData(name, type, [default])这个逻辑函数用于读取已发送的数据
    • autoTriggerOnEvent:tookDamage的用法支持可选的(withTag=x)参数, 可用于读取判断抛射体标签. 例如: autoTriggerOnEvent:tookDamage(withTag=fire) (受到"火焰"伤害时自动执行动作)
  • 当readUnitMemory/eventData读取的类型指定为字符串时,游戏会将读取的数据自动转换为需要的非字符串数据类型以便于调试
  • nearestUnit()的默认范围调整为500 (而不是0)
  • takeResources_includeReference, setCustomTarget1/2支持默认参照(例如:从单位内存变量、逻辑函数等)
  • 修复了setCustomTarget2的bug
  • 修复了测试版更新引入的builtFrom_x_isLockedMessage为空时使用builtFrom_x_isLocked游戏会崩溃的问题
  • builtFrom_x_isLocked现在可以对陆地工厂等旧式单位(即写在dex中而不是使用ini格式的单位)使用
  • substring函数现在支持动态起始和结束数字
  • 修复了单位快速降低高度时炮弹(抛射体)会穿过单位的问题
  • 添加了[core]nanoReclaimSpeed(建造单位回收普通单位的速度,默认为nanoRepairSpeed*5.1)以符合旧版本的行为
  • 添加了[core]resourceReclaimMultiplier - 建造单位回收资源的速度(默认为1)
  • 添加了[core]nanoUnbuildSpeed - 建造单位回收未完成单位(俗称"蓝影")的速度(默认为1)
  • 如果初始单位有canNotDirectlyBeAttacked属性且可能会导致游戏开局就秒输时,Mod作者会看到警告消息
  • 修复攻击地面UI炮塔数量不同时使用showActionsWithMixedSelectionIfOtherUnitsHaveTag会崩溃的问题
  • 现在使用"守卫"操作的敌方单位隐身时会停止守卫
  • 修复了teamTagDetect地图触发器提示missing team错误的问题
  • 修复了nearestUnit逻辑查找时忽略中立单位的bug
  • 地图脚本中的globalMessage现在支持globalMessage_LANG了 (也就是)
  • 修复了addWaypoint_target_randomUnit丢失某些目标的问题
  • 现在游戏中的旁观者和回放模式将可以看到隐形单位
  • 修复了放置单位时可以利用光标探测敌人位置的bug
  • 当项目(item)添加/删除失败时queueItemAdded和queueItemCancelled会停止触发
  • 现在fogOfWarSightRange动态改变时,迷雾也会随着变化刷新
  • 添加了[action]refundAllQueuedItems (数据类型为布尔值)
  • 添加了[action]removeAllQueuedItemsWithoutRefund (数据类型布尔值)
  • Android版新增"save logs"(保存日志)调试选项

1.15p6

1.15p6更新日志

Rusted Warfare - Alpha - v1.15p6

<< 注意,你要选择参与Alpha测试才能更新到这个版本,详情请参阅上次更新日志 >>

  • 在小型单位数量巨多的场景下,现在PC版上的渲染效率能提升一倍多(同屏渲染10000+小型单位都能丝毫不卡)
  • 新单位 - 重型防空战舰(Heavy AA Ship)
  • 对静态函数参数使用动态逻辑时,展示的错误消息更加清晰易懂
  • 修复了PC版战役室界面(即等待游戏开始的界面)在缩放时的显示问题(注: 之前已通过热更新的方式修复过)
  • getOffsetAbsolute() 和 getOffsetRelative() 现在支持动态参数了
  • 修复了sendMessageData可访问数据(例如:单位内存变量等)的范围异常的问题
  • 如果sendMessageWithData中的键(key)包含空格,游戏会报错
  • 允许设置字符串变量并将其与NULL进行比较
  • 修复了使用流式资源系统回收时能返还资金的问题
  • 修复了使用[attachment]showAllActionsFrom的动作(action)不显示冷却时间的问题
  • 修复了Android版中在使用SAF时沙盒编辑器中导出地图的问题
  • 修复了Android版中在使用SAF时多人游戏房主选择的自定义地图无法传输给其它玩家的问题
  • 新增逻辑函数self.isInMap()
  • 新增逻辑函数game.mapWidth()和game.mapHeight()
  • 添加了[resource]iconImage - 在状态栏(HUD)和文本中显示资源图标
  • 添加了[resource]iconImageUseInText (默认为true) - 在动作(action)的描述中显示资源图标
  • 添加了[resource]displayNameHideWhenIconShownInText (默认为false) - 有助于缩短说明文本
  • 添加了[resource]displayNameHideWhenIconShownInHUD (默认为false)
  • 添加了[resource]displayColorUseInText (默认为true) - 在动作(action)的描述中显示资源颜色
  • 添加了[resource]appendResourceInHUD - 使用后,在游戏界面中这个资源值将会叠在目标资源值的后面,并且继承目标资源的颜色和图标。这个资源值后面也能继续叠加其它资源值
  • 添加了[resource]displayPrefixInHUD - 在资源数值前显示的文本,会替换掉资源原本的名称以及冒号,和appendResourceInHUD一同使用时可以用来显示资源限制之类的内容
  • 添加了[resource]displayPostfixInHUD - 在资源数值之后显示的文本
  • 添加了[graphics]showShotDelayBar (默认为true) - 用于显示开火速度慢的炮塔的冷却指示条(译者注:原文calldown似乎有误,应为cooldown)
  • 修复了敌对性性中立单位会捕获其它中立单位的问题
  • 修复了大量崩溃问题

1.15p7

1.15p7更新日志

Rusted Warfare - Alpha - v1.15p7

<< 注意,你要选择参与Alpha测试才能更新到这个版本,详情请翻看上面的更新日志 >>

  • 添加了[resource]displayTextAppendResourceWithGap - 默认为false。将不相关的资源放在同一行时,在资源之间添加空格。
  • 添加了[resource]appendResourceInHUD_whenThisZero - 默认为true。为false时附加资源(如用于显示最大值的资源)与父资源一起隐藏。
  • displayTextAppendResource现在在单行太宽时自动截断换行。适用于小屏幕或竖屏游戏的玩家
  • 现在可以对动态数值进行取模运算了
  • 添加了self.isReversing()这个逻辑布尔值
  • 使[resource]displayPos与全局资源(global_resource_X)协同工作。[resource]displayPosd的默认值为0(之前这个代码还没实装,用不了其实本身不算bug)
  • 修复了[resource]displayWhenZero,因此它会显示尚未使用的资源
  • 优化了Android系统的菜单界面
  • 现在沙盒中调试模式下可以显示某个单位的附属单位了
  • 将沙盒中调试模式下显示的单位flag转为人类可读的形式
  • 现在PC版绑定的快捷键出现重复时会弹窗提示警告
  • 修复了加载存档时无法自动应用游戏规则(例如如禁核、多倍收入)的问题(只有新创建的存档无此bug,对于旧存档请在遭遇战模式中通过高级选项进行加载)
  • 在unitDetect地图触发器中添加onlyIfEmpty参数
  • spawnUnits gridAlign现在应用于offsetRandomX/Y之后,而不是之前
  • 在Mac OS上加载模组数据时会跳过所有"_MACOSX"临时文件夹
  • 将selfRegenRate添加到setUnitStats
  • 在Android 9或更低版本上恢复使用传统的直接访问存储,以避免这些Android版本中的缺少文件管理器或其它系统问题(因为这些运行旧版本操作系统的设备上不会强制执行分区存储)。
  • Android版新增调试选项:"saf force off",用于测试直接访问,不推荐使用:因为在较新的安卓版本上,这可能会以奇怪的方式失败,操作系统会对游戏隐藏文件。
  • Android版新增调试选项: "saf force on",用于在旧版本Android上测试SAF
  • Android版新增调试选项: "share logs",执行后游戏会保存日志并弹出分享界面
  • 现在mod-info.txt中可以使用minVersion选项来显示模组的制作版本与当前运行的游戏版本
  • 使用 setUnitStats 更改shootDelayMultiplier 时保持炮塔延迟和后坐力数值固定不变
  • 修复了首次加载模组时逻辑布尔类型出错的问题
  • 修复了Android版OpenGL在丢失上下文后出现白屏的问题
  • 修复了PC版帮助界面的单位显示问题
  • 修复了打包为".rwmod"的模组无法删除或分享的问题
  • 修复了显示的图标太小的问题
  • 修复了在android上重新加载mod数据时线程崩溃的问题
  • 修复了通过调试选项修改游戏语言时某些字符串未能应用的问题(如地图触发器文本)
  • 修复changeCredits映射触发器显示有关添加/设置的错误警告
  • 修复v1.15p6中引入的bug: 导致渲染伪影的纹理图集
  • 修复v1.15p6中引入的bug: 使用纹理图集时停止纹理实时重载不生效的问题
  • 修复了移速高的单位在长距离移动时会一步一卡的问题
  • 修复在PC版GUI中加载无效的地图缩略图或图像时的崩溃问题
  • 修复Android版上罕见的恢复游戏时会导致游戏崩溃的问题
  • 修复在Android上导入文件时无法发送文件数据导致的崩溃问题
  • 修复导入时写入目标文件失败时的崩溃问题
  • 修复了地图中存在无效的浮点属性时会导致游戏崩溃的问题
  • 修复了地图中存在未定义图块时会导致游戏崩溃的问题
  • 修复了fireTurretXAtGround存在距离限制时单位重载或变换会导致游戏界面崩溃的问题
  • 修复了音乐系统因无法列出内部文件夹导致的崩溃问题
  • 修复了创建一些位图时因内存溢出导致的崩溃问题
  • 修复了通过SAF创建目录失败时游戏会崩溃的问题
  • 修复了Android上实验性OpenGL渲染器的崩溃问题
  • 修复了在iOS上渲染圆的数目过多时会导致游戏崩溃的问题
  • 修复iOS上因线程出现竞态条件导致的崩溃

1.15p8

1.15p8更新日志

Rusted Warfare - Alpha - v1.15p8

<< 注意,你要选择参与Alpha测试才能更新到这个版本,详情请翻看上面的更新日志 >>

  • 如果顺利的话这此的Alpha测试版本会同步到Beta分支
  • 修复了displayWhenZero在玩家暂未拥有任何自定义资源的情况下仍不生效的问题
  • 更好的模组minVersion检查 - 改进了消息提示并修复了极端情况下的问题
  • 修复了通过setUnitStats设置selfRegenRate时数值被四舍五入的问题
  • 修复了在浏览器中下模组才下载到一半就导入到游戏时会导致崩溃的问题
  • 修复了加载存档会导致崩溃的问题
  • 修复从无法读取的存档中开始游戏时的崩溃问题
  • 修复在某些情况下无法创建回放文件时,游戏会在开局时崩溃的问题(多半是SAF的锅)
  • 修正了"模块化蜘蛛"的一些单位属性
  • 现在上传Steam创意工坊缺少缩略图时会显示更清晰的错误消息
  • 现在Android版在导入模组时会显示加载界面,避免游戏假死
  • 导入已修改过的rwmod文件现在可以刷新数据,而无需重新启动游戏
  • 修复导入已修改过的.rwmod文件会使用SAF复制而不是替换现有的mod的问题
  • 修复android在Opengl模式下的屏幕旋转,有时会导致半个屏幕被切断
  • 提高了一些文件的读取速度
  • 修复了大量可能导致崩溃的小BUG

1.15p9

1.15p9更新日志

Rusted Warfare - Alpha - v1.15p9

<< 这只是v1.15p9的更新日志,请参阅之前的更新日志以了解v1.15的所有变动 >>

  • Android和iOS版本新增着色器支持,PC版着色器也有改进。
    • 新增设置选项: 队伍颜色着色器 - 可大幅减少模组纹理的内存占用,但需要更快的GPU。
    • 新增设置选项: 着色器效果 - 目前替换了核弹和一小部分单位的着色器效果;在你的模组中使用[effect]drawType:displacement即可使用新效果,以后将会适配更多单位。
  • 模块化蜘蛛新增瞬移(Blink)升级模块。
  • 模块化蜘蛛新增疾速(Speed)升级模块。
  • 鹦鹉螺号: 添加了发射侦察机器人的能力。
  • 机枪机甲的单位数据从生命值:800/护盾:800调整到生命值:600/护盾:800。
  • 房主现在可以让所有玩家返回战役室界面,无需玩家退出重进也能调整先前的设置来重开游戏。
  • 被房主踢出游戏的玩家的IP地址将会被默认封禁1分钟。
  • 现在沙盒模式中可以通过单位的名称或内部名称来查找/过滤单位。
  • 添加了全新的贴花(decal)绘制系统 - 可用于选择界面、自定义血量条、3D效果、动画等许多新事物。
  • 添加了[decal]layer - 枚举型 - 可用参数有:shadow, beforeBody, afterBody, onTop, beforeUI
  • 添加了[decal]order - 浮点型 - 与其它贴花的顺序。默认使用在模组ini文件中出现的顺序且数值为0。
  • 添加了[decal]onlyWhenSelectedByOwnPlayer - 只在玩家(仅限所有者)选中此单位时绘制贴花特效。
  • 添加了[decal]onlyWhenSelectedByEnemyPlayer - 只在敌方选中此单位时绘制贴花特效。
  • 添加了[decal]onlyWhenSelectedByAllyNotOwnPlayer - 只在队友(单位的主人不算)选中时绘制贴花特效。
  • 添加了[decal]onlyWhenSelectedByAnyPlayer - 在任何玩家选中此单位时绘制贴花特效。
  • 添加了[decal]includeParentsSelection - 布尔型 - 启用时,上面的几种onlyWhenSelected*将会同时检查父单位是否被选中。
  • 添加了[decal]onlyPlayersWithUnitControl - 布尔型 - 只在玩家能控制此单位时显示。
  • 添加了[decal]onlyTeam - TeamRelation - 只在单位与玩家的之间的队伍关系满足特定条件时绘制贴花特效。- 可用参数有: own|notOwn|neutral|allyNotOwn|ally|enemy|any。
  • 添加了[decal]onlyWithZoomLevelOrMore - 浮点型 - 填写示例:0.7 - 缩小一点时会隐藏贴花。当屏幕上可能需要显示大量单位时,有助于减少对性能的绘制要求。建议为3D立体像素风格单位、小细节或小阴影的贴花设置此属性。
  • 添加了[decal]onlyWhileActive - 只在单位建造完成后绘制贴花特效。
  • 添加了[decal]onlyWhileAlive - 只在单位存活时绘制贴花特效([decal]layer的值为beforeUI时默认为true,否则值默认为false)。
  • 添加了[decal]onlyInPreview - 仅在侧边栏和单位放置预览中显示贴花特效。
  • 添加了[decal]onlyOnNonPreview - 只在真实单位上显示贴花特效,侧边栏和单位放置预览中则不显示。
  • 添加了[decal]imageScale - 动态浮点型。
  • 添加了[decal]imageScaleX - 动态浮点型。
  • 添加了[decal]imageScaleY - 动态浮点型。
  • 添加了[decal]image - 参数为image。
  • 添加了[decal]teamColors - 布尔型. 在单位图像和imageStack上绘制队伍颜色。
  • 添加了[decal]imageStack - 一组图像的列表 - 推荐用于3D像素风格的单位,因为用同一张精灵表(sprite sheet)时可以批量绘制图像。
  • 添加了[decal]stack_hOffset - 用于3D立体像素风格的单位。
  • 添加了[decal]stack_frameOffset。
  • 添加了[decal]stack_drawInReverseOrder。
  • 添加了[decal]stack_indexStart - 动态整数型 (图像栈的起始图像)。
  • 添加了[decal]stack_indexCount - 动态整数型 (要绘制的图像数目; 可以设置为1并stack_indexStart作为图像选择器)。
  • 添加了[decal]total_frames - 使用total_frames或frame_width/frame_height。
  • 添加了[decal]frame_width。
  • 添加了[decal]frame_height。
  • 添加了[decal]frame - 动态整数型。
  • 添加了[decal]isVisible - 动态布尔型。
  • 添加了[decal]xOffsetRelative - (浮点型) - (注意:将basePosition与createMarker/等一起使用以进行动态使用)。
  • 添加了[decal]yOffsetRelative - 浮点型。
  • 添加了[decal]xOffsetAbsolute - 动态浮点型。
  • 添加了[decal]yOffsetAbsolute - 动态浮点型。
  • 添加了[decal]hOffset - 浮点型 - 高度偏移量。
  • 添加了[decal]dirOffset - 浮点型。
  • 添加了[decal]pivotOffset - 浮点型 - 仅影响xOffsetRelative/yOffsetRelative而不会旋转图像。
  • 添加了[decal]alwaysStartDirAtZero - 布尔型 - 用于绘制UI时很有用。
  • 添加了[decal]alwaysStartHeightAtZero - 布尔型 - 用于空中单位、悬浮单位和绘制UI时很有用。
  • 添加了[decal]basePosition - 绘制单位或标记时将以此位置为基准点。
  • 添加了[decal]basePositionFromLeg - 单位腿的参照 - 使用腿部/手臂位置而不是单位主体作为基准点。
  • 添加了[decal]basePositionFromTurret - 单位炮塔的参照 - 使用某一炮塔的位置而不是单位主体作为基准点。
  • 添加了[decal]drawLineTo - 单位或标记 - 在受颜色和宽度影响的位置绘制一条线。
  • 添加了[decal]image_shadow - 参数为图像(image)。
  • 添加了[decal]shadowOffsetX - 浮点型。
  • 添加了[decal]shadowOffsetY - 浮点型。
  • 添加了[decal]color - 颜色 - 影响图像和线。
  • 添加了[decal]alpha - 动态浮点型 (0-1). 让颜色带上透明度. 影响图像和线。
  • 添加了[decal]lineWidth - 浮点型。
  • 添加了self.speed() - 返回单位的当前速度。
  • 添加了self.builtAmount() - 该单位的建造完成度,当建造完成时这个值为1。注意要检测触发未建成的单位请使用eventstrigger而不是autoTrigger。
  • 添加了self.completed() - 检测self.builtAmount()是否为1的快捷方式,可用方便地检测单位自身是否建成。
  • 添加了self.maxMoveSpeed()。
  • 添加了self.teamDefeatedTech - 布尔值。
  • 添加了self.teamWipedOut - 布尔值。
  • 添加了self.teamVictory - 布尔值。
  • 添加了[graphics]image_floatingPointSize - 将奇数大小的图像修正1个像素。
  • 添加了[graphics]image_offsetH - 高度偏移量。
  • 添加了[leg/arm]liftingHeightOffset。
  • 添加了[leg/arm]targetHeight。
  • 添加了[leg/arm]targetHeightRelative。
  • 添加了[leg/arm]image_middle_teamColors。
  • 添加了[turret]height - 有助于在3D风格的单位上安装炮塔。
  • 添加了[resource]displayDigitGrouping ,可用的参数有: none/comma/space。
  • 添加了[graphics]showSelectionIndicator。
  • 添加了[core]allowCaptureWhenNeutralByAI - (允许AI在单位为中立状态下时将其捕获)。
  • 添加了[action]tags - 和queueSize(withActionTag=x)、queueItemAdded(withActionTag=x)等一起使用。
  • 添加了[action]alsoTriggerOrQueueActionWithTarget - 更改其他触发动作的目标,默认为当前动作的目标。影响诸如 fireTurretXAtGround、spawnUnits、thisActionTarget()等。
  • 向“队伍关系”数据类型添加了notOwn - 例如用于addWaypoint_target_nearestUnit_team。
  • 向self.queueSize添加了能检测动作标签的withActionTag参数。
  • 向autoTriggerOnEvent添加了‘attachmentRemoved’事件。
  • 向autoTriggerOnEvent的queueItemAdded触发器添加了withActionTag和queueItemCancelled两个参数,用于触发动作时检测标签。
  • 添加了numberOfUnitsInAllTeams()。
  • PC模组设置界面添加了查找选项。
  • 动态检测并添加玩家在Steam创意工坊中订阅的模组,并能查看模组下载状态。
  • 被移除的单位现在总是在移除时一并删除生命值(用于Mod逻辑中的检测)。
  • 旁观者现在可用查看所有玩家的资源数目了。
  • 现在PC版的多人游戏会在房主按下暂停键的同时暂停,不再需要房主额外输入-pause命令手动全局暂停了。
  • 修复了使用fadeInTimer时同时使用fadeOut会出现计算错误的问题。
  • 调整了加入需要模组的服务器时显示的消息文案,使其更加清晰易懂。
  • 加载地图纹理缓冲区时避免内存溢出崩溃游戏。。
  • 修复了将zip文件当作游戏存档加载时游戏会崩溃的问题。
  • copyFrom现在支持以“CORE:”关键字引用原版单位。
  • 当isLocked已被定义时,即使动作的isVisible属性设置为false,单位也可以继续完成建造队列中待执行的任务。
  • 修复了当模块化蜘蛛从建造模式切换到其它模式时建造队列被清空的问题。
  • 现在指定效果名称时不再需要在前面带上“CUSTOM:”了。
  • 修复了[attachment]showAllActionsFrom和onlyOneUnitAtATime动作并用时无效的问题。
  • 修复了动作的冷却时间在存档或重新同步后会丢失的问题。
  • 修复了同时添加到builtin_mods和builtin_mods_enabled的单位会出现两个的问题。
  • 修复了iOS版中渲染非常大的圆形时会游戏崩溃的问题。
  • PC版优化了使用某些显卡时的游戏加载时间。
  • 修复了使用单位编队快捷键可以选中迷雾中的单位的问题。
  • 修复了Windows下mods-info.txt的缓存未正确刷新的问题。
  • 修复了一些copyFrom的错误提示不包含错误细节的问题。
  • 对一些小屏iOS设备的下拉选择框进行适配。
  • 修复了动态逻辑中处理负数的问题(例如: “self.hp * -5” 无效,但“self.hp * (-5)”有效)。
  • 修复了getOffsetRelative/getOffsetAbsolute的上下文错误地使用链接单位,而不是它运行的外部单位上下文。例如:lastAttacked.getOffsetRelative(x=memory.offsetX)会从lastAttacked读取offsetX,此处应该读取单位自身数据。
  • 修复了单位动画中特效生成过早的问题。 (可能会影响目前已有的模组)。
  • 现在PC版和iOS版在选择开局单位时的下拉选择菜单可以使用滚动条了。
  • 修复了模组中部分事件链导致崩溃的问题。
  • 修复了玩家报告的游戏声音系统占用内存异常的问题。
  • 修复了转移过的资源有时仍能被回收的问题。
  • 大幅优化了使用resourceMaxConcurrentReclaimingThis的模组的性能。
  • 修复了PC版中描述文本不会换行的问题。
  • PC版和iOS版中显示文字太长的弹窗消息时,游戏会提供滚动条以便于查看。
  • 阻止模组单位建造沙盒编辑器,以防止游戏不同步。
  • 当游戏资源不足以支付建造价格时,以红色显示单位/动作描述中的价格。
  • 修复了特定条件下触发的事件一直持续,开始另一局游戏也不会结束的能导致游戏不同步的bug。
  • 修复了流式资源建造的单位未建成时存档或重新同步会导致问题的bug。
  • 修复了上个Beta版本引入的新问题:单位变形或升级后的回收价格未被正确更新。
  • 修复了沙盒模式的崩溃问题。
  • 以及修复了大量的其它小问题……

1.15p10

1.15p10更新日志

Rusted Warfare - Alpha - v1.15p10 热修复版

<< 这只是v1.15p10的更新日志,请参阅之前的更新日志以了解v1.15的所有变动 >>

  • 修复了Android版选择动作目标的界面(例如选择核弹目标的界面)出现建造相关按钮的bug。
  • 修复了PC版某些语言环境下打开玩家选项调整界面(即房主调整玩家位置的界面)时游戏会崩溃的问题。
  • 修复了沙盒模式下单位描述中不展示价格的问题。
  • 修复了Android版模组使用多帧1像素图像时游戏错误地要求"width and height must be > 0"(宽度和高度必须大于0)的bug。
  • 修复了鹦鹉螺号发射侦察机器人时可以绕过冷却的问题和抛射体丢失目标的问题。
  • 修复了阴影层上的贴花导致游戏崩溃的问题。
  • 更改了T2和T3资源制造仪的基础价格,使之与升级价格相匹配。
  • 添加了Mod特性:[effect]trailEffect
  • 添加了Mod特性:[effect]trailEffectRate
  • 添加了Mod特性:self.maxShield
  • 添加了Mod特性:self.maxEnergy
  • 添加了Mod特性:self.isEnergyRecharging
  • 添加了Mod特性:[core]updateUnitMemory * 和[action]setUnitMemory效果相似,但相比额外触发动作,新特性的性能更快、更容易用于计时
  • 添加了Mod特性:[core]updateUnitMemoryRate * 调用updateUnitMemory的频率,默认为1秒。设置为0时将会在每一游戏帧都触发
  • 修复了游戏开启OpenGL模式后在某些Android设备上渲染矩形时形状会倾斜的问题。
  • 修复了替代着色器在界面渲染比例不为1倍时渲染出错的问题。
  • 修复了可建造单位回收资源完成并自动切换回收下一个时的一帧画面错误。
  • 修复了PC版极少数情况下更改"强制垂直同步"选项时游戏会崩溃的问题。
  • 修复了极少数情况下开始游戏时若地图加载失败游戏会同时崩溃的问题。
  • 现在游戏列出zip压缩文件内容时会捕获内存溢出错误
  • 游戏现在会为引擎保留更多内存,以免大型Mod造成内存溢出导致游戏崩溃
  • 修复了大量其它会导致游戏崩溃的问题

你知道吗

  • 1.15p1版本有两次更新,其中第二次更新于2021-07-16 19:39:05并解决了玩家选项界面的崩溃问题。
在32位Oracle JRE中运行的Rusted Warfare 1.15p1的bug,若是在游戏自带的OpenJDK中运行则会立即崩溃。第二次更新修复了此问题。
  • 在Google Play商店曾短暂发布过存在问题的Android版1.15p2,经测试该版本有概率会出现严重问题,主要表现为大部分地图无法加载,甚至主界面的背景也会出现黑屏和拖影。
    正常情况与出错情况下的1.15p2