常见问题

我能用Godot做什么?需要多少钱?许可条款是什么?

Godot是 Free and Open-Source SoftwareOSI-approved 下可用MIT许可证。这意味着它在“言论自由”和“啤酒自由”中都是免费的。

简而言之:

  • 您可以出于任何目的自由下载和使用Godot,无论是个人,非盈利,商业或其他。

  • 无论出于任何原因,无论是非商业还是商业,你都可以自由地修改、分发、重新分配,以及合成Godot直到你满意。

本随附文件的所有内容均在许可性创作共有属性3.0下发布。 (CC-BY 3.0 )许可证,归属于“Juan Linietsky、Ariel Manzur和Godot Engine社区”。

标识和图标通常在同一个创作共享许可证下。请注意,Godot源代码中包含的某些第三方库可能具有不同的许可证。

有关详细信息,请查看 COPYRIGHT.txt 以及 LICENSE.txtLOGO_LICENSE.txt Godot存储库中的文件。

另请参见 the license page on the Godot website .

Godot支持哪些平台?

对于编辑:

  • Windows

  • macOS

  • x11(Linux, * BSD)

对于导出游戏:

  • Windows(和UWP)

  • macOS

  • x11(Linux, * BSD)

  • 安卓

  • 网间网操作系统

  • 网状物

32位和64位二进制文件在有意义的地方都受支持,默认值为64。

一些用户还报告说,在基于ARM的Linux系统(如Raspberry Pi)上成功地构建和使用Godot。

此外,还有一些非官方的第三方工作正在为一些控制台建造。但是,目前默认的构建脚本或导出模板中不包含这些内容。

有关更多信息,请参阅 exportingcompiling Godot yourself .

Godot支持哪些编程语言?

Godot的官方支持语言是GDScript、可视化脚本、C# 和C++。请参见中每种语言的子类别 scripting 部分。

如果您只是从Godot或游戏开发开始,那么GDScript是推荐学习和使用的语言,因为它是Godot的本地语言。虽然从长远来看,脚本语言的性能往往不如低级语言,但对于原型设计、开发最小可行产品(MVP)以及专注于上市时间(TTM),GDScript将提供一种快速、友好且有能力的开发游戏的方法。

请注意,C# 支持仍然是相对较新的,因此,您可能会遇到一些问题。我们友好而努力的发展社区随时准备在新问题出现时解决它们,但由于这是一个开源项目,我们建议您首先自己做一些尽职调查。在讨论中搜索 open issues 是开始故障排除的好方法。

对于新语言,可以通过第三方使用gdantive/nativescript/pluginscript工具进行支持。(请参阅下面关于插件的问题。)例如,目前正在进行有关Godot的非官方绑定的工作。 PythonNim .

什么是GDScript?为什么要使用它?

GDScript是Godot的集成脚本语言。它是从一开始就构建起来的,以最少的代码量最大限度地发挥Godot的潜力,使新手和专家开发人员都能尽可能快地利用Godot的优势。如果你以前用过类似于python的语言写过任何东西,那么你会感到宾至如归。有关GDScript提供的功能的示例、历史和完整概述,请查看 GDScript scripting guide .

使用GDScript有几个原因——尤其是在原型设计、项目的α/β阶段,或者不创建下一个AAA标题时——但最突出的原因是 降低复杂性。

为Godot创建一个紧密集成的自定义脚本语言的初衷是双重的:第一,它减少了与Godot一起启动和运行所需的时间,使开发人员能够快速地将自己暴露在引擎中,并将重点放在生产力上;第二,它减少了s维护的总体负担,减轻问题的维度,并允许引擎的开发人员专注于消除错误和改进与引擎核心相关的功能,而不是花费大量时间尝试在一个一组语言。

由于Godot是一个开源项目,因此从一开始就必须优先考虑更为集成和无缝的体验,而不是通过支持更熟悉的编程语言来吸引更多的用户,尤其是在支持那些更熟悉的语言时,会导致更糟糕的体验。我们了解您是否愿意在Godot中使用其他语言(请参阅上面支持的选项列表)。也就是说,如果你还没有尝试过GDScript,尝试一下 三天 . 就像Godot一样,一旦你看到它的强大和快速发展,我们认为GDScript会在你身上成长。

有关熟悉GDScript或动态类型语言的更多信息,请参见 gdscript:动态语言简介 教程。

创建GDScript的动机是什么?

为Godot创建自定义脚本语言的主要原因是:

  1. 大多数脚本vm中的线程支持较差,godot使用线程(lua、python、squirrel、js、as等)。

  2. 大多数脚本vm中的类扩展支持较差,并且适应Godot的工作方式效率很低(Lua、Python、JS)。

  3. 许多现有的语言具有与C++绑定的可怕接口,导致大量代码、bug、瓶颈和一般低效(Lua、Python、松鼠、JS等)。我们希望集中于一个伟大的引擎,而不是大量的集成。

  4. 没有本地向量类型(vector3、matrix4等),因此在使用自定义类型(lua、python、squirrel、js、as等)时,性能会大大降低。

  5. 垃圾收集器会导致暂停或不必要的大量内存使用(lua、python、js、as等)。

  6. 很难与代码编辑器集成以提供代码完成、实时编辑等(全部)。GDScript很好地支持这一点。

GDScript旨在减少上述问题。

Godot支持哪种类型的3D模型格式?

Godot通过 OpenCollada 导出器(maya,3dsmax)。

如果你用的是搅拌机,看看我们自己的 Better Collada Exporter .

从Godot 3.0开始,支持GLTF。

FBX SDK具有 restrictive license ,这与 open license 由Godot提供。也就是说,FBX支持仍然可以作为插件由第三方提供。(参见下面的插件问题。)

是否将在[插入关闭的SDK,如FMOD、GameWorks等。] 支持Godot?

Godot的目标是创建一个免费的、开放源代码的、MIT许可的、模块化的、可扩展的引擎。核心引擎开发社区没有计划支持任何第三方、封闭源代码/专有的sdk,因为与这些集成将违背Godot的理念。

也就是说,因为godot是开放源码和模块化的,所以没有什么能阻止你或任何其他有兴趣将这些库作为模块添加并将你的游戏作为开放源码或封闭源码一起交付的人。

要了解如何仍然可以提供对所选SDK的支持,请查看下面的插件问题。

如果您知道第三方SDK不受Godot支持,但它提供免费和开源集成,请考虑自己开始集成工作。Godot不是一个人所有的,它属于社区,它和像你这样雄心勃勃的社区贡献者一起成长。

如何创建资产来处理多个分辨率和纵横比?

这个问题经常出现,这可能是由于苹果公司最初将设备分辨率提高了一倍时造成的误解。这使人们认为在不同的决议中拥有相同的资产是一个好主意,因此许多人继续走这条路。这一点最初只对苹果设备起作用,但随后又创建了几种分辨率和纵横比不同的Android和苹果设备,其大小和dpi范围非常广泛。

实现这一点的最常见和正确的方法是,相反,对游戏使用单一的基础分辨率,并且只处理不同的屏幕纵横比。这主要是需要二维,因为在三维,这只是一个问题的相机xfov或yfov。

  1. 为你的比赛选择一个单一的基础分辨率。即使有高达2K的设备和低至400P的设备,设备中常规的硬件扩展也会以很少或根本没有性能成本的方式来解决这一问题。最常见的选择是接近1080p(1920x1080)或720p(1280x720)。请记住,分辨率越高,资产越大,所需内存越多,加载所需时间越长。

  2. 使用Godot中的拉伸选项;在保持纵横比的同时进行二维拉伸效果最佳。检查 多分辨率 如何实现这一点的教程。

  3. 确定一个最小分辨率,然后决定你想让你的游戏垂直或水平拉伸不同的纵横比,或者如果有一个纵横比,而你想黑条代替出现。这也解释在 多分辨率 .

  4. 对于用户界面,使用 anchoring 确定控件应停留和移动的位置。如果uis更复杂,考虑学习容器。

就这样!你的游戏应该有多种分辨率。

如果你想让你的游戏也能在有小屏幕(小于300像素宽)的古老设备上运行,你可以使用导出选项来缩小图像,并将该版本设置为应用商店或谷歌游戏中的特定屏幕大小。

我怎样才能延长Godot?

要扩展godot,例如创建godot编辑器插件或添加对其他语言的支持,请看 EditorPlugins 和工具脚本。

另外,请参阅有关这些主题的官方博客文章:

您还可以查看GDScript实现、Godot模块以及 unofficial Python support 为Godot。这将是另一个第三方类库如何与Godot集成的一个很好的起点。

我想做贡献!我怎么开始?

令人惊叹的!作为一个开源项目,Godot在像您这样的开发人员的创新和雄心壮志中蓬勃发展。

首先要开始的地方是 issues . 找到一个与您产生共鸣的问题,然后继续 How to Contribute 指导您学习如何使用更改分叉、修改和提交拉请求(pr)。

我对Godot有个好主意。我如何分享?

想把想法带到Godot身上是很有诱惑力的,比如那些导致大量核心变化的想法,模仿其他游戏引擎的工作方式,或者你想在编辑器中内置的备选工作流程。这些都是很好的,我们很感谢有这样的有动机的人愿意做出贡献,但是Godot的重点是并且始终是核心功能,如 Roadmapsquashing bugs and addressing issues 以及Godot社区成员之间的对话。

Godot社区中的大多数开发人员将更有兴趣了解以下内容:

  • 您使用软件的经验和您遇到的问题(我们关心的不仅仅是如何改进软件的想法)。

  • 您希望看到实现的特性,因为您的项目需要它们。

  • 在学习软件时难以理解的概念。

  • 您希望看到的工作流的优化部分。

  • 您错过了清晰教程或文档不清晰的部分。

请不要觉得你对Godot的想法不受欢迎。相反,试着先把它们作为一个问题重新考虑,这样开发者和社区就有了一个有助于解决问题的基础。

与社区分享您的想法和问题的一个好方法是作为一组用户故事。解释你想做什么,你期望发生什么行为,然后解释你实际发生了什么行为。以这种方式构建问题和想法将有助于整个社区集中精力改进整个开发人员的体验。

提供屏幕截图、具体数字、测试用例或示例项目(如果适用)的奖励点数。

我如何支持Godot的发展或贡献?

贡献的方式 .

谁在研究Godot?我怎么联系你?

请参见 Godot website .