发布于 2026-01-06 13 阅读
0

让我们通过制作一款无尽跑酷游戏来学习 Godot 3D - 第一部分:项目概览与设置 👟

让我们通过制作一款无尽跑酷游戏来学习 Godot 3D - 第一部分:项目概览与设置 👟

许多游戏玩家和新兴开发者或许会惊讶地发现,通常以 2D 功能著称的 Godot,其实早在 2007 年就已问世。尽管 Godot 在 2014 年才进入公有领域,但它从一开始就悄然具备 3D 支持。近年来,Godot 的 3D 支持更是彻底改变了游戏格局,我们看到越来越多的 3D 游戏都是用 Godot 制作的。原因显而易见——Godot 为像你我这样的独立开发者提供了一个用户友好的平台,它不仅占用系统资源少,而且功能强大,足以将我们的创意愿景以三维形式呈现出来!

当我着手制作面向初学者的3D游戏教程系列时,最初的想法是制作一款3D钓鱼游戏,玩家需要在倒计时结束前完成QTE(快速反应事件)来捕获每个关卡中一定数量的鱼。最初,当我开始使用Godot 4开发这款游戏时,遇到了许多障碍,因为Godot在3D建模方面需要大量的手动操作。摄像机、环境、玩家角色——所有的一切——都必须从零开始构建,因此,在反复试错的过程中遇到的各种bug反而让整个过程变得更有趣了!

Godot 3D 无尽跑酷

Godot 3D 无尽跑酷

图 4:救命,我摔倒了,起不来了!

直到我完成这款钓鱼游戏——最终效果还不错——我才意识到一件重要的事情:这款游戏对新手来说太复杂了。钓鱼机制和背后的逻辑都相当高级,世界构建部分也让人应接不暇。

对于一个刚开始用 Godot 4 进行 3D 开发的人来说,这显然不够用。于是,我灵光一闪,心想:“为什么不做点新的东西呢?” 我决定开发一款更注重基础的游戏——比如动画、镜头控制、程序生成的世界等等。关键是要保持简单,不要太长。我想要一款任何人都能轻松上手、不会感到迷茫的游戏,一款有趣且直奔主题的游戏。答案就是:一款无尽跑酷游戏。

Godot 3D 无尽跑酷

图 5:我们的 3D 无尽跑酷游戏《Dock & Roll》预览

无尽跑酷游戏的世界多年来一直吸引着玩家,像《地铁跑酷》和《神庙逃亡》这样的热门游戏更是家喻户晓。对于新手玩家来说,无尽跑酷游戏提供了绝佳的学习体验。这类游戏难度循序渐进,让玩家能够按照自己的节奏熟悉游戏机制和操作。随着游戏的进行,玩家可以解锁新的障碍、关卡,甚至自定义游戏体验。

如果您有兴趣,可以在这里测试我们的无尽跑酷游戏最终效果。您也可以在这里了解更多信息,包括观看该项目的演示视频

在我们的无尽跑酷游戏《Dock & Roll》中,玩家将进入一个程序生成的关卡。按下开始键后,玩家将开始与时间赛跑,关卡也会随着玩家的前进而程序化生成。玩家必须跳过障碍物并收集各种道具,包括金币(提升分数)、旗帜(减少游戏时间)和宝石(提升跳跃高度)。如果玩家坚持到时间结束,即可完成关卡。之后,游戏难度将提升,速度更快,障碍物也更加复杂。玩家拥有三条命,如果生命值耗尽或撞到障碍物,则必须重新开始关卡。我们还将加入关卡保存和读取功能,让玩家可以随时休息而不会丢失进度。

Godot 3D 无尽跑酷

图 6:游戏及游戏循环概览。您可以在这里查看本手册中所有 Excalidraw 绘图板。

我们将分阶段开发游戏,重点关注构成游戏的七个要素。这些要素构成了一个复杂的系统,它们协同运作,共同打造出流畅且引人入胜的无尽跑酷游戏体验。这七个要素分别是:

1. 玩家:这是游戏的主角,由用户控制。玩家负责在游戏世界中穿梭,包括在平台上奔跑、躲避各种障碍物、收集道具,并最终根据结果面对胜利或失败的画面。

2. 世界:该实体是游戏环境的骨架。它通过生成平台、障碍物、收集品以及玩家与之碰撞的环境本身来动态生成游戏空间。

3. 障碍物:这些是设置在游戏世界中用来考验玩家的挑战。每种障碍物都有其特定的行为模式,该实体负责管理它们的生成逻辑和移动,从而使游戏更具趣味性和挑战性。

4. 收集品:收集品既是奖励也是辅助工具,种类繁多,每种收集品都有其独特的生成逻辑和移动方式。玩家收集这些收集品可以提高分数、获得跳跃加成或影响游戏时间。

5. HUD(抬头显示器):游戏中的这一元素为玩家提供实时信息,例如剩余生命数、剩余时间、当前得分以及任何激活的道具或增益效果。它对于让玩家了解自己在游戏中的状态至关重要。

6. 全局变量:该实体充当游戏的管理者,是一个自动加载的单例。它管理可以多次生成的场景,跟踪关卡变量,并处理游戏中的信号。它还负责保存/读取系统,确保玩家可以继续他们的游戏进度。

7. 主程序:包含玩家和世界生成器,处理游戏的环境方面,并负责主菜单,允许玩家开始或退出游戏,或加载已保存的游戏。

Godot 3D 无尽跑酷

图 7:我们游戏实体的概览。

*请注意,本手册面向初级到中级开发人员,但我假设您已掌握 GDScript 的基础知识。如果您对 GDScript 或编程一无所知,请先参加这个免费研讨会

事不宜迟,让我们开始项目设置吧。打开 Godot 4 编辑器,创建一个新项目。我们将其命名为 Dock&Roll,并使用 forward+ 模式运行,因为这是一个 3D 游戏,需要更高的处理能力和图形渲染能力。

Godot 3D 无尽跑酷

我们需要导入项目中使用的所有资源。你可以在我的GitHub 仓库中找到我为本项目整理的所有 CC 许可资源的版权信息,该仓库还包含本项目的分段源代码。你可以使用分段源代码将你的代码与每个部分末尾的代码进行比较。现在让我们下载资源。你可以直接从我的 Google 云端硬盘下载,链接在此

下载完成后,解压缩 Assets 文件夹,然后将其中的 Assets 文件夹拖到您新建的项目中。

Godot 3D 无尽跑酷

Godot 3D 无尽跑酷

你会看到,在这个新导入的 Assets 目录下有很多文件夹。每个文件夹都包含项目中各个实体的资源。这些资源大多是.fbx格式。.fbx 文件格式,即 Filmbox 的缩写,是一种常用的 3D 模型、动画和场景文件格式。我们之所以导入 .fbx 文件,是因为它可以存储资源的网格、骨骼、碰撞和动画。Godot 也支持 .glb/.gltf 资源,这些文件存储的是资源的几何体、材质和动画(如果有),而不是像碰撞这样的游戏特定功能。

Godot 3D 无尽跑酷

我们需要在文件系统面板中创建两个新文件夹:一个用于存放场景,另一个用于存放脚本。要创建文件夹,只需在文件系统面板中单击鼠标右键,然后选择“新建文件夹”。让我们创建这两个文件夹,分别命名为“脚本”和“场景”。

Godot 3D 无尽跑酷

Godot 3D 无尽跑酷

在 Scenes 文件夹中,我们创建第一个场景,也就是主场景。主场景将作为游戏元素的核心容器。我们将在这里添加环境、玩家和可生成的世界,以便开始游戏。主场景也会在游戏启动时自动运行。

要添加场景,您可以右键单击文件系统面板,然后像添加文件夹一样添加它,或者您可以单击加号图标或在场景停靠栏中选择“3D 场景”选项。

让我们创建一个新的3D场景。

Godot 3D 无尽跑酷

现在您可以看到,Node3D节点已添加为根节点,但场景尚未保存。请在上方“场景”菜单中保存,或使用快捷键 CTRL + S。将场景另存为“Main”,并保存在“场景”文件夹中。

Godot 3D 无尽跑酷

Godot 3D 无尽跑酷

Godot 3D 无尽跑酷

让我们把这个根节点重命名为“Main”。由于根节点是场景层级结构中的主节点或顶层节点,最好将节点名称与场景名称保持一致。这样做是为了方便我们在其他场景中实例化这个场景时,能够识别出这个节点属于“Main”场景。

要重命名此节点,只需双击它即可。

Godot 3D 无尽跑酷

要查看您的 3D 场景,请打开您的 3D 工作区。

Godot 3D 无尽跑酷

我们将把这个场景设置为游戏运行时屏幕上显示的第一个场景。这样,按下 F5 键,这个场景就会打开。为此,我们需要在项目设置中将其设置为主场景。打开项目设置,在“应用程序”>“运行”下,将主场景更改为您的主资源。

Godot 3D 无尽跑酷

在设置界面,我们还需要更改项目的抗锯齿设置。稍后生成平台时,您可能会注意到网格出现抖动或闪烁,这是因为默认情况下抗锯齿是禁用的。

抗锯齿是计算机图形学中的一种技术,用于减少高分辨率图像在低分辨率下显示时出现的视觉缺陷。这些缺陷通常表现为对角线和曲线上的锯齿状边缘,称为“锯齿”。抗锯齿技术可以平滑这些边缘,使线条看起来更笔直,整体图像更加清晰。

Godot 3D 无尽跑酷

图 8:启用和禁用抗锯齿功能后的水样效果。

在项目设置中,转到“渲染”>“抗锯齿”,然后我们按如下方式更改设置:

Godot 3D 无尽跑酷

  • MSAA 3D — MSAA 是一种空间抗锯齿技术,它通过在不同的采样点对像素进行多次采样,然后对结果取平均值来平滑边缘,从而获得更平滑的过渡。“8x”设置意味着引擎将对每个像素进行 8 次采样,这可以提供高质量的抗锯齿效果,但同时也是最消耗性能的。

  • 屏幕空间抗锯齿 (FXAA) — FXAA 是一种屏幕空间抗锯齿算法,速度比 MSAA 快,但有时会导致图像轻微模糊。我们将其设置为“快速”,因为该算法通常在图像渲染完成后应用。

  • TAA(时间抗锯齿)——结合过去帧的信息(时间数据),生成更平滑的边缘并减少运动中的闪烁。但是,它也可能引入一些运动模糊,并且可能对性能要求更高。

最后,我们将添加游戏的所有输入动作。这些动作指的是物理控制器,例如键盘按键、游戏手柄、按钮等等,我们将把它们映射到相应的功能上,从而控制角色在游戏中的移动。我们只需要创建玩家跳跃的输入动作,因为左、右、上、下的移动输入已经添加好了。要添加输入动作,请转到“项目设置”>“输入映射”。

Godot 3D 无尽跑酷

Godot 4 内置了一些输入操作。要查看这些操作,请启用“显示内置操作”开关。**ui_** 代表“用户输入”,您不必在以后的输入操作中遵循此命名约定,但为了本项目,我们将保持代码的一致性。

Godot 3D 无尽跑酷

你会看到 Godot 已经预先配置好了角色向左、向右、向上和向下移动的输入。它分别将键盘上的上、下、左、下四个按键分配给了这些操作。你可以点击按键旁边的铅笔图标来编辑它们,甚至可以删除它们。你还可以点击按键旁边的加号图标,为这些输入分配其他按键。

让我们添加一个名为“ui_jump”的新输入,并将键盘上的空格键分配给此输入操作。

Godot 3D 无尽跑酷

Godot 3D 无尽跑酷

恭喜!你已经学会了如何使用 Godot 编辑器,以及如何使用节点和场景——这些都是你游戏开发过程中会用到的核心基础知识。建议你为你的项目创建一个 GitHub 仓库,以便定期备份项目。准备就绪后,我们进入下一部分,我们将设置游戏环境——包括光照、雾效和天空球。


解锁系列!

本系列将制作成视频系列,发布在我的 YouTube 频道上。如果您喜欢本系列并想支持我,您可以向我的 KoFi 商店捐赠任意金额,或者您可以购买售价 4 美元的离线 PDF,其中包含整个系列的便携小册子!

这份 PDF 文件提供“学习 Godot ”PDF 手册的完整离线版本,供您终身使用。这份 291 页的文档按顺序包含了本系列的所有教程,如果您遇到任何问题或需要帮助,我还会提供专属的帮助。这意味着您无需等待我在 YouTube、Dev.to 或 Medium 上发布下一部分教程。您可以随时随地按照自己的节奏继续学习!

Godot 3D 无尽跑酷

本书将不断更新,以修复新发现的错误,或修复与 Godot 4 新版本之间的兼容性问题。

文章来源:https://dev.to/christinec_dev/lets-learn-godot-3d-by-making-an-endless-runner-game-part-1-project-overview-setup-4c42