Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

特性列表

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

备注

This page lists features supported by the current stable version of Godot. Some of these features may not be available in the LTS release series (3.x).

平台

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

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

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

  • Linux(64 位,x86 和 ARM)。

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

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

    • 可以从源代码编译 32 位二进制文件。

  • Android 6.0及更高版本(编辑器支持是实验性的)。

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

运行导出的项目:

  • iOS 11.0 及更高版本。

  • 主机

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

备注

Projects written in C# using Godot 4 currently cannot be exported to the web platform. To use C# on that platform, consider Godot 3 instead. Android and iOS platform support is available as of Godot 4.2, but is experimental and some limitations apply.

编辑器

特性:

  • 场景树编辑器。

  • 内置脚本编辑器。

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

  • GDScript 调试器

    • 尚不支持在线程中调试。

  • 可视化(性能)分析器能指出在渲染管线中 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 的粒子。

  • Optional 2D HDR rendering for better glow capabilities.

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 个。

  • 全向光。

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

  • Specular, indirect light, and volumetric fog energy can be adjusted on a per-light basis.

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

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

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

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

阴影贴图:

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

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

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

  • 阴影通常情况下会偏置补偿和阴影平移,以减少可见的阴影失真和阴影悬浮的数量。

  • PCSS-like shadow blur based on the light size and distance from the surface the shadow is cast on.

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

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

  • Baked lightmaps (fast, but can't be updated at run-time).

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

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

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

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

    • Supports GPU-based denoising with JNLM, or CPU/GPU-based denoising with OIDN.

  • Voxel-based GI probes. Supports dynamic lights and dynamic occluders, while also supporting reflections. Requires a fast baking step which can be performed in the editor or at run-time (including from an exported project).

  • Signed-distance field GI designed for large open worlds. Supports dynamic lights, but not dynamic occluders. Supports reflections. No baking required.

  • Screen-space indirect lighting (SSIL) at half or full resolution. Fully real-time and supports any kind of emissive light source (including decals).

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

反射:

  • Voxel-based reflections (when using GI probes) and SDF-based reflections (when using signed distance field GI). Voxel-based reflections are visible on transparent surfaces, while rough SDF-based reflections are visible on transparent surfaces.

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

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

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

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

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

贴花:

  • Supports albedo, emissive, ORM, and normal mapping.

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

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

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

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

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

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

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

天空:

  • 全景天空(使用 HDRI)。

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

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

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

雾:

  • 指数深度雾。

  • 指数高度雾。

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

  • 支持雾中的太阳散射。

  • Support for controlling how much fog rendering should affect the sky, with separate controls for traditional and volumetric fog.

  • Support for making specific materials ignore fog.

体积雾:

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

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

  • Fog volume nodes that can be placed to add fog to specific areas (or remove fog from specific areas). Supported shapes include box, ellipse, cone, cylinder, and 3D texture-based density maps.

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

  • 可与传统雾一起使用。

粒子:

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

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

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

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

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

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

  • 基于 CPU 的粒子。

后期处理:

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

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

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

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

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

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

  • Glow can be used as a screen-space blur effect.

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

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

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

纹理过滤:

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

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

纹理压缩:

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

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

  • ETC2(macOS 不支持)。

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

抗锯齿:

  • 时间抗锯齿(TAA)。

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

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

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

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

分辨率缩放:

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

  • 分辨率缩放使用了双线性过滤或 AMD FidelityFX Super Resolution 1.0 (FSR)。

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

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

3D 工具

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

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

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

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

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

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

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

  • 3D 几何体辅助类

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

3D 物理学

物理体:

  • 静态物体。

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

  • 刚体。

  • 角色体。

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

  • 关节。

  • 柔体。

  • 布娃娃。

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

碰撞检测:

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

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

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

着色器

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

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

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

  • 可视化着色器编辑器。

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

编写脚本

常规:

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

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

  • 支持跨语言脚本编程

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

GDScript:

C#:

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

  • Supports .NET 6 and higher.

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

  • Supports Windows, Linux, and macOS. As of 4.2 experimental support for Android and iOS is also available (requires a .NET 7.0 project for Android and 8.0 for iOS).

    • On the Android platform only some architectures are supported: arm64 and x64.

    • On the iOS platform only some architectures are supported: arm64.

    • The web platform is currently unsupported. To use C# on that platform, consider Godot 3 instead.

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

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

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

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

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

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

  • Actively developed GDExtension bindings for D, Haxe, Swift, and Rust bindings provided by the community. (Some of these bindings may be experimental and not production-ready).

音频

特性:

  • 单声道、立体声、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 支持

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

  • 开箱即用的iOS ARKit支持.

  • 支持 OpenVR API。

GUI 系统

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

节点:

  • 按钮。

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

  • 使用 LineEdit(单行)和 TextEdit(多行)进行文本输入。TextEdit 还支持代码编辑功能,例如显示行号和语法高亮。

  • 使用 PopupMenuOptionButton 实现下拉菜单。

  • 滚动条。

  • 标签。

  • 使用 RichTextLabel 显示 使用 BBCode 的格式化文本,支持自定义动画效果。

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

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

  • 控件可以旋转和缩放。

调整大小:

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

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

  • 使用 canvas_itemsviewport 拉伸模式缩放至 多种分辨率

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

主题:

  • 内置主题编辑器。

    • 根据当前的编辑器主题设置生成主题。

  • 使用 StyleBoxFlat 进行基于向量的程序式主题设计。

    • 支持圆角/斜角、阴影、每边框宽度、抗锯齿。

  • 使用 StyleBoxTexture 进行基于纹理的主题设计。

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

动画