制作人来信 #21 版本 2.0 的新功能
大家好,我是制作人森野。 一直以来感谢大家使用 ACTION GAME MAKER。刚刚我们发布了将 Godot 基础版本提升至 4.7 的 1.4.0 版本。关于这一点其实也有很多想说的……不过在这第 21 期的制作人来信中,我将继续为大家介绍版本 2.0。 版本 2.0 的主要功能以全新 UI「制作模式」为核心,同时我们也一并引入了那些一直想动手改进、却因影响范围过大而搁置的功能。这次我想介绍其中几项与实际游戏内容特别相关的部分。本次的介绍内容预计如下:
-
新动作「举起/投掷」
-
对鼠标/触摸/摇杆的支持
-
对俯视视角的正式支持
-
与「速度和惯性」相关的功能追加
-
对「大量生成」的道具与对象的支持
-
「共享面板(黑板)」功能
-
可视化脚本的功能强化
其实还有很多,但要全部说明实在太长,所以这次就讲到这里。让我们马上开始吧。
◆1. 新动作「举起/投掷」
关于这一点,从前作 Pixel Game Maker MV 时代起就长期收到大家的批评——「以前的塞尔达和马力欧能做到的事,为什么现在做不到!」严格来说,使用对象连接是可以实现的……但机制实在太过复杂,因此我们把它做成只用两个执行动作就能轻松使用的形式。

我们还准备了举起的条件,以及在举起时或投掷时改变变量/开关之类的系统,所以可以设置成「只有持有手套时才能举起」,或者「投掷时会造成攻击」等等。我想它应该也能用于横版清版动作游戏和格斗游戏中的投技。
◆2. 对鼠标/触摸/摇杆的支持
明明可以导出到网页,却为了触摸操作不得不用 GDScript 来做按钮;获取鼠标坐标微妙地麻烦;想获取摇杆的倾斜度却做不到——像这些 ACTION GAME MAKER 没能跟上 Godot 功能的部分,我们一次性做了处理。现在可以做到以下这些事:
-
通过新的条件,可以实现「对象与攻击判定或墙壁判定重叠时」之类的动作。与举起动作结合,还能用鼠标把对象拾起并移动。

-
将鼠标坐标或摇杆方向用作投掷动作的目标,或子弹的发射方向。(这也顺带解决了 360 度射击游戏意外难做的问题。)

-
用摇杆来控制玩家移动。可以实现真正的 360 度移动,还能根据倾斜程度改变移动速度。
-
新增了把模拟摇杆的角度与倾倒程度、朝鼠标坐标的角度与距离等保存为变量的动作。
有了这些,我想大致上的鼠标/摇杆操作都能应对了。另外,由于在 Godot 中触摸=鼠标点击,所以也就意味着……触摸操作同样得到了支持。
◆3. 对俯视视角的正式支持
在上一期制作人来信中我们宣布将正式支持俯视视角,随之我们也追加了三项不可或缺的功能。
-
为模板移动以及「移动对象」动作追加了 A-Star 形式的寻路。它接近 RPG Maker 的点击寻路。由此,敌人卡在墙上动弹不得的情况会大幅减少。

-
追加了俯视视角用的水面。水面功能一直很受欢迎,但存在无法在俯视视角中使用的问题,于是我们制作了俯视视角用的水面。除镜面反射之外,还完整具备了根据水深让角色下沉、行走时产生水纹与声音等功能。

-
追加了「自身击退」动作。此前击退的表现只能靠朝显示方向的反方向移动或推动等方式来实现,很难做出想要的动作。该动作会以与判定中心的角度为基准,以最合适的角度进行击退。另外,它当然也可以在横版视角中使用,在横版视角下还能设置向上弹起等。
与前面提到的摇杆支持相结合,制作可以在 360 度自由移动的俯视视角动作游戏变得更容易了。
◆4. 与「速度和惯性」相关的功能追加
这同样是针对未能充分发挥 Godot 功能之处的改进。作为 GameObject 基础的 CharacterBody2D 会进行伪物理处理,但出于运作上的原因,可视化脚本一直在抵消这部分物理处理——特别是 Velocity(速度和惯性)。结果,只有伪物理的负面部分(因碰撞而被推动、因解决嵌入而出现不自然的行为)格外显眼,好的部分却没能发挥出来,作为反省,从 2.0 起我们让速度和惯性能够被妥善处理了。
-
通过新动作「设置对象速度」,可以强制对目标累加速度,由此便能实现跳台、大炮等「弹起」「发射」的动作。
-
我们让离开所接触的平台时可以累加该平台的速度。(对应了 CharacterBody2D 的 Platform OnLeave 的 Add。)由此,便可以借助会把人顶起的平台的惯性被弹起、被击飞等等。不过这里需要注意,由于它也会应用到以往的对象上,行为会发生变化,若要保持原有行为,需要请大家把 Platform OnLeave 关闭。

-
新增了自定义节点「强制移动区域」。这是用来创建让区域内的对象朝固定方向移动的区域的功能,可以指定逐渐加速,或始终以固定速度移动等。具体来说,可以做出传送带、水流与喷射气流、牵引光束、难以向前推进的强风区域等等。

由于会影响既有行为,这项功能之前一直被搁置,但我们下决心把它实现了。希望大家能借此亲身体会到 Godot 伪物理的优点。
◆5. 对「大量生成」的道具与对象的支持
此前我们一直在推进可视化脚本的轻量化,但在近来的游戏中,有时会几乎同时生成数千个单位的对象,这对可视化脚本来说确实很吃力……因此我们准备了功能有所精简、但即使大量放置也不会变重的东西。感觉上就像弹幕系统中的弹幕一样。
-
新增了「得分掉落物」,专门用于金币、经验宝珠之类「大量散落、对象靠近时会移动、被拾取后改变变量」的功能。即使数千个单位同时出现也应该能正常运作。
-
新增了相当于前作「机关地砖」的「机关对象」。把会大量放置的可破坏墙壁等改用它,即使放置数百个单位,应该也不会出现运行性能上的问题。另外,这属于个人爱好层面的话题——我很喜欢某个粉红色圆球角色的游戏里常见的连锁破坏的墙壁,所以也把这个功能加了进去。

针对可视化脚本负担的对策我们会持续进行,但像弹幕以及这些存在极限的部分,我们打算通过准备这类新东西来应对。
◆6. 「共享面板(黑板)」功能
黑板是 AI 开发等领域常用的功能,因为看起来很方便,我们便引入了它。概念上稍微有点难理解……但总之,把它当成「能做的事变多了的变量/开关」来理解就可以了。 变量原本只能处理 float(浮点数)类型,现在可以处理 int(整数)类型和 str(字符串)类型了。
由于 float 的限制,原本连小数点在内只能处理 6 位数,现在则可以处理数亿的分数等等。 只说这些的话,大家可能会觉得「那又怎样?」——但最大的一点是,现在可以把「目标对象」以列表的形式存储了。
例如,可以做到「把距离玩家半径 500px 以内、按『HP』变量从高到低排序的前 3 个对象记录到共享面板」这样的事。 而且,可以把共享面板中的对象用作「更改属性」动作的目标,或子弹的发射/追踪目标。

只要用得好,就能实现例如「把『HP』最高的对手的『中毒』开关打开」这样的事。此外,通过把列表指定为追踪目标,还能实现「朝自己附近的 3 个敌人发射追踪导弹」这类类似多重锁定的动作。
◆7. 可视化脚本的功能强化
这是最大的变更。我们准备了「子图层功能」和「ACTION GAME MAKER 调试监视器」这两项功能。
◯「子图层功能」
这是用于在一个可视化脚本中同时处理多套逻辑的功能。例如,此前若想实现类似「霸体」这种不执行受伤动作、但又想进行与受伤相关的处理……那就只能采用组合多个游戏对象的手段;而使用这项功能,就能用一个游戏对象完成各种处理了。 由于可以减少游戏对象的数量,既能实现轻量化,也能避免因组合多个对象而带来的复杂性。 需要注意的是,为避免冲突,只有「主图层」才能处理动画。
◯「ACTION GAME MAKER 调试监视器」
此前调试功能一直依赖「输出到控制台」或 GDScript,官方始终未能提供相应的工具,如今终于准备好了。它是对前作 Pixel Game Maker MV 中可从 F1 菜单显示的功能加以强化后的版本,可以查看对象的状态与输入、变量的状态、迁移状态等。
变量可以在调试监视器一侧输入并强制修改,我想这样一来调试应该会变得轻松许多。
◆结语
介绍再写下去实在太长,所以本次就到这里,不过还有其他的新功能,难得有这个机会,就把名称列出来吧。抓住梯子、不经过加载的快速重来、返回最后所站的落脚平台、自动保存、沿着路线移动的平台对象、以「最后接触到的」对象为目标……等等。
虽然我也想在将来好好介绍一番,但恐怕直接让大家上手体验反而更快。
关于版本 2.0「制作模式」,我们预计将在近日公开「Beta 版」。 预计采用在 Steam 上切换到专用分支的形式。
非常希望大家来试试,但公开的终究只是「Beta 版」。我们打算确保不会对既有项目造成不可逆的影响,但可能性并非为 0,因此使用时请务必做好备份。
另外,尤其是 2.0 中追加的新功能,有可能在没有预告的情况下发生变更,届时也可能出现新动作中已设置好的属性丢失的情况,这一点还请大家谅解。
那么,今后也请继续支持 ACTION GAME MAKER。

