教程:“从零开始学习ACTION GAME MAKER” – 第5章

第 5 章:完善演示并导出游戏

在本章中,我们将介绍如何完善已完成游戏的演示效果,并使其能够在 PC 上运行。


思考演示中缺失的内容

尽管游戏在技术上已经完成,但屏幕仍显得有些单调。我们可以添加什么内容使其更像一款真正的游戏?

  • 首先,没有背景,因此添加背景会有所帮助。
  • 由于这是一款关于击败敌人的游戏,应该在敌人被击败时添加效果,类似于玩家的“失败”效果。
  • 目前没有声音,因此我们还需要添加背景音乐和音效
  • 最后,拥有一个标题画面会让游戏感觉更加完善。

当然,还有许多其他细节可以添加,但有了这些元素,游戏应该已经感觉更像一款完整的产品了。

让我们开始创建它们吧!

创建视差背景

在 Godot 中,您可以使用 Parallax2D 节点来创建视差背景。视差背景通过让较近的物体移动较快、较远的物体移动较慢(相对于摄像机),从而营造出深度感。这种效果您可能在现代智能手机的锁屏上见过,即倾斜手机时背景图像似乎会发生偏移。

ACTION GAME MAKER 中,每个游戏场景层(Base / Wall / NearView / MiddleView / DistantView)均使用 Parallax2D 构建,从而允许您创建视差背景。

我们将使用以下图像。将其加载到项目中,然后设置其视差和循环属性。


步骤

  1. 将图像保存到您的 PC。由于系统限制,如果直接下载,文件将被自动压缩。请在保存前点击图片将其放大。

  2. 将保存的 mountain.png 文件拖放到 FileSystem 中。

  3. 切换到场景标签页 stage1,并将编辑器视图切换为 2D

  4. 在场景窗口中,选中 MiddleView (Parallax2D) 层下的 Sprite2D 节点。

  5. 在检查器中,将 mountain.png 拖放到 Texture 属性中。

  6. 在场景窗口中,选中 MiddleView (Parallax2D) 层本身。

  7. 在检查器中,将 Scroll Scale 设置为 x=0.7, y=0.7

    • 设置后,当摄像机和玩家移动距离为 1 时,背景仅移动 0.7,从而产生深度感。
  8. 接下来,展开检查器中的 Repeat 部分。

  9. 设置以下值:

    这意味着 mountain.png(宽度为 1080 像素)将水平方向连续重复 10 次。

  10. 运行测试。如果设置正确,山脉的移动速度将比玩家慢,从而营造出深度感。


故障排除

  • 背景循环显示异常 → 检查 MiddleView (Parallax2D) 中的 Repeat 设置。

  • 背景速度看起来没有差异 → 检查 MiddleView (Parallax2D) 中的 Scroll Scale 是否设置正确。

为敌人添加死亡效果

我们可以使用与玩家相同的方法。让我们为 Vanish 状态添加一个“死亡粒子”显示。

如果我们直接添加粒子显示,敌人消失的同时粒子也会出现,导致粒子立即消失。为了解决这个问题,我们将使用 Wait 动作让粒子保持可见一段时间。

然而,这里有两个问题需要解决:

  1. 在“Vanish”动作执行之前,敌人仍在移动——因此看起来敌人仍然处于活动状态,其攻击碰撞体也完好无损。

  2. 我们需要在击败序列中禁用敌人的攻击碰撞体。

对于第一个问题(移动):
问题是“Template Move”仍然处于活动状态。您可以使用“Template Move: Stop”动作,或者在状态中将移动速度设置为 0。我们将采用后一种方法。

对于第二个问题(攻击碰撞):
我们需要禁用攻击碰撞。这可以通过 ChangeObjectProperty 动作实现,启用 AttackCollision 的“Disabled”属性。“Change Property”动作允许您修改检查器属性以及变量和开关。

让我们逐步进行设置。


添加“DisplayParticle”

  1. 打开 enemy 场景标签页,并将编辑器切换为 Script 视图。

  2. 选择 Vanish 状态,然后点击 + Add Executable Action

  3. 选择 DisplayParticle

  4. 对于粒子对象路径,选择 death_particle.tscn,然后点击 Add


添加“Wait”

  1. 添加另一个执行动作,并选择 Wait

  2. 由于粒子显示持续 1 秒,将等待时间设置为 1.0 秒,然后点击 Add


在此状态中将移动速度设置为 0

  1. 在检查器中展开 Action Settings

  2. 在“Horizontal Speed Multiplier”下,将值从 100 改为 0


使用“Change Property”禁用攻击碰撞

  1. 添加另一个可执行动作。

  2. 选择 Change Property 并按如下方式设置:

  • Target Object Type: Object Property

  • Target Type: Self

  • Target Node Name: AttackCollision

  • Target Object Name: disabled

  • Constant Value: On

这将启用 AttackCollision 节点的“Disabled”属性。


排列动作顺序

确保执行顺序正确。拖动带有三条线图标的动作,直到顺序如下:

  1. DisplayParticle

  2. ChangeObjectProperty(禁用碰撞)

  3. ChangeObjectProperty(减少剩余敌人数量)

  4. Wait

  5. RemoveSelf


测试行为

运行测试并检查:

  • 击败敌人时,粒子效果会出现。

  • 击败敌人后,与其碰撞不再造成伤害。


故障排除

  • 没有效果出现,敌人立即消失
    检查“RemoveSelf”是否是序列中的最后一个动作

  • 击败敌人后玩家仍然受到伤害
    验证 ChangeObjectProperty 动作是否正确启用了 AttackCollision 上的 disabled 属性。

添加声音:在动作游戏制作器中管理音频

接下来,让我们设置声音系统。首先,我们需要考虑哪些声音是必要的。

对于BGM(背景音乐),我们至少需要两首曲目:

  • 一首用于关卡
  • 一首用于标题画面(稍后创建)

对于SE(音效),根据对象不同需要多种音效:

  • 玩家
    • 跳跃音效
    • 射击音效
    • 受伤音效
    • 失败音效
  • 敌人
    • 受伤音效
    • 失败音效
  • 关卡完成
    • 关卡完成音效(由“剩余敌人管理器”处理)

总计需要2首BGM7个SE


动作游戏制作器如何管理声音

在动作游戏制作器中,所有声音都通过专用的声音数据库进行管理。
在声音数据库中注册的BGM和SE可以通过可视化脚本中的**“播放音频”**动作进行播放。

因此,第一步是将我们的音频文件注册到声音数据库中。


在声音数据库中注册声音

我们将使用准备好的2首BGM7个SE,它们包含在文件**sounds.zip**中。
该压缩包包含所有必要的声音文件,并已按文件夹组织好。

sounds.zip (1.4 MB)

步骤:

  1. sounds.zip保存到您的PC上。

  2. 解压zip文件的内容。

  3. 将解压后的sounds文件夹拖放到文件系统面板中。

  4. 确保文件夹结构如下所示:

res://sounds/
   ├── bgm/
   └── se/

:warning: 如果您看到重复的结构,例如 res://sounds/sounds/bgm,请在文件系统面板中移动文件夹,直到其符合上述正确的格式。

  1. 点击左上角的数据库按钮。

  2. 数据管理窗口中,切换到音频数据库选项卡。

  3. 点击批量设置按钮。

这将自动扫描文件夹(res://sounds/bgmres://sounds/se)并注册所有9个声音文件。如果您看到所有条目都正确列出,则设置完成。


故障排除

  • 如果声音未显示:
    请检查sounds文件夹是否直接位于 res:// 下,而不是嵌套在另一个文件夹中。

:white_check_mark: 现在,声音已准备好通过“播放音频”动作在可视化脚本中使用。

为角色添加音效

现在开始设置音效(SE),首先从角色开始。我们将为每个状态添加音效:跳跃射击受到伤害失败


为“跳跃”状态添加音效

  1. 切换到场景标签页 player,并将编辑器切换为 Script 视图。

  2. 选择 Jump 状态。

  3. 在检查器(Inspector)中,点击 + Add Executable Action

  4. 选择 PlayAudio 动作。

  5. 在“音频数据 ID”(Audio Data ID)字段中,选择 se_player_jump (se_player_jump.ogg),然后点击 Add

  6. 运行测试播放。如果设置正确,按下 Z 键 跳跃时应播放跳跃音效。


为“地面射击”、“空中射击”和“移动射击”添加“播放音频”动作

接下来,我们将添加子弹射击的音效。由于有三个射击状态,需对每个状态重复设置。

  1. 选择 Ground Shot 状态。

  2. 在检查器中,选择 + Add Execution Action

  3. 选择 Audio Sound

  4. 将“音效数据”(Sound Data)设置为 se_player_shot (se_player_shot.ogg),然后点击 Add

  5. 你可以对其他状态重复此过程,但请注意,执行动作也可以复制和粘贴。我们在这里使用这种方法。

  6. 右键点击已添加的 PlayAudio 动作,选择 Copy

  7. 选择 Moving Shot 状态。

  8. 在检查器中,将“执行动作”(Execution Actions)的数量从 1 改为 2

  9. 会出现一个新的 <empty> 槽位。右键点击它并选择 Paste

  10. 如果出现了“PlayAudio”动作,说明操作成功。

  11. 选择 Air Shot 状态,并重复步骤 7–10 以粘贴该动作。

  12. 运行测试播放。在站立、移动或跳跃时,按下 X 键 射击应播放相同的射击音效。


为“伤害”状态添加“播放音频”

现在,让我们为 受到伤害 状态添加音效。过程相同,以下是简要步骤:

  1. 添加一个 PlayAudio 动作,将“音频数据”设置为 se_player_damage (se_player_damage.ogg)

  2. 由于“伤害”状态已包含一个 Wait 动作,请将“播放音效”动作拖到 Wait 动作上方,以便音效立即播放。

  3. 运行测试播放。当角色与敌人碰撞时,应播放伤害音效。


为“死亡”状态添加“播放音效”

  1. 选择 Death 状态。

  2. 添加一个 Play Sound 动作,并选择 se_player_down (se_player_down.ogg)

  3. 运行测试播放。当角色掉入坑中或 HP 归零时,应播放失败音效。


:white_check_mark: 至此,角色的所有音效设置已完成。

将 SE 添加到敌人

接下来,让我们为敌人设置 SE。
有两种类型的声音:伤害声音失败声音

然而,与玩家不同,敌人没有专用的Damage状态。
在这种情况下,您可以使用TakenDamageSettings节点,它提供了一种在敌人受到伤害时触发声音的方法。


使用 TakenDamageSettings 节点播放 SE

  1. 将场景选项卡切换为enemy

  2. 在场景窗口中,选择TakenDamageSettings节点。

  3. 在检查器中,展开Damage Taken Data List

  4. 点击**+ Add Damage Taken Setting**。

  5. 点击<empty>并选择New TakenDamageData

  6. 展开新创建的TakenDamageData

  7. 展开Other Settings

  8. Play Sound设置为On,并在Audio Data ID中选择se_enemy_damage

  9. 运行测试播放。如果设置正确,用子弹击中敌人现在应触发伤害 SE。


将“播放声音”添加到敌人的“消失”状态

对于失败 SE,我们将像处理玩家一样将其添加到 Vanish 状态。

  1. 选择Vanish状态。

  2. 点击**+ Add Executable Action**。

  3. 选择PlayAudio,并将声音数据设置为se_enemy_down (se_enemy_down.ogg)

  4. 重新排列动作,使PlayAudio位于Wait动作之前

  5. 运行测试播放。如果设置正确,击败敌人现在应触发失败 SE。


:white_check_mark: 至此,敌人现已正确配置了伤害 SE失败 SE

设置舞台背景音乐和通关音效

对于背景音乐(BGM),第一步是在导入设置中启用循环播放。之后,开始舞台背景音乐的最佳位置是在始终可见的剩余敌人管理器对象的**“计数”**状态中。

对于通关音效(SE),您可以在同一对象的**“通关”**状态中进行设置。


在导入设置中循环播放背景音乐

文件系统中选择资源后,您可以在导入选项卡(位于场景选项卡旁边)中更改资源设置。

  1. 文件系统中,进入 sounds/bgm 文件夹并选择 bgm_stage1.ogg

  2. 将场景面板上方的选项卡切换为导入

  3. 在导入面板中,启用循环,然后点击重新导入 (*)

  4. 当“重新导入资源”进度条完成并消失后,更改即完成。

  5. bgm_title.ogg 也重复步骤 2–4,以便两个背景音乐都能正常循环。


在“计数”状态中播放舞台背景音乐

由于背景音乐是通过播放音频动作播放的(与音效相同),因此过程与之前相同。

  1. 将场景选项卡切换为剩余敌人管理器

    image

  2. 选择计数状态。

  3. 添加一个播放音频动作,并将音频数据设置为 bgm_stage1

  4. 测试播放以确认背景音乐在关卡开始时启动。


在“通关”状态中播放通关音效

  1. 选择通关状态。

  2. 添加一个播放音频动作,并将音效数据设置为 se_stageclear

  3. 测试播放以确认当所有敌人被击败后,音效会播放一次。


:white_check_mark: 如果出现问题,请检查以下事项:

  • 确保 sounds 文件夹直接位于 res:// 下(不要嵌套在其他文件夹中)。

  • 确认已为背景音乐启用循环设置并重新导入了资源。

  • 确保播放音频动作放置在正确的状态中(BGM 在 Count,SE 在 Stage Clear)。

设置标题屏幕

现在让我们创建并配置标题屏幕。

我们将把它作为一个新游戏场景来创建,然后按下一个按钮即可过渡到stage1

ACTION GAME MAKER 提供了一个专用的SceneTransition功能来实现这一点。

因此,让我们创建一个标题屏幕场景,设置好它,然后使用 SceneTransition 将其连接到 stage1。


规划标题屏幕

由于这是一个简单的游戏,标题屏幕将仅包含:

  • 一张背景图片

  • 一个标题标志

  • 在背景中播放的BGM

  • 以及按下跳跃(Z 键)即可过渡到stage1

实际上,这意味着创建一个新的游戏场景,在UI 层中使用Sprite2D作为背景,并添加一个UI 游戏对象来显示标题标志并播放声音。

就像在可视化脚本中一样,SceneTransition 允许我们设置由特定按键输入触发的场景过渡。这就是我们设置跳跃键过渡的方法。


创建标题屏幕游戏场景

  1. 打开一个新场景标签页

  2. 对于根节点,选择Game Scene

  3. 立即将场景保存为title_scene.tscn


为标题屏幕场景添加背景

  1. 使用为标题屏幕准备的背景图片。(右键将其保存到 PC。)

  2. title_bg.png从您的 PC 拖入文件系统以导入它。

  3. 在场景面板中,选择UI 层

  4. 从文件系统拖入title_bg.png到编辑器中,同时按住SHIFT键。

    • 按住 SHIFT 可确保图像作为所选节点的子节点放置,在本例中即为UI 层
  5. 确认背景已作为 UI 层的子节点放置。

    • 如果放置错误,请将场景树中的TitleBG 节点拖到正确的位置。
  6. 此背景图片的尺寸与相机完全匹配:宽度1152 × 高度648

    • 如果未对齐,灰色背景将会显示出来。因此,让我们精确调整它。
  7. 选中TitleBG 节点,在检查器中展开Transform部分。

  8. 设置Position X = 576, Y = 324

    • 由于图像的枢轴点是其中心,将其放置在相机宽度和高度的一半处即可完美对齐。

:white_check_mark: 此时,您应该已经拥有一个放置整齐的标题屏幕背景。

创建“标题标志”游戏对象

  1. 打开新场景标签页,在创建根节点下选择游戏对象

  2. 设置对象名称title_logo使用模板UI类型,然后点击创建

  3. 右键点击未保存,将场景另存为title_logo.tscn

  4. 右键点击下图以将其保存到您的 PC。

  5. title_logo.png拖入文件系统以导入它。

  6. title_logo.png从文件系统拖入编辑器,将其放置在场景中。


为标题标志游戏对象添加可视化脚本

此对象仅需播放背景音乐——因此一个状态和一个动作就足够了。

  1. 选择title_logo (游戏对象)节点,然后点击:scroll:+ (附加脚本)

  2. 保留默认名称,然后点击创建

  3. State001重命名为Title,然后点击**+ 添加可执行动作**。

  4. 选择播放音频

  5. 对于音频数据,选择bgm_title (bgm_title.ogg),然后点击添加


title_logo 放置在标题场景 (title_scene) 中

  1. 切换到title_scene标签页和2D编辑器。

  2. 选择UI层下的TitleBG节点。

  3. title_logo.tscn从文件系统拖入场景以放置它。

    • 如果它没有显示,可能是位于背景之后。在场景树中,确认 title_logo 节点是UI 层的子节点,并且位于 TitleBG 下方(即前方),如参考图所示。

从标题屏幕创建场景过渡到 Stage1

现在,是时候设置从标题屏幕到 Stage1 的场景过渡了。

场景过渡编辑器的工作方式与视觉脚本编辑器几乎相同。

步骤如下:

  1. 在场景过渡编辑器中加载 title_scene.tscn
  2. 将初始场景设置为 title_scene.tscn
  3. 定义从 title_scene.tscnstage1.tscn 的过渡条件。
  4. 配置过渡效果。

步骤

  1. 将编辑器标签页从 2D 切换到 SceneTransition

    image

  2. 在编辑器窗口(类似于视觉脚本视图)中,从文件系统拖放 title_scene.tscn 到工作区。

  3. 右键点击 title_scene,从菜单中选择 设置起始场景

  4. 接下来,添加一个链接。右键点击 title_scene,选择 添加链接,并将其连接到 stage1

  5. 在检查器中,展开 切换条件

  6. 启用 输入触发

  7. 在输入操作列表中,点击 + 添加输入,选择 <空>,然后选择 新建输入条件

  8. 展开新的输入条件并设置:


切换前效果

  1. 展开 切换前效果 部分。

  2. 设置以下内容:

    • 过渡类型:向上滑动
    • BGM 设置:停止
    • 是否淡出:开启
    • 播放音效:开启
    • 音效:se_enemy_damage (se_enemy_damage.ogg)

    通过此设置,当过渡开始时,标题屏幕将向上滑动,同时播放“敌人受击”音效,背景音乐将逐渐淡出并停止。


切换后效果

  1. 展开 切换后效果 部分。

  2. 设置过渡类型为:向下滑动

    这将使 Stage1 在标题屏幕向上滑动的同时向下滑入视野。


测试您的场景过渡

运行测试。如果设置正确,游戏应从标题屏幕开始,按下 Z 键 将触发过渡效果并切换到 Stage1。


:white_check_mark: 故障排除清单

  • Stage1 立即开始: 检查初始场景是否正确设置为 title_scene,并且您是否使用 运行项目 (F5) 运行了项目。
  • 场景过渡不起作用: 重新检查从 title_scenestage1 的链接及其输入条件是否正确设置。

导出游戏

至此,游戏已完成。
到目前为止,测试游玩只能通过 ACTION GAME MAKER 进行,这意味着只有安装了 ACTION GAME MAKER 的人才能运行它。

但是,通过使用 导出 功能,您可以使游戏独立可玩,这样任何人都可以游玩。

让我们尝试为 Windows PC 进行导出。


导出游戏

  1. 项目 菜单中,选择 导出

  2. 导出窗口将打开。点击 添加 按钮并选择 Windows 桌面
    (在此示例中显示了六个导出目标,但截至 1.1.0 版本,ACTION GAME MAKER 仅正式支持 Android、Web 和 Windows 桌面。)

  3. 首先,指定导出路径。默认情况下,构建将直接创建在 res:// 下,这会与项目资源混合。让我们创建一个单独的文件夹。
    点击导出路径字段右侧的 :page_with_curl: 图标。

  4. 项目文件夹(与文件系统相同)将显示出来。右键单击并创建 新文件夹

    注意:
    您也可以将导出路径设置在文件系统之外。为了清晰起见,这次我们将其保留在项目文件夹内,但在实际操作中,您可能希望导出到更方便的位置。

  5. 将新文件夹命名为 export 并点击 确定

  6. 在新创建的 export 文件夹内,将文件保存为 tutorial
    (这将是可执行文件的名称。)

  7. 确认导出路径如下所示:
    res://export/tutorial.exe

  8. 接下来,配置选项。将 导出控制台包装器 设置为
    (这决定了是否显示调试控制台窗口。)

  9. 点击 导出项目 按钮。

  10. 将弹出一个保存窗口,显示您之前设置的文件夹和可执行文件名。只需按 保存

  11. 将显示一个进度条,提示“打包中…”;稍等片刻,等待过程完成。

  12. 完成后,您可能会看到以下警告:
    这意味着工具 rcedit(用于设置可执行文件的元数据,如图标和作者名称)运行失败。由于我们尚未配置这些设置,可以忽略此警告。
    输出日志中也可能出现类似的错误(ERROR: Could not create child process: rcedit export/tutorial.exe --set-icon…)。这也可以忽略。


测试导出的游戏

  1. 关闭导出窗口。

  2. 在文件系统中,右键单击 export 文件夹并选择 在文件管理器中打开

  3. Windows 资源管理器将打开。您应该看到两个文件:tutorial.exetutorial.pck

    • tutorial.exe 是可执行文件(游戏本身)。

    • tutorial.pck 包含必要的资源。

  4. 双击 tutorial.exe 启动它。
    将出现一个标题为 Tutorial (DEBUG) 的窗口,您应该可以开始游玩您的游戏。


现在,您的游戏可以在任何 Windows PC 上运行——无需 ACTION GAME MAKER。

如果您想分享您的游戏,只需分发 tutorial.exetutorial.pck 即可。

结论

你做到了——你现在是一名游戏创作者!
这可能是一款小游戏,但你已成功从头到尾完成了一个完整的项目。

恭喜! :tada:

当然,你或许还想添加更多内容:

  • 二段跳

  • 墙壁踢

  • 滑行

  • 蓄力射击

  • 武器切换

  • 与 Boss 的战斗……

即使仅在这款游戏中,也有无数创意可以尝试。也许你已经开始构思创作完全不同类型的游戏了。

从今往后,由你来打造任何你想制作的游戏!

过程中或许会感到挑战重重,但通过本教程,你已经掌握了游戏开发的基础以及 ACTION GAME MAKER 的核心概念。凭借你如今所学的知识,再加上一点想象力,你就能创造出各种类型的游戏。

只要你能想到:“如果我将这个动作与这个条件结合,或许能实现……”那你就走在正确的道路上。

如果你感到卡住或灵感枯竭,可以尝试在 RPG Maker Guild 中搜索,或在官方 Discord 社区 提问。

你可以使用 RPG Maker Guild 右上角的搜索栏来查找相关话题。

官方 Discord 社区支持频道:
:link: https://discord.gg/vfaV86vYd9