Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

特性列表

本页旨在列出 Godot 当前支持的所有特性。

备注

这个页面列出了当前稳定版本的 Godot 所支持的特性。其中一些功能可能在LTS 版本系列 (3.x)中不可用。

平台

参见

See System requirements for hardware and software version requirements.

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

  • Windows (x86, 64-bit and 32-bit).

  • macOS (x86 and ARM, 64-bit only).

  • Linux (x86 and ARM, 64-bit and 32-bit).

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

    • Official binaries are compiled using the Godot Engine buildroot, allowing for binaries that work across common Linux distributions (including LTS variants).

  • Android (editor support is experimental).

  • Web 浏览器 。在 4.0 中是实验性的,当针对 HTML5 时,建议使用 Godot 3.x。

运行导出的项目:

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

备注

在 Godot 4 中用 C# 编写的项目目前无法导出到 Web 平台。如果要在该平台上使用 C#,请考虑使用 Godot 3。 (C# 的)Android 和 iOS 平台支持从 Godot 4.2 开始提供,但仍处于实验阶段,并且 存在一些限制

编辑器

特性:

  • 场景树编辑器。

  • 内置脚本编辑器。

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

  • GDScript 调试器

    • Support for debugging in threads is available since 4.2.

  • 可视化(性能)分析器能指出在渲染管线中 CPU 与 GPU 在每个步骤花费的时间。

  • 性能监视工具,包括自定义性能监视器

  • 脚本热重载。

  • 场景热编辑。

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

  • 远程检查器。

    • 在关闭正在运行的项目后,更改不会被反映在编辑器中,也不会被保留。

  • 实时摄像机复制。

    • 移动编辑器中的摄像头,并在正在运行的项目中查看结果。

  • 内置离线类参考文档。

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

插件:

渲染

提供 3 种渲染方法(运行在 2 种渲染驱动上):

  • Forward+,在Vulkan 1.0 以上运行(具备可选的 Vulkan 1.1和 1.2 功能)。仅适用于桌面平台的最先进图形后端。在桌面平台上默认使用。

  • Forward Mobile,在 Vulkan 1.0 以上运行(带有可选的 Vulkan 1.1 和 1.2 功能)。该功能较少,但渲染简单场景更快。适用于移动和桌面平台。在移动平台上默认使用。

  • Compatibility(兼容),在 OpenGL 3.3、OpenGL ES 3.0 和 WebGL 2.0 以上运行。最低级的图形后端,适合低端桌面和移动平台。在 Web 平台上默认使用。

2D 图形

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

    • 用于绘制线和多边形的高级工具,例如Polygon2DLine2D,支持纹理。

  • AnimatedSprite2D 辅助制作动画精灵。

  • 视差层。

    • 伪 3D 支持,可在编辑器中进行预览。

  • 带有法线贴图和镜面反射贴图的 2D 光照

    • 2D 点光源(全向灯/聚光灯)和平行光源。

    • 硬阴影或软阴影(可根据每个光源进行调整)。

    • 自定义着色器可以访问一个基于 LightOccluder2D 节点的,由实时 SDF 表示的二维场景,它可以用于改进二维照明效果,包括二维全局光源。

  • 字体渲染使用位图,光栅化使用 FreeType 或多通道有符号距离场(MSDF)。

    • 位图字体可以使用 BMFont 等工具导出,也可以从图像导入(仅适用于等宽字体)。

    • 动态字体支持单色字体以及彩色字体(例如用于表情符号)。支持的格式有 TTF、OTF、WOFF1 和 WOFF2。

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

    • 动态字体支持可变字体和 OpenType 功能,包括连字(ligatures)。

    • 当字体文件缺少粗体和斜体样式时,动态字体支持模拟这些样式。

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

    • 动态字体支持亚像素定位(subpixel positioning),使字体在小尺寸下更清晰。

    • 动态字体支持 LCD 亚像素优化,使字体在小尺寸下更加清晰。

    • 带符号距离场字体可以在任何分辨率下进行缩放,而无需重新光栅化。与单色带符号距离场字体相比,利用多通道可使带符号距离场字体更好地缩放至更小尺寸。

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

  • 基于 CPU 的粒子。

  • 为了更好的辉光功能,可选择 2D HDR 渲染

2D 工具

  • TileMap 用于由 2D 图块构建的关卡设计。

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

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

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

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

  • 2D 几何辅助类

2D 物理

物理体:

  • 静态物体。

  • 动画体(用于仅通过脚本或动画移动的物体,如门和平台)。

  • 刚体。

  • 角色体。

  • 关节。

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

碰撞检测:

  • 内置形状:线条,框体,圆圈,胶囊,世界边界(无限平面)。

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

3D 图形

  • 使用 sRGB 进行 HDR 渲染。

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

  • 在使用 Forward+ 后端时,可利用深度预处理(depth prepass)降低过度绘制成本从而提高复杂场景的性能。

  • 可变速率着色 可在支持的 GPU 并且 Forward+ 和 Forward Mobile 模式下使用。

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

  • 遵循迪士尼 PBR 模型。

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

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

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

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

  • 法线贴图。

  • 具有基于距离的自动细节级别的视差/浮雕贴图。

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

  • 次表面散射和透射率。

  • 支持材质粗糙度的屏幕空间折射(达到模糊折射的效果)。

  • 邻近淡出(软粒子)和距离淡出。

  • 远离时淡出可以使用透明度混合(alpha blending)或颜色抖动(dithering)避免穿过透明管线。

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

实时光照:

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

  • 全向光。

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

  • 镜面反射、间接光和体积雾能量可以根据每个光源独立进行调整。

  • 可调节的灯光 "大小" 来帮助虚拟区域打光(也会使阴影更模糊)。

  • 可以选择距离渐变系统(distance fade system)来渐变远处的灯光及其阴影,提高性能。

  • 当使用 Forward+ 后端(桌面上的默认设置)时,灯光将使用集群前向优化进行渲染,以降低其单独成本。集群渲染还取消了对网格上可以使用的灯光数量的任何限制。

  • 使用 Forward 移动后端时,每个网格资源最多可以显示 8 个泛光灯和 8 个聚光灯。如果需要,可以使用烘焙照明来克服这一限制。

阴影贴图:

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

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

  • SpotLight:单个材质。支持彩色投影纹理。

  • 要缓解可见的阴影失真和阴影悬浮的情况,可以调整阴影的法线偏移量偏置以及阴影压平。

  • 类似 PCSS 的阴影模糊是基于光线大小和与阴影投射表面的距离。

  • 可以单独调整各个光源的阴影模糊。

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

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

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

    • 支持动态对象照明采用自动和手动布置探针。

    • 可选支持基于球谐函数的平行光和粗糙反射。

    • 光照贴图在 GPU 上使用计算着色器烘焙(与 CPU 计算光照贴图相比速度更快)。烘焙只能在编辑器中进行,不能在导出的项目中进行。

    • 支持使用 JNLM 进行基于 GPU 的 降噪,或使用 OIDN 进行基于 CPU/GPU 的降噪。

  • 基于体素的 GI 探针。支持动态灯光动态遮挡器,同时还支持反射。需要执行快速烘焙步骤,该步骤可在编辑器中或运行时(包括从导出的项目中)执行。

  • 有符号距离场 GI 是为大型开放世界设计的一种全局照明技术。支持动态光照,不支持动态遮挡器。可以支持反射效果。不需要进行烘焙操作。

  • 屏幕空间间接光照(SSIL),可以选择半分辨率或全分辨率。它完全实时,支持任何类型的自发光光源(包括贴花)。

  • VoxelGI 和 SDFGI 使用延迟渲染通道,可以在半分辨率下渲染全局光照,以提高性能(同时还支持 MSAA 抗锯齿)。

反射:

  • 基于体素的反射(使用 GI 探针时)和基于 SDF 的反射(使用符号距离场 GI 时)。基于体素的反射在透明表面上可见,而基于粗糙 SDF 的反射在透明表面上可见。

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

  • 支持材料粗糙度的屏幕空间反射。

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

  • 使用 Forward+ 后端时(桌面平台的默认设置),反射探针会使用集群前向优化来降低它们的单独开销。集群渲染也消除了在一个网格上使用的反射探针的数量限制。

  • 使用Forward Mobile后端时,每个网格资源最多可以显示8个反射探针。

贴花:

  • 支持漫反射,自发光, ORM 和法线贴图。

  • 纹理通道可以平滑地叠加在底层材料之上,并支持普通/纯 ORM 贴花。

  • 支持根据入射角度来淡出贴花的法线淡出效果。

  • 不依赖实时网格生成。这意味着贴花可用于复杂的蒙皮网格,即使贴花每帧都在移动,也不会影响性能。

  • 支持最近邻、双线性、三线性、各向异性纹理过滤(全局设置)。

  • 可以选择距离渐变系统(distance fade system)来渐变远处的灯光及其阴影,提高性能。

  • 使用 Forward+ 后端时(桌面平台的默认设置),贴花会使用集群前向优化来降低它们的单独开销。集群渲染也消除了在一个网格上使用的贴花的数量限制。

  • 使用Forward Mobile后端时,每个网格资源最多可以显示8个贴花。

天空:

  • 全景天空(使用 HDRI)。

  • 程序天空和基于物理的天空,用于响应场景中的方向光。

  • 支持 自定义天空着色器 可以进行动画处理。

  • 取决于所选的质量设置,用于环境光和镜面反射光的辐射图可以实时更新。

雾:

  • 指数深度雾。

  • 指数高度雾。

  • 支持根据天空颜色自动调整雾的颜色(使用大气透视)。

  • 支持雾中的太阳散射。

  • 支持控制雾的渲染对天空的影响程度,对传统的雾和体积雾进行单独控制。

  • 支持使特定材质忽略雾。

体积雾:

  • 对光影做出反应的全局 体积雾

  • 在使用VoxelGI或SDFGI时体积雾可以受间接光影响。

  • 可以放置雾体积节点以向特定区域添加雾(或从特定区域去除雾)。支持的形状包括长方体、椭圆形、圆锥体、圆柱体和基于 3D 纹理的密度图。

  • 每个雾体积都可以有自己的自定义着色器。

  • 可与传统雾一起使用。

粒子:

  • 基于 GPU 的粒子,支持子发射器(2D + 3D)、尾迹(2D + 3D)、吸引器(仅 3D)和碰撞(2D + 3D)。

    • 支持 3D 粒子吸引器形状:长方体、球体和 3D 向量场。

    • 支持 3D 粒子碰撞形状:长方体、球体、烘焙带符号距离场和实时高度图(适用于开放世界天气效果)。

    • 2D 粒子碰撞是使用基于场景中的 LightOccluder2D 节点实时生成的带符号距离场来处理的。

    • 尾迹可以使用内置的带状尾迹和管状尾迹网格,也可以使用带有骨架的自定义网格。

    • 支持手动发射的自定义粒子着色器。

  • 基于 CPU 的粒子。

后期处理:

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

  • 根据视口亮度自动调整曝光(或使用手动曝光覆盖)。

  • 可以通过景深的远近调节对焦外散斑的模拟(方框、六边形、圆形)。

  • 半分辨率或全分辨率的屏幕空间环境光遮蔽(SSAO)。

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

  • 辉光可以使用彩色污渍贴图纹理,实现镜头脏污效果。

  • 辉光可 用作屏幕空间模糊效果

  • 使用一维渐变或 3D LUT 纹理进行颜色校正。

  • 可减少镜面反射锯齿的影响的粗糙度限幅器。

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

纹理过滤:

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

  • 过滤项是基于每次使用定义的,而不是基于每个纹理。

纹理压缩:

  • Basis Universal(速度较慢,但文件较小)。

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

  • ETC2(macOS 不支持)。

  • S3TC(不支持网页和移动平台)。

抗锯齿:

  • 时间抗锯齿(TAA)。

  • AMD FidelityFX Super Resolution 2.2 antialiasing (FSR2) 可在原始分辨率下用作高质量的时间抗锯齿。

  • 多重采样抗锯齿( MSAA ),同时适用于 2D 抗锯齿3D 抗锯齿

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

  • 使用双线性三维缩放和高于 1.0 的三维分辨率比例进行超采样抗锯齿 (SSAA)。

  • 在每种材质基础上的 Alpha 抗锯齿、基于多重采样(MSAA)的 Alpha 覆盖(Alpha-To-Coverage)和 Alpha 哈希。

分辨率缩放:

  • 支持 以较低分辨率渲染 3D,同时保持原始比例的 2D 渲染。 这可用于提高低端系统的性能或改善高端系统的视觉效果。

  • 分辨率缩放使用了双线性过滤、 AMD FidelityFX Super Resolution 1.0 (FSR1)和 AMD FidelityFX Super Resolution 2.2 (FSR2)。

  • 多级渐远纹理 LOD 偏置会自动调整,以提高较低分辨率比例下的质量。也可以通过手动偏移进行修改。

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

3D 工具

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

  • GridMaps 用于由 3D 图块构建的关卡设计。

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

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

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

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

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

  • 3D 几何体辅助类

  • 支持在编辑器中或在已经被导出的项目的运行时将当前场景导出为 glTF 2.0 文件。

3D 物理学

物理体:

  • 静态物体。

  • 动画体(用于仅通过脚本或动画移动的物体,如门和平台)。

  • 刚体。

  • 角色体。

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

  • 关节。

  • 柔体。

  • 布娃娃。

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

碰撞检测:

  • 内置形状:立方体、球体、胶囊体、圆柱体、世界边界(无限平面)。

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

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

着色器

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

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

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

  • 可视化着色器编辑器。

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

编写脚本

常规:

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

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

  • 支持跨语言脚本编程

  • 多种二维、三维以及四维线性代数数据类型,比如向量和变换。

GDScript:

C#:

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

  • 支持.NET 6 及更高版本。

    • 完全支持C#10.0语法和功能.

  • 支持 Windows、Linux 和 macOS。从 4.2 开始,还提供对 Android 和 iOS 的实验性支持(需要适用于 Android 的 .NET 7.0 项目和适用于 iOS 的 .NET 8.0 项目)。

    • 在 Android 平台上,仅支持部分架构: arm64x64

    • 在 iOS 平台上,仅支持某部分架构: arm64

    • 目前不支持 Web 平台。要在该平台上使用 C # ,请考虑改用 Godot 3。

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

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

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

    • 对于脚本游戏逻辑, 如果性能足够, 建议使用 GDScript 或 C#.

  • 官方对 CC++ 的 GDExtension 绑定。

    • 使用任何你想要的构建系统和语言功能.

  • 社区积极开发对 DHaxeSwiftRust 的 GDExtension 绑定(其中一些绑定可能是实验性的,不适合生产)。

音频

特性:

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

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

    • 选择 2D 或 3D 的多普勒效应。

  • 支持重路由 音频总线 以及大量其它效果.

  • 支持复调(使用单个 AudioStreamPlayer 节点播放多个声音)。

  • 支持随机音量和音高。

  • 支持实时音高缩放。

  • 支持顺序 / 随机采样,包括在随机采样时防止重复。

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

  • 支持程序式音频生成

  • 录制麦克风的音频输入。

  • MIDI 输入.

    • 尚不支持MIDI输出.

使用的 API:

  • Windows: WASAPI。

  • macOS: CoreAudio。

  • Linux: PulseAudio 或 ALSA。

导入

格式:

  • 图片: 请参阅 导入图像

  • 音频:

    • WAV,可选 IMA-ADPCM 压缩。

    • Ogg Vorbis。

    • MP3。

  • 3D 场景: 请参阅 导入 3D 场景

    • glTF 2.0 (推荐)

    • .blend(隐式调用 Blender 的 glTF 导出功能)。

    • FBX (通过显式调用 FBX2glTF )。

    • Collada(.dae)。

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

  • 支持在运行时加载 glTF 2.0 场景(包括已经导出的项目)。

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

输入

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

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

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

  • 键盘输入。

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

  • 鼠标输入。

    • 可以将鼠标光标配置为可见、隐藏、捕获,或者将其限制在窗口范围内。

    • 捕获输入时,在 Windows 和 Linux 平台会使用原始输入,回避操作系统的鼠标加速度设置。

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

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

网络

  • 使用 StreamPeerTCPServer 开发底层TCP网络通信.

  • 使用 PacketPeerUDPServer 开发底层UDP网络通信.

  • 使用 HTTPClient 进行低阶 HTTP 请求。

  • 使用 HTTPRequest 进行高阶 HTTP 请求。

    • 使用打包的证书相关工具, 支持开箱即用的HTTPS功能.

  • 使用UDP和ENet的 高级联机API.

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

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

  • WebSocket 客户端和服务器,全平台可用。

  • WebRTC 客户端和服务器,全平台可用。

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

国际化

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

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

    • 支持从编辑器中生成 gettext POT 和 PO 文件。

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

  • 当使用 gettext 翻译时,支持多元化和翻译上下文。

  • 支持 双向排版 ,文本整形和 OpenType 本地化表单。

  • 用于从右到左区域设置的自动UI镜像。

  • 支持伪本地化,以测试你的项目对 i18n 的友好性。

窗口功能与操作系统整合

  • 在单个进程中生成多个独立窗口。

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

  • 更改窗口标题和图标.

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

  • 全屏模式。

    • 在 Windows 上,默认情况下使用无边框全屏进行快速切换,但也可以选择使用独占全屏来减少输入滞后。

  • 无边框窗口(全屏或非全屏)。

  • 窗口置顶功能。

  • macOS上的全局菜单整合.

  • 以阻塞或非阻塞方式执行命令(包括运行同一项目的多个实例)。

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

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

  • 任何 Godot 二进制文件(编辑器或导出的项目)都可以 用作无头服务器 ,方法是用 --headless 命令行参数启动它。这允许在没有GPU或显示服务器的情况下运行引擎。

移动端

  • AndroidiOS 上的应用内购。

  • 支持第三方广告组件.

XR 支持(AR 和 VR)

  • 开箱即用的 OpenXR 支持

    • 包括对流行的桌面 VR 头戴式设备的支持,例如 Valve Index、WMR 头戴式显示器和 Quest over Link。

  • 通过插件,使用 OpenXR 支持 基于 Android 的头戴式设备

    • 包括对流行的一体式 VR 头戴设备的支持,例如 Meta Quest 1/2/3 和 Pro、Pico 4、Magic Leap 2 和 Lynx R1。

  • 通过 XR 插件结构支持的其他设备。

  • 可以使用各种高级工具包来实现 XR 应用程序所需的常见功能。

GUI 系统

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

节点:

  • 按钮。

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

  • 使用