Godot的设计理念

既然您已经小试身手,让我们谈谈Godot的设计。

每个游戏引擎都不同,以满足不同的需求。 它们不仅提供一系列功能,而且每个引擎的设计都是独一无二的。这导致形成游戏结构的不同工作流程和方法。这一切都源于它们各自的设计理念。

这个页面是为了帮助您理解Godot的工作原理,从它的一些核心支柱开始。它不是可用特性的列表,也不是引擎比较。要知道是否有任何一种引擎适合您的项目,您需要自己尝试一下并了解其设计和局限性。

如果您正在寻找引擎特性的概述,请观看 探索免费游戏引擎Godot 3

面向对象的设计与组合

Godot凭借其灵活的场景系统和节点层次结构,将面向对象设计作为其核心。它试图远离严格的编程模式,以提供直观的方式来构建游戏。

首先,Godot可以让您 组合或聚合 场景。就像嵌套的预制件一样:您可以创建 BlinkingLight 场景,并创建使用 BlinkingLightBrokenLantern 场景。然后,创建一个充满 BrokenLanterns 的城市。更改BlinkingLight的颜色,保存,城市中的所有 BrokenLantern 都会立即更新。

最重要的是,您可以从任何场景 继承

Godot场景可以是武器、角色、物品、门、关卡、关卡的一部分……任何您想要的东西。它可以像纯代码中的类一样工作,除了您可以通过使用编辑器,也可以仅使用代码,或将二者混合并匹配来自由设计它。

它不同于您在其他几个3D引擎中找到的预制件,因为您可以继承并扩展这些场景。您可以创建一个 Magician(魔术师) 来扩展您的 Character(角色)。在编辑器中修改 Character(角色)Magician(魔术师) 也会更新。它可以帮助您构建项目,使其结构与游戏的设计相匹配。

image0

还要注意,Godot提供了许多不同类型的对象,称为节点,每种对象都有特定的用途。节点是树的一部分,并且始终从其父节点继承到 Node 类。尽管引擎确实具有碰撞形状之类的组件,但它们是例外,并非常规。

image1

SpriteNode2DCanvasItemNode 类型。它具有三个父类的所有属性和特性,比如 transforms 或者绘制自定义形状和渲染自定义着色的能力。

全包

Godot尝试提供自己的工具来满足最常见的需求。它具有一个专用的脚本工作区、一个动画编辑器、一个tilemap编辑器、一个着色器编辑器、一个调试器、一个分析器、能够在本地和远程等设备上热重载的功能。

image2

我们的目标是提供一个完整的软件包来创建游戏以及持续的用户体验。您仍然可以和外部程序一起工作,只要有一个导入插件做支持。或者您可以自己创建一个,比如 Tiled Map导入器

这也是为什么Godot提供自己的编程语言GDscript和VisualScript以及C#的部分原因。它们是为满足游戏开发人员和游戏设计师的需求而设计的,并且紧密集成在引擎和编辑器中。

GDscript使您可以使用类似Python的语法编写简单的代码,但是它可以检测类型并提供静态语言的自动补全特质。它还针对具有内置类型(如 VectorsColors )的游戏代码进行了优化。

请注意,使用GDNative,您可以编写出使用类似C、C++、Rust或Python(使用Cython编译器)这类的编译语言编写的高性能代码,而无需重新编译引擎。

image3

VisualScript是一种基于节点的编程语言,可以很好地集成到编辑器中。 您可以将节点或资源拖放到图中以创建新的代码块。

请注意,3D工作区不像2D工作区有那么多工具。您将需要外部程序或插件来编辑地形、动画复杂角色,等等。Godot提供了完整的API,可以使用游戏代码扩展编辑器的功能。参见下面的 Godot编辑器是一个Godot游戏

image4

Godube 2中的状态机编辑器插件,由kubecz3k开发。它使您可以直观地管理状态和转换。

开源

Godot根据 MIT许可证 提供了一个完全开源的代码库。这意味着它附带的所有技术也必须是Free的(取自由之意)。在很大程度上,它们是由贡献者从头开始开发的。

任何人都可以插入专有工具来满足其项目的需求——只是它们不会随引擎一起提供。这可能包括Google AdMob或FMOD。这些都可以作为第三方插件来替代提供。

另一方面,一个开放的代码库意味着您可以 学习和扩展引擎 到您的核心内容。您还可以很容易地调试游戏,因为Godot会使用堆栈跟踪打印错误,即使这些错误来自引擎本身。

注解

不会以任何方式影响您与Godot所做的工作:没有字符串附加到引擎或您用它制作的任何东西。

社区驱动

Godot是由其社区,为其社区以及在那里的所有游戏创造者创造的。 用户的需求和公开讨论推动核心更新。核心开发人员的新功能通常将重点放在首先让大多数用户受益的方面。

就是说,尽管少数核心开发人员全职从事此工作,但在撰写本文时,该项目已有600多位贡献者。仁慈的程序员致力于他们可能需要的功能,因此您将同时在每个主要版本中看到引擎各个方面的改进。

Godot编辑器是一个Godot游戏

Godot编辑器运行在游戏引擎上。它使用引擎自己的UI系统,可以在测试项目时热重载代码和场景,或者在编辑器中运行游戏代码。这意味着您可以为游戏 使用相同的代码 和场景,或 构建插件并扩展编辑器。

由于它为编辑器本身提供了动力,因此这导致了可靠且灵活的UI系统。 使用 `` tool`` 关键字,您可以在编辑器中运行任何游戏代码。

image5

RPG in a Box是一个用Godot 2制作的体素RPG编辑器。它将Godot的UI工具用于其基于节点的编程系统和界面的其余部分。

tool 关键字放在任何GDScript文件的顶部,它将在编辑器中运行。这使您可以导入和导出插件,创建自定义级别编辑器之类的插件,或使用与项目中使用的相同的节点和API来创建脚本。

独立的2D和3D引擎

Godot提供专门的2D和3D渲染引擎。因此,2D场景的基本单位是像素。 即使引擎是分开的,您可以在3D渲染2D,在2D渲染3D,并在您的3D世界叠加2D精灵和界面。