Godot 4 FAQ 智能记忆学习材料

学习目标

通过精心设计的选择题和原文对照,帮助学习者掌握核心知识点

使用说明

请仔细阅读每个问题,对照原文理解解析

题目与解析

知识点: Godot 引擎的许可证和使用权限
题目: Godot 引擎使用的是什么许可证?
选项:
A. GPL 许可证
B. MIT 许可证
C. 商业许可证
D. 专有软件许可证

正确答案: B
原文依据: 「Godot 是在 OSI 认可的 MIT 许可证下可用的 自由和开源软件。」(出自:常见问题,第1页)
解析: Godot 引擎使用的是 MIT 许可证,这是一种非常宽松的开源许可证。这意味着用户可以自由下载和使用 Godot,用于个人、非营利、商业等任何目的,并且可以自由地对 Godot 进行修改、分发、再分发和改版。

知识点: Godot 支持的平台
题目: 以下哪个平台不是 Godot 编辑器支持的平台?
选项:
A. Windows
B. macOS
C. PlayStation
D. Linux

正确答案: C
原文依据: 「编辑器:Windows、macOS、Linux、*BSD、Android(实验性)、Web(实验性)」(出自:常见问题,第2页)
解析: Godot 编辑器支持 Windows、macOS、Linux、*BSD 等平台,并且有实验性的 Android 和 Web 版本。PlayStation 不在支持的编辑器平台列表中。值得注意的是,虽然 Godot 可以导出游戏到多个平台,但由于游戏主机制造商施加的许可条款,Godot 团队无法提供开源的主机导出项。

知识点: Godot 支持的编程语言
题目: Godot 官方支持的编程语言有哪些?
选项:
A. GDScript、C#和Python
B. GDScript、C#和C++
C. GDScript、Java和C++
D. GDScript、Python和JavaScript

正确答案: B
原文依据: 「Godot 官方支持的语言是 GDScript、C# 和 C++,详细请参阅《编写脚本》章节中各个语言的子类别章节。」(出自:常见问题,第3页)
解析: Godot 官方支持三种编程语言:GDScript(Godot 的原生脚本语言)、C#和C++。其中 GDScript 是专为 Godot 设计的脚本语言,推荐新手使用。C#支持相对较新,可能会有一些问题。C++则通过 GDExtension 使用。

知识点: GDScript 的设计目的
题目: 创建 GDScript 的主要原因不包括以下哪一项?
选项:
A. 多线程支持
B. 更好的类扩展支持
C. 提高游戏的图形性能
D. 减少垃圾收集器导致的停顿

正确答案: C
原文依据: 「为 Godot 创建自定义脚本语言的主要原因有:Godot 使用多线程,而大多数脚本虚拟机对线程的支持不佳…大多数脚本语言的虚拟机没有很好地支持类扩展…垃圾收集器导致停顿或不必要的大内存使用…」(出自:常见问题,第5页)
解析: 创建 GDScript 的主要原因包括更好地支持多线程、改进类扩展支持、减少垃圾收集器导致的停顿等。提高游戏的图形性能不是 GDScript 设计的主要目标,图形性能主要由引擎的渲染系统决定,而非脚本语言。

知识点: Godot 的渲染技术选择
题目: Godot 优先考虑哪些渲染技术而非 Direct3D.
选项:
A. OpenGL 和 Metal
B. Vulkan 和 OpenGL
C. Metal 和 Vulkan
D. WebGL 和 Metal

正确答案: B
原文依据: 「Godot 致力于实现跨平台兼容性和开放标准。OpenGL 和 Vulkan 是开放且几乎在所有平台上都可用的技术。」(出自:常见问题,第9页)
解析: Godot 优先考虑 Vulkan 和 OpenGL 作为其渲染技术,因为它们是开放标准且在几乎所有平台上都可用,这符合 Godot 致力于跨平台兼容性的目标。虽然 Godot 4.3 引入了实验性的 Direct3D 12 支持,但 Vulkan 和 OpenGL 仍然是默认的渲染驱动程序。

知识点: Godot 的核心功能设计理念
题目: Godot 保持核心功能集较小的原因不包括以下哪项?
选项:
A. 减少代码维护和 bug 表面
B. 保持编辑器和导出模板的二进制大小较小
C. 防止其他游戏引擎复制其功能
D. 使新贡献者更容易入门

正确答案: C
原文依据: 「这有几个原因:代码维护和 bug 表面…易于贡献…为编辑器保持较小的二进制大小…保持导出模板的二进制大小较小…」(出自:常见问题,第10页)
解析: Godot 保持核心功能集较小的原因包括减少代码维护负担、降低 bug 表面、使新贡献者更容易入门、保持编辑器和导出模板的二进制大小较小。防止其他游戏引擎复制功能不是 Godot 的考虑因素,作为开源项目,Godot 实际上鼓励共享和开放。

知识点: 多分辨率和纵横比处理
题目: 在 Godot 中处理多种分辨率和纵横比的最常见方法是什么?
选项:
A. 为每种可能的分辨率创建不同的资产
B. 只支持一种固定的分辨率
C. 使用单一基本分辨率并处理不同的屏幕宽高比
D. 使用矢量图形代替位图

正确答案: C
原文依据: 「最常见和最恰当的处理方法是,为游戏使用单一基本分辨率,并仅处理不同的屏幕宽高比。」(出自:常见问题,第11页)
解析: 处理多种分辨率和纵横比的最常见方法是为游戏使用单一基本分辨率(通常接近 1080p 或 720p),然后处理不同的屏幕宽高比。这种方法利用了设备中的硬件扩展能力,可以在很少或没有性能成本的情况下解决分辨率差异问题。

知识点: Godot 的编程语言性能比较
题目: 关于 Godot 中不同编程语言的性能,以下说法正确的是?
选项:
A. GDScript 总是比 C# 快
B. C# 总是比 GDScript 快
C. C++ 通常比 GDScript 和 C# 都快
D. 所有语言的性能完全相同

正确答案: C
原文依据: 「一般来说,C# 和 GDScript 的性能在同一数量级内,而 C++ 比两者都快。」(出自:常见问题,第6页)
解析: 在 Godot 中,C++(通过 GDExtension 使用)通常比 GDScript 和 C# 都快。GDScript 和 C# 的性能在同一数量级内,但在特定情况下可能有所不同。C# 在少量调用 Godot 引擎代码时可能更快,但在大量 API 调用时可能因为封送处理成本而变慢。

知识点: Godot 对闭源 SDK 的支持
题目: Godot 对闭源 SDK(如 FMOD、GameWorks 等)的立场是什么?
选项:
A. 官方支持所有主流闭源 SDK
B. 只支持特定几个闭源 SDK
C. 核心引擎开发社区不计划支持任何闭源 SDK
D. 禁止用户在任何情况下使用闭源 SDK

正确答案: C
原文依据: 「Godot 的目标是创建一个自由开源、MIT 许可、模块化和可扩展的引擎。核心引擎开发社区没有计划支持任何第三方、闭源或专有 SDK,因为集成这些 SDK 会违背 Godot 的精神。」(出自:常见问题,第7页)
解析: Godot 的核心引擎开发社区不计划支持任何闭源或专有 SDK,因为这违背了 Godot 作为自由开源引擎的精神。但是,由于 Godot 是开源和模块化的,用户可以自行将这些库添加为模块,并在游戏中使用它们。

知识点: Godot 的用户界面工具包
题目: Godot 使用什么用户界面工具包?
选项:
A. GTK
B. Qt
C. wxWidgets
D. 自己的用户界面工具包

正确答案: D
原文依据: 「Godot 不使用 GTK、Qt、wxWidgets 等标准的 GUI 工具包,而是使用自己的用户界面工具包,使用 OpenGL ES 或 Vulkan 进行渲染。」(出自:常见问题,第13页)
解析: Godot 使用自己开发的用户界面工具包,而不是标准的 GUI 工具包如 GTK、Qt 或 wxWidgets。这个自定义工具包使用 OpenGL ES 或 Vulkan 进行渲染,以 Control 节点的形式暴露出来,用于渲染编辑器并可在项目中使用。这使 Godot 能够获益于硬件加速,并在全平台上拥有一致的外观。

知识点: Godot 的构建系统
题目: Godot 使用什么构建系统?
选项:
A. CMake
B. Make
C. SCons
D. Gradle

正确答案: C
原文依据: 「Godot 使用 SCons 构建系统。近期没有改用其他构建系统的计划。」(出自:常见问题,第13页)
解析: Godot 使用 SCons 作为其构建系统。选择 SCons 的原因包括:它能够轻松地针对多种不同平台进行编译,支持同时编译到多个平台,不会因项目修改而破坏构建,以及能够处理 Godot 复杂的构建过程(如代码生成、着色器解析和模块定制)。

知识点: Godot 的架构设计
题目: Godot 使用什么架构设计模式?
选项:
A. 实体组件系统(ECS)
B. 基于继承的架构
C. 面向数据设计(DOD)
D. 纯函数式编程模式

正确答案: B
原文依据: 「Godot 不 使用 ECS,而是依赖于继承。虽然没有普遍更好的方法,但我们发现使用基于继承的方法可以获得更好的可用性,同时对于大多数用例来说速度仍然足够快。」(出自:常见问题,第15页)
解析: Godot 使用基于继承的架构设计,而不是实体组件系统(ECS)或面向数据设计(DOD)。Godot 团队认为基于继承的方法可以提供更好的可用性,同时对于大多数用例来说速度仍然足够快。用户仍然可以通过创建带有单独脚本的子节点来在项目中使用组合。

知识点: Godot 编辑器的安装方式
题目: Godot 编辑器的默认安装方式是什么?
选项:
A. 需要系统管理员权限的标准安装程序
B. 绿色应用,无需安装
C. 半绿色应用,可执行文件可从任何位置运行,但配置文件写入用户目录
D. 只能通过应用商店安装

正确答案: C
原文依据: 「默认配置下,Godot 是 半绿色 的。从任何位置运行都可以运行它的可执行文件(包括无法写入的位置),无须管理员权限。不过,配置文件会写入到针对用户的配置或数据目录。」(出自:常见问题,第9页)
解析: Godot 编辑器默认是半绿色应用。这意味着可执行文件可以从任何位置运行,无需安装或管理员权限,但配置文件会写入到用户特定的配置或数据目录。如果希望实现真正的便携操作(如放在 U 盘上使用),可以按照”自包含模式”中的步骤操作。

知识点: Godot 的 STL 使用
题目: Godot 为什么不使用 STL(标准模板库)?
选项:
A. STL 许可证与 Godot 的 MIT 许可证不兼容
B. STL 会创建大量符号,产生巨型的调试二进制文件
C. STL 不支持跨平台开发
D. STL 性能太差,无法用于游戏开发

正确答案: B
原文依据: 「STL 模板会创建大量符号,产生巨型的调试二进制文件。我们使用一些名称很短的模板来代替。」(出自:常见问题,第14页)
解析: Godot 不使用 STL 的主要原因之一是 STL 模板会创建大量符号,导致调试二进制文件变得巨大。此外,Godot 的容器是针对特定需求设计的,内置了内存跟踪功能,并且 Godot 使用自定义字符串类型以获得更好的国际化支持。

知识点: Godot 对异常处理的态度
题目: Godot 为什么不使用异常?
选项:
A. 异常处理在跨平台开发中不一致
B. 异常会显著增加可执行文件的二进制大小和编译时间
C. 异常会导致游戏性能下降
D. 异常是一个过时的编程概念

正确答案: B
原文依据: 「此外,异常会显著增加可执行文件的二进制大小,并且导致编译时间增加。」(出自:常见问题,第14页)
解析: Godot 不使用异常的主要原因是异常会显著增加可执行文件的二进制大小,并导致编译时间增加。此外,Godot 团队相信游戏不应该崩溃,而是应该在发生意外情况时打印错误并尽可能优雅地恢复继续运行。

知识点: Godot 的文档许可证
题目: Godot 的文档使用什么许可证?
选项:
A. MIT 许可证
B. GPL 许可证
C. CC-BY 3.0 许可证
D. 专有许可证

正确答案: C
原文依据: 「本随附文档的所有内容均在宽松的知识共享署名 3.0(CC-BY 3.0)许可下发布,署名为”Juan Linietsky、Ariel Manzur 和 Godot 引擎社区。”」(出自:常见问题,第1页)
解析: Godot 的文档使用知识共享署名 3.0(CC-BY 3.0)许可证发布,这是一种宽松的许可证,要求在使用文档时提供适当的署名。而 Godot 引擎本身使用的是 MIT 许可证,这是两种不同的许可证。

知识点: Godot 的非游戏应用开发
题目: 关于使用 Godot 创建非游戏应用,以下说法正确的是?
选项:
A. Godot 不支持创建非游戏应用
B. 创建非游戏应用时应启用”低处理器模式”以减少 CPU 和 GPU 占用
C. 非游戏应用必须使用 C++ 编写
D. 非游戏应用只能在桌面平台上运行

正确答案: B
原文依据: 「当创建一个非游戏的应用程序时,确保在项目设置中启用 低处理器模式 以减少 CPU 和 GPU 占用。」(出自:常见问题,第12页)
解析: Godot 可以用于创建非游戏应用,其广泛的内置 UI 系统使其成为 Electron 或 Qt 等框架的合适替代品。创建非游戏应用时,应在项目设置中启用”低处理器模式”以减少 CPU 和 GPU 占用,这对于非游戏应用特别重要,因为它们通常不需要高频率的渲染和物理计算。

知识点: Godot 的面向数据设计(DOD)
题目: Godot 为什么不强制用户实现面向数据设计(DOD)?
选项:
A. DOD 太复杂,不适合游戏开发
B. DOD 只在处理数以万计对象时才有显著性能提升
C. DOD 与 Godot 的 MIT 许可证不兼容
D. DOD 不支持跨平台开发

正确答案: B
原文依据: 「DOD 主要是一种缓存一致性优化,只有在每帧需要处理数以万计的对象,且几乎不做任何修改时,才能够提供显著的性能提升。」(出自:常见问题,第15页)
解析: Godot 不强制用户实现面向数据设计(DOD),因为 DOD 主要是一种缓存一致性优化,只有在每帧需要处理数以万计的对象且几乎不做任何修改时才能提供显著的性能提升。大多数游戏不需要这种级别的优化,而 Godot 提供了方便的工具来完成大多数情况下的工作。

知识点: Godot 支持的 3D 模型格式
题目: 关于 Godot 支持的 3D 模型格式,以下说法正确的是?
选项:
A. Godot 只支持自己专有的 3D 模型格式
B. Godot 推荐从 Blender 导出 glTF 2.0 文件
C. Godot 不支持任何 3D 模型格式的导入
D. 所有 3D 模型必须在 Godot 编辑器中创建

正确答案: B
原文依据: 「从 Blender 导出 glTF 2.0 文件(推荐)」(出自:常见问题,第7页)
解析: Godot 支持多种 3D 模型格式,但推荐从 Blender 导出 glTF 2.0 文件。这是因为 glTF 2.0 是一种现代、开放的标准格式,能够很好地保留模型的各种属性。Godot 还支持直接导入 .blend 文件以及导入 DAE、OBJ、FBX 等其他格式。

知识点: Godot 的贡献方式
题目: 开始为 Godot 做出贡献的最佳方式是什么?
选项:
A. 直接提交大型功能的代码
B. 使用 Godot 并报告遇到的问题
C. 捐赠大量资金
D. 创建竞争性的引擎分支

正确答案: B
原文依据: 「开始为 Godot 做出贡献的最佳方式是使用它并报告你可能遇到的任何问题。一份带有清晰重现步骤的好 bug 报告可以帮助其他贡献者快速有效地修复 bug。」(出自:常见问题,第11页)
解析: 开始为 Godot 做出贡献的最佳方式是使用它并报告你可能遇到的问题。一份好的 bug 报告(带有清晰的重现步骤)可以帮助其他贡献者快速有效地修复 bug。之后,你可以选择一个感兴趣的问题并尝试解决它,这需要学习如何从源代码编译引擎或构建文档,以及熟悉 Git 版本控制系统。

知识点总结

Godot 引擎是一个自由开源的游戏开发工具,使用 MIT 许可证,支持多种平台和编程语言。它的设计理念强调跨平台兼容性、开放标准和用户友好性。GDScript 是为 Godot 专门设计的脚本语言,旨在提供更好的多线程支持和类扩展。Godot 使用自己的 UI 工具包和容器系统,而不是标准库,以优化性能和减小二进制大小。它采用基于继承的架构而非实体组件系统,并且可以用于创建游戏和非游戏应用。Godot 的社区驱动开发模式鼓励用户通过使用引擎并报告问题来做出贡献。

参考资料

常见问题 — Godot Engine (4.x) 简体中文文档 (https://docs.godotengine.org/zh-cn/4.x/about/faq.html)

《Godot 4 FAQ 智能记忆学习材料》有2条评论

发表评论

人生梦想 - 关注前沿的计算机技术 acejoy.com 🐾 步子哥の博客 🐾 背多分论坛 🐾 知差(chai)网 🐾 DeepracticeX 社区 🐾 老薛主机 🐾 智柴论坛 🐾