现在您已经上手了,让我们来谈谈Godot的设计。

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

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

如果您正在寻找引擎功能的概述,请观看免费游戏引擎Discover Godot 3

面向对象的设计与合成

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

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

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

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

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

 

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

Sprite是一个Node2D,一个CanvasItem和一个Node。它具有三个父类的所有属性和功能,例如变换或绘制自定义形状并使用自定义着色器进行渲染的功能。

All-inclusive package

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

目标是提供完整的程序包来创建游戏和持续的用户体验。还提供了导入插件,您可以使用通过插件来扩展外部程序。或者,您可以创建一个,例如Tiled Map Importer

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

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

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

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

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

状态机编辑器插件,由kubecz3k发行。它使您可以直观地管理状态和过渡。

开源的

Godot根据MIT许可提供了完全开放的源代码库。这意味着它附带的所有技术也必须是免费的(自由)。在大多数情况下,它们是由贡献者从头开始开发的。

任何人都可以根据他们的项目需求插入专有工具-他们只是不随引擎一起提供。这可能包括Google AdMob或FMOD。这些中的任何一个都可以作为第三方插件来使用。

另一方面,开放的代码库意味着您可以学习引擎并将其扩展到您的内心世界。您也可以轻松调试游戏,因为Godot会使用堆栈跟踪打印错误,即使这些错误来自引擎本身也是如此。

社区驱动

Godot由其社区,社区以及所有游戏创作者共同打造。用户的需求和公开讨论推动了核心更新。核心开发人员的新功能通常侧重于首先让大多数用户受益的方面。

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

Godot编辑器是Godot游戏

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

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

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

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

独立的2D和3D引擎

Godot提供专用的2D和3D渲染引擎。结果,2D场景的基本单位是像素。即使引擎是分开的,您也可以在3D中渲染2D,在2D中渲染3D,并在3D世界中覆盖2D子画面和界面。