Godot的设计理念

既然你的手湿了,我们来谈谈Godot的设计吧。

每个游戏引擎都是不同的,适合不同的需求。 它们不仅提供了一系列的特性,而且每个引擎的设计都是独一无二的。这会导致不同的工作流程和形成游戏结构的不同方式。这都源于他们各自的设计理念。

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

请注意 Discover Godot 3, the Free game engine 如果您要查看引擎功能的概述。

面向对象设计与组合

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

首先,Godot让你 合成或聚合 场景。这就像嵌套的前言:您可以创建一个闪烁的灯光场景和一个使用闪烁的灯光的代理场景。然后,创建一个充满经纪人的城市。更改闪烁灯的颜色,保存,城市中的所有代理将立即更新。

除此之外,你可以 继承 任何场景。

Godot的场景可以是武器、角色、物品、门、关卡、关卡的一部分……任何你想要的。它就像纯代码中的一个类一样工作,只是您可以通过使用编辑器、只使用代码或者混合和匹配这两者来自由地设计它。

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

image0

还要注意,Godot提供了许多不同类型的对象,称为节点,每个对象都有特定的用途。节点是树的一部分,始终从其父节点继承到节点类。虽然引擎确实有碰撞形状之类的组件,但它们是例外,而不是标准。

image1

sprite是一个节点2d、一个canvasItem和一个节点。它具有三个父类的所有属性和特性,例如转换或绘制自定义形状并使用自定义明暗器进行渲染的能力。

全包套餐

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

image2

目标是提供一个完整的软件包来创建游戏和持续的用户体验。只要有一个导入插件,您仍然可以使用外部程序。或者你可以创建一个,就像 Tiled Map Importer .

这也是Godot提供自己的编程语言GDScript和visualscript以及C#的部分原因。它们是为游戏开发者和游戏设计者的需求而设计的,并且它们与引擎和编辑器紧密集成在一起。

gdscript允许您使用类似于python的语法编写简单的代码,但它可以检测类型并提供静态语言的自动完成质量。它还针对内置类型(如向量和颜色)的游戏代码进行了优化。

注意,使用GDutEnter,您可以使用C、C++、RISE或Python(使用Cython编译器)编译的语言编写高性能代码,而不必重新编译引擎。

image3

VisualScript is a node-based programming language that integrates well in the editor. You can drag and drop nodes or resources into the graph to create new code blocks.

请注意,三维工作空间的功能没有二维工作空间的功能多。您需要外部程序或附加组件来编辑地形、设置复杂角色的动画等等。Godot提供了一个完整的API来使用游戏代码扩展编辑器的功能。见 The Godot editor is a Godot game 下面。

image4

Kubecz3k在Godot2中的一个状态机编辑器插件,它允许您直观地管理状态和转换。

开放源代码

Godot在 MIT许可证 . 这意味着与之配套的所有技术都必须是自由的(如自由)。在很大程度上,它们是由贡献者自上而下开发出来的。

任何人都可以根据他们项目的需要插入专有工具——他们只是不带引擎。这可能包括google admob或fmod。这些插件中的任何一个都可以作为第三方插件来代替。

另一方面,开放的代码库意味着您可以 学习并扩展引擎 让你心满意足。您也可以轻松调试游戏,因为Godot将使用堆栈跟踪打印错误,即使它们来自引擎本身。

注解

这个 不会影响你和Godot的工作 不管怎样:引擎或你用它做的任何东西都没有任何附加条件。

社区驱动

Godot是由它的社区,为社区,以及所有的游戏创造者。 驱动核心更新的是用户和开放式讨论的需求。核心开发人员提供的新功能通常集中在哪些方面会首先让大多数用户受益。

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

Godot编辑是一个Godot游戏

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

这将导致一个可靠和灵活的用户界面系统,因为它为编辑器本身提供了动力。与 tool 关键字,您可以在编辑器中运行任何游戏代码。

image5

RPG in a Box is a voxel RPG editor made with Godot 2. It uses Godot’s UI tools for its node-based programming system and for the rest of the interface.

tool 关键字位于任何gdscript文件的顶部,它将在编辑器中运行。这允许您导入和导出插件、创建插件(如自定义级别的编辑器)或使用项目中使用的相同节点和API创建脚本。

分离二维和三维引擎

Godot提供专用的二维和三维渲染引擎。因此, 二维场景的基本单位是像素。 即使引擎是独立的,您也可以在3D中渲染2D,在2D中渲染3D,并在3D世界上覆盖2D精灵和界面。