特性列表

这个页面旨在罗列所有的现在被 Godot 支持的功能特性。

备注

This page lists features supported by the current stable version of Godot (3.5). More features are available in the latest development version (4.0).

特性

平台

可以运行编辑器以及导出项目的:

  • Windows 7 以及更新的系统版本(64 位和 32 位)。

  • macOS 10.12 以及更新的系统版本(64 位,x86 和 ARM)。

  • Linux(64 位和 32 位,x86 和 ARM)。

    • 二进制文件是静态链接的,并且如果在足够旧的基本发行版上进行编译,则可以在任何发行版上运行。

    • 官方二进制文件是在 Ubuntu 14.04 上编译的。

  • 通过 WebAssembly(Firefox、Chrome、Edge、Opera)的 HTML5。

运行导出的项目:

Godot 的目标是尽可能地独立于平台,并且可以相对轻松地移植到新平台。

编辑器

特性:

  • 场景树编辑器。

  • 内置脚本编辑器。

  • 支持 Visual Studio Code、VIM 等外部文本编辑器

  • GDScript 调试器

    • 尚不支持在线程中调试。
  • 性能监控工具。

  • 脚本热重载。

  • 场景热编辑。

    • 更改会在编辑器中生效并且会在关闭当前项目后保留。
  • 远程检查器。

    • 在关闭正在运行的项目后,更改不会被反映在编辑器中,也不会被保留。
  • 实时摄像机复制。

    • 移动编辑器中的摄像头,并在正在运行的项目中查看结果。
  • Built-in offline class reference documentation.

  • 使用由社区贡献的支持数十种语言的编辑器。

插件:

2D 图形

有两个渲染器可用:

  • OpenGL ES 3.0 渲染器(在桌面平台上使用 OpenGL 3.3)。

    • 高端的视觉效果. 推荐在桌面平台上使用.
  • OpenGL ES 2.0 渲染器(在桌面平台上使用 OpenGL 2.1)。

    • 推荐在移动和 Web 平台上使用。

特性:

  • 精灵、多边形和线条渲染。

    • 绘制线和多边形的高级工具,例如 Polygon2D 和 Line2D。
  • AnimatedSprite 辅助制作动画精灵。

  • 视差层。

    • 伪 3D 支持,可在编辑器中进行预览。
  • 带法线贴图的 2D 光照。

    • 硬阴影或软阴影。
  • 使用位图(BitmapFont)的字体渲染或使用 FreeType(DynamicFont)进行栅格化。

    • 位图字体可以通过例如 BMFont 的工具被导出。

    • DynamicFont supports monochrome fonts as well as colored fonts (e.g. for emoji). Supported formats are TTF, OTF, WOFF1 and WOFF2.

    • DynamicFont 支持具有可调整宽度和颜色的可选字体轮廓。

    • 支持字体超采样, 以在更高的分辨率下保持字体的清晰度.

  • 基于 GPU 的粒子,支持自定义粒子着色器。

  • 基于 CPU 的粒子。

2D 工具

  • 内置平滑和拖动边距的2D相机.

  • 用于代表 2D 空间中的一条路径的 Path2D 节点。

    • 可以在编辑器中绘制或者通过程序生成。

    • 用于使节点跟随一条Path2D的PathFollow2D 节点.

  • 2D 几何辅助器类.

  • 可用于绘制带纹理的2D线条的Line2D节点.

2D物理

物理实体:

  • 静态实体.

  • 刚体.

  • 动力学实体.

  • 关节(Joints).

  • 用以检测实体进入或离开的区域.

碰撞检测:

  • 内置形状: 线条, 框体, 圆圈, 胶囊.

  • 碰撞多边形(可以人工绘制,或者在编辑器中根据精灵生成)。

3D 图形

有两个渲染器可用:

  • OpenGL ES 3.0 渲染器(在桌面平台上使用 OpenGL 3.3)。

    • 高端的视觉效果. 推荐在桌面平台上使用.

    • 可选的 HDR 渲染,使用 sRGB(默认启用)。

    • 使用可选的深度预处理(默认启用),减少重复绘制的消耗,加速复杂场景的渲染。

  • OpenGL ES 2.0 渲染器(在桌面平台上使用 OpenGL 2.1)。

    • 推荐在移动和 Web 平台上使用。

    • 兼容性更高的 LDR 渲染。

    • 并不是所有特性都可用。仅在使用 OpenGL ES 3.0 渲染器时可用的特性会在下文中标注 GLES3

摄像机:

  • 透视、正交以及视锥偏移摄像机。

基于物理的渲染(内置材质特性):

  • 遵循迪士尼 PBR 模型。

  • 支持 Lambert、Lambert Wrap(半 Lambert)、Oren-Nayar、Toon 漫反射着色模式。

  • 支持 Schlick-GGX、Blinn、Phong、Toon、Disabled 镜面反射着色模式。

  • 使用粗糙度金属度工作流,支持 ORM 纹理。

  • 使用地平线镜面反射遮蔽(Filament 模型)提升材质外观

  • 法线贴图。

  • 反照率及法线贴图的细节贴图。

  • 可以使用 alpha 混合或抖动避免距离衰减通过透明管道。

  • 抖动可以根据每个像素或每个对象来确定。

  • GLES3:基于距离的拥有自动层级细节的视差/浮雕透视。

  • GLES3:次表面散射和透射率。

  • GLES3:支持材质粗糙度的折射(达到模糊折射的效果)。在 GLES2 中,折射仍然有小,但不支持材质粗糙度。

  • GLES3:近距离衰减(软粒子)。

实时光照:

  • 全向光(日光/月光)。每个场景最多 4 个。

  • 全向光。

  • 可调整锥角和衰减的聚光。

  • 可以单独调整各个光源的镜面反射能量。

  • GLES3:光照使用单遍向前的做法。默认情况下,每个网格资源最多可显示 32 个全向光源和 32 个聚光光源。需要时可以放宽这个限制,但会增加着色器编译时长、降低性能。GLES2 的光照使用多遍向前的做法,对光源的数量没有限制,但在数量较多时会比较慢。

阴影贴图:

  • DirectionLight:正交(最快)、二分和四分 PSSM。支持在分割之间做混合。

  • OmniLight:双抛物面(快速)或立方映射(较慢但更精确)。支持全景形式的彩色投影纹理。

  • SpotLight:单个材质。

具有间接照明的全局照明:

  • 烘焙光照贴图(快速,但无法在运行时更新)。

    • 支持仅烘焙间接光照,或者同时烘焙直接和间接光照。可以给各个光源单独设置烘焙模式,从而实现混合光照烘焙。

    • 使用自动的基于八叉树系统对动态对象的光照进行支持。无需手动布置探针。

    • 光照贴图在 CPU 上烘焙。

  • GLES3:GI 探针(较慢,半实时)。支持反射。

反射:

  • 使用 ReflectionProbe 实现较快的烘焙反射或较慢的实时反射。可以选择启用视差盒校正。

  • 反射技术可以混合在一起,以获得更高的准确性或可扩展性。

  • GLES3:基于体素的反射(当使用 GI 探针时)。

  • GLES3: 屏幕空间反射.

天空:

  • 全景天空(使用HDRI).

  • 程序式天空。

雾:

  • 具有可调衰减曲线的深度雾.

  • 高度雾(floor 或 ceiling), 衰减可调.

  • 支持基于相机角度的自动深度雾颜色(依据日光的颜色).

  • 可选透光率, 使灯光在雾中更清晰可见.

粒子:

  • 基于 CPU 的粒子。

  • GLES3:支持自定义粒子着色器的 GPU 粒子。

后期处理:

  • 色调映射(线性, Reinhard, Filmic, ACES).

  • 辉光/泛光,可以使用可选的双三次放大和多种混合模式:滤色(Screen)、柔光(Soft Light)、添加(Add)、替换(Replace)。

  • 使用一维渐变进行颜色校正.

  • 亮度, 对比度和饱和度调整.

  • GLES3:根据视区亮度自动调整曝光。

  • GLES3:近景深和远景深。

  • GLES3: Screen-space ambient occlusion (SSAO).

  • GLES3:可选的去色带,避免产生色带(在启用 HDR 渲染时有效)。

纹理过滤:

  • 最近邻、双线性、三线性、各向异性过滤。

纹理压缩:

  • 无损或有损 WebP(不会节省 VRAM;仅减少存储大小)。

  • S3TC(仅支持桌面平台)。

  • ETC1(建议在使用 GLES2 渲染器时使用)。

  • GLES3:用于高质量压缩的 BPTC(macOS 不支持)。

  • GLES3:ETC2(macOS 不支持)。

抗锯齿:

  • 多采样抗锯齿(MSAA)。

  • 快速近似抗锯齿(FXAA)。

性能:

  • 使用房间与入口实现遮挡剔除。支持游戏通知,根据主次两级可见性来禁用不需要的节点的 AI/物理处理。

  • Real-time occluder shapes (sphere and polygon). Not as effective as rooms and portals (and doesn’t support gameplay notifications), but easier to set up.

备注

上述效果中的大多数都可以进行调整,从而提升性能、提高质量。这在使用 Godot 进行脱机渲染时非常有用。

3D 工具

  • 内置网格:立方体、圆柱体/圆锥体、(半)球体、棱柱体、平面、四边形。

  • 程序式几何体生成工具。

  • 构造实体几何(用于原型制作)。

  • Path3D 节点表示 3D 空间中的路径。

    • 可以在编辑器中绘制或者通过程序生成。

    • PathFollow3D 节点使节点沿 Path3D 运动。

  • 3D 几何体辅助类。

  • 支持在编辑器中将当前场景导出为 glTF 2.0 文件。

3D 物理学

物理实体:

  • 静态实体.

  • 刚体.

  • 动力学实体.

  • 车身(用于街机物理,而非模拟)。

  • 关节(Joints).

  • 柔体。

  • 布娃娃。

  • 用以检测实体进入或离开的区域.

碰撞检测:

  • 内置形状:立方体、球体、胶囊体、圆柱体。

  • 从编辑器中为任何网格生成三角形碰撞形状。

  • 从编辑器中为任何网格生成一个或多个凸碰撞形状。

着色器

  • 2D:自定义顶点、片段和灯光着色器。

  • 3D:自定义顶点、片段、灯光和天空着色器。

  • 基于文本的着色器,使用由 GLSL 启发的着色器语言

  • 可视化着色器编辑器。

    • 支持可视化着色器插件。

编写脚本

常规:

  • 具有脚本扩展节点的面向对象设计模式.

  • 用于脚本之间通信的信号和组.

  • 支持跨语言脚本编程

  • 多种二维和三维线性代数数据类型, 如向量和变换.

GDScript:

C#:

  • 打包成一个单独的二进制文件,以保持文件大小和依赖关系。

  • 使用Mono 6.x.

    • 完全支持C#7.0语法和功能.
  • 支持所有平台.

  • 建议使用外部编辑器以从IDE功能中获益.

VisualScript:

GDNative(C、C++、Rust、D……):

  • 在需要时, 可以链接到本机库以获得更高的性能和第三方集成.

    • 对于脚本游戏逻辑, 如果性能足够, 建议使用 GDScript 或 C#.
  • C和C++的官方绑定.

    • 使用任何你想要的构建系统和语言功能.
  • 维护社区提供的 D、Kotlin、Python、Nim、Rust 绑定。

警告

Godot 4.0 will remove VisualScript from core entirely. As a result, creating new projects using visual scripting in Godot is not recommended. Future Godot 4.x releases may have VisualScript reimplemented as an extension.

While Godot 3.x will keep VisualScript supported, we recommend trying out GDScript instead, especially if you intend to migrate your project to Godot 4.

音频

特性:

  • 单声道、立体声、5.1 和 7.1 输出。

  • 2D 和 3D 的非定位和定位播放。

    • 选择 2D 或 3D 的多普勒效应。
  • 支持重路由 音频总线 以及大量其它效果.

  • Listener2D 和 Listener3D 节点从不同于摄像机的位置进行侦听。

  • 使用AudioEffectCapture类实时访问记录麦克风的音频输入。

  • MIDI 输入.

    • 尚不支持MIDI输出.

使用的 API:

  • Windows: WASAPI。

  • macOS: CoreAudio。

  • Linux: PulseAudio 或 ALSA。

导入

格式:

  • 图片: 请参阅 导入图像

  • 音频:

    • WAV,可选 IMA-ADPCM 压缩。

    • Ogg Vorbis。

    • MP3。

  • 3D 场景:

    • glTF 2.0 (推荐)

    • ESCN (直接从 Blender 导出)。

    • FBX(实验性,仅支持静态网格)。

    • Collada(.dae)。

    • Wavefront OBJ(仅静态场景,可直接被加载为网格)。

  • 在导入时使用 Mikktspace 为 3D 网格生成切线,保证与 Blender 等其他 3D 应用的一致性。

输入

  • 该输入映射系统使用硬编码的输入事件, 也可以使用可重定向的输入动作.

    • 坐标轴参数可以映射到两个不同的操作上, 这些操作可以配置死区.

    • 使用相同的代码支持键盘和手柄操作.

  • 键盘输入.

    • 按键可以被映射到“物理”模式,该模式下按键行为和键盘布局无关。
  • 鼠标输入.

    • 鼠标箭头可以配置为可见, 隐藏, 捕获, 或者限制在窗口范围内.

    • 当捕获了鼠标的原始输入时, 将会绕过windows或者linux操作系统的鼠标加速设置.

  • 手柄输入(最多同时支持 8 个控制器)。

  • 支持带压感的绘图笔和平板输入.

  • Android 系统也支持游戏手柄、键盘和鼠标输入。

导航

  • 2D和3D A星算法.

  • Navigation meshes with dynamic obstacle avoidance.

  • Generate navigation meshes from the editor or at run-time (including from an exported project).

网络

  • 使用StreamPeer和TCP_Server开发底层TCP网络通信.

  • 使用PacketPeer和UDPServer 开发底层UDP网络通信.

  • 使用HTTPClient开发底层HTTP请求.

  • 使用HTTPRequest 开发上层HTTP请求.

    • 使用打包的证书相关工具, 支持开箱即用的HTTPS功能.
  • 使用UDP和ENet的高级联机API.

    • 使用远程过程调用(RPCS)实现的自动同步复制功能.

    • 支持不可靠, 可靠和有序传输模型.

  • 全平台可用的WebSocket客户端和服务器实现.

  • 全平台可用的WebRTC 客户端和服务器实现.

  • 当在NAT后部署服务器时, 支持使用UPnP来避免对转发端口的需求.

国际化

  • 对包含emoji的Unicode完整支持.

  • 使用 CSVgettext 存储本地化字符串.

  • 在你的项目中自动在GUI元素中或通过使用 tr() 函数使用本地化的字符串.

  • 预计在Godot 4.0中加入对从右向左排版与文字塑形的支持.

窗口功能与操作系统整合

  • 移动, 调整大小, 最小化和最大化项目产生的窗口.

  • 更改窗口标题和图标.

  • 吸引注意(在大多数平台上表现为标题栏闪烁)。

  • 全屏模式。

    • 不使用全屏独占模式,不会更改屏幕分辨率。可使用不同分辨率的 Viewport 来代替。
  • 无边框窗口(全屏或非全屏).

  • 窗口置顶功能.

  • 具有每个像素透明度的透明窗口.

  • macOS上的全局菜单整合.

  • 阻塞或非阻塞的命令执行方式.

  • 使用默认或自定义(已注册在系统中的)协议处理器打开文件路径或URL.

  • 解析自定义命令行参数.

  • 可以下载 Linux 的无头/服务器二进制文件,也可以为 macOS 编译。任何二进制文件都可以使用 --no-window 命令行参数关闭窗口使用。

移动端

  • Android 与iOS 的应用内购买.

  • 支持第三方广告组件.

  • 支持Android上的子视图嵌入。

XR 支持(AR 和 VR)

  • 开箱即用的iOS ARKit支持.

  • 支持 OpenXR API。

    • 包含对 Meta Quest、Valve Index 等流行头戴式设备的支持。
  • 支持 OpenVR API。

GUI 系统

Godot 的 GUI 也是使用 Control 节点搭建的,和制作游戏时所使用的节点一致。编辑器 UI 可以通过插件轻松地进行各种扩展。

节点:

  • 按钮。

  • 复选框、复选按钮、单选按钮。

  • 使用 LineEdit(单行文本框)和 TextEdit(多行文本框)进行文本输入。

  • 使用 PopupMenu 和 OptionButton 实现下拉菜单。

  • 滚动条。

  • 标签。

  • 使用 RichTextLabel 显示 使用 BBCode 的格式化文本

  • 树状图(也可用于显示表格)。

  • 支持 RGB 及 HSV 模式的取色器。

  • 容器(水平、垂直、网格、流式、居中、边距、比例、可拖拽分割器……)。

  • 控件可以旋转和缩放。

调整大小:

  • 锚点可将固定GUI元素在特定的角落, 边缘, 或者居中.

  • 容器可根据特定规则自动放置UI元素.

  • 使用 2dviewport 拉伸模式缩放至多种分辨率。

  • 使用锚点和 expand 等比例缩放,支持任意纵横比。

主题:

  • 内置主题编辑器。

    • 根据当前的编辑器主题设置生成主题。
  • 使用 StyleBoxFlat 进行基于向量的程序式主题设计。

    • 支持圆角/斜角、阴影、每边框宽度、抗锯齿。
  • 使用 StyleBoxTexture 进行基于纹理的主题设计。

Godot的发行软件包较小, 使其适合替代Electron或Qt之类的框架.

动画

  • 正向运动学与反向运动学.

  • 使用 Tween 节点通过代码轻松执行程序式动画。

  • 支持为任何属性制作动画, 可自定义插值.

  • 支持在动画轨道中调用方法.

  • 支持在动画轨道中播放声音.

  • 支持在动画中使用贝塞尔曲线.

文件格式

  • 场景和资源可保存为 文本 或二进制格式.

    • 基于文本的格式易于阅读, 并且对版本控制更友好.

    • 二进制格式保存/加载大型场景/资源的速度更快.

  • 使用 File 读写文本或二进制文件.

    • 可选择使用压缩或加密.
  • 读写 JSON 文件.

  • 使用 ConfigFile 读写 INI 样式的配置文件.

    • 可以(反)序列化任何 Godot 数据类型,包括 Vector2/3、Color 等。
  • 使用 XMLParser 读取 XML 文件。

  • 将游戏数据打包到 PCK 文件(针对快速搜索优化的自定义格式),ZIP 存档或直接打包到可执行文件中以进行单文件分发。

  • 导出额外的 PCK 文件,引擎可以读取这些文件以支持 mod 和 DLC。

杂项

  • 对服务器的低级别访问,能够在必要时绕过场景树的开销。

  • 使用命令行接口进行自动化。

    • 使用持续集成平台导出和部署项目.

    • 适用于 Bash、zsh 和 fish 的 Shell 补全脚本

  • 支持将 C++ 模块 静态链接到引擎二进制文件中.

  • 引擎和编辑器以 C++03 编写。

    • 可使用 GCC、Clang、MSVC 进行编译。同时支持 MinGW。

    • 对打包者友好。通常情况下,可以使用系统库代替 Godot 提供的库。构建系统不会下载任何东西。构建完全可重现。

    • Godot 4.0 将使用 C++17 编写。

  • 使用宽松的 MIT 许可。

参见

Godot 建议库 列出了社区要求的、可能在未来 Godot 版本中实现的功能。