特性列表
本页旨在列出 Godot 当前支持的所有特性。
备注
This page lists features supported by the current stable version of Godot. Some of these features are not available in the 3.x release series.
平台
参见
软硬件版本需求见 系统需求。
可以运行编辑器以及导出项目的:
Windows (x86 and ARM, 64-bit and 32-bit).
macOS(x86 和 ARM,仅 64 位)。
Linux(x86 和 ARM,64 位和 32 位)。
二进制文件是静态链接的,并且如果在足够旧的基本发行版上进行编译,则可以在任何发行版上运行。
Official binaries are compiled using the Godot Engine buildroot, allowing for binaries that work across common Linux distributions.
Android(编辑器支持是实验性的)。
Web 浏览器 。在 4.0 中是实验性的,当针对 HTML5 时,建议改用 Godot 3.x。
运行导出的项目:
iOS。
主机。
Godot 的目标是尽可能地独立于平台,并且可以相对轻松地移植到新平台。
备注
在 Godot 4 中用 C# 编写的项目目前无法导出到 Web 平台。如果要在该平台上使用 C#,请考虑使用 Godot 3。(C# 的)Android 和 iOS 平台支持从 Godot 4.2 开始提供,但仍处于实验阶段,并且存在一些限制。
编辑器
特性:
场景树编辑器。
内置脚本编辑器。
支持 Visual Studio Code、VIM 等外部文本编辑器。
GDScript 调试器。
从 4.2 版本开始支持多线程调试。
可视化(性能)分析器,能指出在渲染管线中 CPU 与 GPU 在每个步骤花费的时间。
性能监视工具,包括自定义性能监视器。
脚本热重载。
场景热编辑。
更改会在编辑器中生效,并会在关闭运行的项目后保留。
远程检查器。
更改不会在编辑器中生效,也不会在关闭运行的项目后保留。
实时相机复制。
移动编辑器中的相机,并在正在运行的项目中查看结果。
内置离线类参考文档。
使用由社区贡献的支持数十种语言的编辑器。
插件:
渲染
Godot 4 includes three renderers:
Forward+. The most advanced renderer, suited for desktop platforms only. Used by default on desktop platforms. This renderer uses Vulkan, Direct3D 12, or Metal as the rendering driver, and it uses the RenderingDevice backend.
Mobile. Fewer features, but renders simple scenes faster. Suited for mobile and desktop platforms. Used by default on mobile platforms. This renderer uses Vulkan, Direct3D 12, or Metal as the rendering driver, and it uses the RenderingDevice backend.
Compatibility, sometimes called GL Compatibility. The least advanced renderer, suited for low-end desktop and mobile platforms. Used by default on the web platform. This renderer uses OpenGL as the rendering driver.
See Renderers for a detailed comparison of the rendering methods.
2D 图形
精灵、多边形和线条渲染。
AnimatedSprite2D 辅助制作动画精灵。
视差层。
伪 3D 支持,可在编辑器中进行预览。
带有法线贴图和镜面反射贴图的 2D 光照。
2D 点光源(全向灯/聚光灯)和定向光源。
硬阴影或软阴影(可根据每个光源进行调整)。
自定义着色器可以访问一个基于 LightOccluder2D 节点的,由实时 SDF 表示的 2D 场景,它可以用于改进 2D 照明效果,包括 2D 全局光源。
字体渲染使用位图,光栅化使用 FreeType 或多通道有符号距离场(MSDF)。
位图字体可以使用 BMFont 等工具导出,也可以从图像导入(仅适用于等宽字体)。
动态字体支持单色字体以及彩色字体(例如用于表情符号)。支持的格式有 TTF、OTF、WOFF1 和 WOFF2。
动态字体支持宽度和颜色可调的可选字体轮廓。
动态字体支持可变字体和 OpenType 功能,包括连字(ligatures)。
当字体文件缺少粗体和斜体样式时,动态字体支持模拟这些样式。
动态字体支持超采样, 以在更高的分辨率下保持字体的清晰度.
动态字体支持亚像素定位(subpixel positioning),使字体在小尺寸下更清晰。
动态字体支持 LCD 亚像素优化,使字体在小尺寸下更加清晰。
带符号距离场字体可以按任意分辨率缩放,而无需重新光栅化。与单色带符号距离场字体相比,利用多通道可使带符号距离场字体能够更好地缩小到较小的大小。
基于 CPU 的粒子。
用于更好的辉光功能的可选 2D HDR 渲染。
2D 工具
2D 物理
物理体:
静态物体。
可动画物体(用于仅通过脚本或动画移动的物体,如门和平台)。
刚体。
角色体。
关节。
区域,用以检测实体进入或离开。
碰撞检测:
内置形状:线条、框体、圆圈、胶囊、世界边界(无限平面)。
碰撞多边形(可以人工绘制,或者在编辑器中根据精灵生成)。
3D 图形
使用 sRGB 进行 HDR 渲染。
透视、正交以及视锥偏移摄像机。
When using the Forward+ renderer, a depth prepass is used to improve performance in complex scenes by reducing the cost of overdraw.
可变速率着色 on supported GPUs in Forward+ and Mobile.
基于物理的渲染(内置材质特性):
遵循迪士尼 PBR 模型。
支持 Burley、Lambert、Lambert Wrap(半 Lambert)、Toon 漫反射着色模式。
支持 Schlick-GGX、Toon 和 Disabled 镜面反射着色模式。
使用粗糙度金属度工作流,支持 ORM 纹理。
使用地平线镜面反射遮蔽(Filament 模型)提升材质外观。
法线贴图。
具有基于距离的自动细节层次的视差/浮雕贴图。
反照率及法线贴图的细节贴图。
次表面散射和透射率。
支持材质粗糙度的屏幕空间折射(产生模糊折射)。
邻近淡出(软粒子)和距离淡出。
距离淡出可以使用透明度混合或抖动以避免穿过透明管线。
抖动可以根据每个像素或每个对象来确定。
实时光照:
定向光(日光/月光)。每个场景最多 4 个。
全向光。
可调整锥角和衰减的聚光。
镜面反射、间接光和体积雾能量可以根据每个光源进行调整。
可调节的灯光 "大小" 用于伪造面光(也会使阴影更模糊)。
可选的距离淡化系统(distance fade system)可以淡化远处的灯光及其阴影,从而提高性能。
When using the Forward+ renderer (default on desktop), lights are rendered with clustered forward optimizations to decrease their individual cost. Clustered rendering also lifts any limits on the number of lights that can be used on a mesh.
When using the Mobile renderer, up to 8 omni lights and 8 spot lights can be displayed per mesh resource. Baked lighting can be used to overcome this limit if needed.
阴影贴图:
DirectionalLight:正交(最快)、PSSM 2 分割和 4 分割。支持分割之间的混合。
OmniLight:双抛物面(快速)或立方映射(较慢但更精确)。支持全景形式的彩色投影纹理。
SpotLight:单个纹理。支持彩色投影纹理。
要缓解可见的阴影失真和阴影悬浮的情况,可以调整阴影的法线偏移量偏置以及阴影压平。
类似 PCSS 的阴影模糊是基于光源大小和距阴影投射表面的距离。
根据每个灯光调整阴影模糊。
具有间接照明的全局光照:
Baked lightmaps (fast, but can't be updated at runtime).
支持仅烘焙间接光照,或者同时烘焙直接和间接光照。可以根据每个灯光调整烘焙模式,以允许混合光照烘焙设置。
支持使用自动和手动放置的探针照明动态物体。
可选支持基于球谐函数的平行光和粗糙反射。
光照贴图使用计算着色器在 GPU 上烘焙(与 CPU 光照贴图相比速度更快)。烘焙只能从编辑器执行,而不能在导出的项目中执行。
支持使用 JNLM 进行基于 GPU 的降噪,或使用 OIDN 进行基于 CPU/GPU 的降噪。
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 runtime (including from an exported project).
为大型开放世界设计的有符号距离场 GI。支持动态光照,不支持动态遮挡器。支持反射。无需烘焙。
以半分辨率或全分辨率进行的屏幕空间间接光照(SSIL)。完全实时并支持任何类型的自发光光源(包括贴花)。
VoxelGI 和 SDFGI 使用延迟渲染通道,可以在半分辨率下渲染全局光照,以提高性能(同时还支持 MSAA 抗锯齿)。
反射:
基于体素的反射(使用 GI 探针时)和基于 SDF 的反射(使用符号距离场 GI 时)。基于体素的反射在透明表面上可见,而基于粗糙 SDF 的反射在透明表面上可见。
使用 ReflectionProbe 实现较快的烘焙反射或较慢的实时反射。可以选择启用视差盒校正。
支持材料粗糙度的屏幕空间反射。
可以混用反射技术,以获得更高的准确性或可扩展性。
When using the Forward+ renderer (default on desktop), reflection probes are rendered with clustered forward optimizations to decrease their individual cost. Clustered rendering also lifts any limits on the number of reflection probes that can be used on a mesh.
When using the Mobile renderer, up to 8 reflection probes can be displayed per mesh resource. When using the Compatibility renderer, up to 2 reflection probes can be displayed per mesh resource.
贴花:
支持反照率、自发光、ORM 和法线贴图。
纹理通道平滑地叠加在底层材质之上,并支持普通/仅 ORM 贴花。
支持法线淡化,以根据入射角度来淡化贴花。
Does not rely on runtime mesh generation. This means decals can be used on complex skinned meshes with no performance penalty, even if the decal moves every frame.
支持最近邻、双线性、三线性、各向异性纹理过滤(全局设置)。
可选的距离淡化系统(distance fade system)以淡化远处的贴花,提高性能。
When using the Forward+ renderer (default on desktop), decals are rendered with clustered forward optimizations to decrease their individual cost. Clustered rendering also lifts any limits on the number of decals that can be used on a mesh.
When using the Mobile renderer, up to 8 decals can be displayed per mesh resource.
天空:
全景天空(使用 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(不支持网页和移动平台)。
Antialiasing:
时间抗锯齿(TAA)。
AMD FidelityFX Super Resolution 2.2 抗锯齿(FSR2)可在原始分辨率下用作高质量的时间抗锯齿。
快速近似抗锯齿(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 工具
3D 物理学
物理体:
静态物体。
可动画物体(用于仅通过脚本或动画移动的物体,如门和平台)。
刚体。
角色体。
车身(用于街机物理,而非模拟)。
关节。
柔体。
布娃娃。
区域,用以检测实体进入或离开。
碰撞检测:
内置形状:立方体、球体、胶囊体、圆柱体、世界边界(无限平面)。
从编辑器中为任意网格生成三角形碰撞形状。
从编辑器中为任意网格生成一个或多个凸碰撞形状。
着色器
2D:自定义顶点、片段和灯光着色器。
3D:自定义顶点、片段、灯光和天空着色器。
基于文本的着色器,使用由 GLSL 启发的着色器语言。
可视化着色器编辑器。
支持可视化着色器插件。
编写脚本
常规:
具有脚本扩展节点的面向对象设计模式。
用于脚本之间通信的信号和组。
支持跨语言脚本编程。
多种 2D、3D 以及 4D 线性代数数据类型,比如向量和变换。
High-level interpreted language with optional static typing.
语法受 Python 启发。但是,GDScript 并不基于 Python。
GitHub 上提供了语法高亮显示。
使用线程执行异步操作或使用多个处理器内核。
打包成单个单独的二进制文件,以降低文件大小和依赖关系。
Supports .NET 8 and higher.
Full support for the C# 12.0 syntax and features.
Supports Windows, Linux, and macOS. Since Godot 4.2, experimental support for Android and iOS is also available.
在 iOS 平台上仅支持部分架构:
arm64
。目前不支持 Web 平台。要在该平台上使用 C# ,请考虑改用 Godot 3。
建议使用外部编辑器以从 IDE 功能中获益。
GDExtension(C、C++、Rust、D……):
音频
特性:
单声道、立体声、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 场景)。
Support for loading glTF 2.0 scenes at runtime, including from an exported project.
在导入时使用 Mikktspace 为 3D 网格生成切线,保证与 Blender 等其他 3D 应用的一致性。
输入
输入映射系统使用硬编码的输入事件或可重映射的输入动作。
轴值可以映射到具有可配置死区的两个不同的动作。
使用相同的代码来支持键盘和游戏手柄。
键盘输入。
按键可以以“物理”模式映射,以独立于键盘布局。
鼠标输入。
鼠标光标可以是可见的、隐藏的、被捕获的或被限制在窗口内的。
捕获输入时,在 Windows 和 Linux 平台会使用原始输入,回避操作系统的鼠标加速度设置。
手柄输入(最多同时支持 8 个控制器)。
支持带压感的绘图笔和平板输入。
网络
使用 StreamPeer 和 TCPServer 进行低阶 TCP 网络通信。
使用 PacketPeer 和 UDPServer 进行低阶 UDP 网络通信。
使用 HTTPClient 进行低阶 HTTP 请求。
使用 HTTPRequest 进行高阶 HTTP 请求。
使用捆绑证书支持开箱即用的 HTTPS。
使用 UDP 和 ENet 的高级联机API。
使用远程过程调用(RPC)进行自动复制。
支持不可靠、可靠和有序传输。
WebSocket 客户端和服务器,全平台可用。
WebRTC 客户端和服务器,全平台可用。
当在 NAT 后托管服务器时,支持使用 UPnP 来避免转发端口的需求。
国际化
窗口功能与操作系统整合
在单个进程中生成多个独立窗口。
移动、调整大小、最小化和最大化由项目产生的窗口。
更改窗口标题和图标。
吸引注意(在大多数平台上表现为标题栏闪烁)。
全屏模式。
在 Windows 上,默认情况下使用无边框全屏进行快速切换,但也可以选择使用独占全屏来减少输入滞后。
无边框窗口(全屏或非全屏)。
窗口置顶功能。
macOS 上的全局菜单整合。
以阻塞或非阻塞方式执行命令(包括运行同一项目的多个实例)。
使用默认或自定义(已在系统上注册)协议处理程序打开文件路径和 URL。
解析自定义命令行参数。
通过用
--headless
命令行参数启动它,任何 Godot 二进制文件(编辑器或导出的项目)都可以用作无头服务器。这允许在没有 GPU 或显示服务器的情况下运行引擎。
移动端
XR 支持(AR 和 VR)
开箱即用的 OpenXR 支持。
包括对流行的桌面 VR 头显的支持,例如 Valve Index、WMR 头显和 Quest over Link。
Support for Android-based headsets using OpenXR through a plugin.
包括对流行的独立头显的支持,例如 Meta Quest 1/2/3 和 Pro、Pico 4、Magic Leap 2 和 Lynx R1。
通过 XR 插件结构支持的其他设备。
可以使用各种高级工具包来实现 XR 应用程序所需的常见功能。
GUI 系统
Godot 的 GUI 也是使用与用于在 Godot 中制作游戏相同的 Control 节点构建的。编辑器 UI 可以使用插件以多种方式轻松扩展。
节点:
按钮。
复选框、复选按钮、单选按钮。
使用 LineEdit(单行)和 TextEdit(多行)进行文本输入。TextEdit 还支持代码编辑功能,例如显示行号和语法高亮。
使用 PopupMenu 和 OptionButton 实现下拉菜单。
滚动条。
标签。
用于使用 BBCode 的格式化文本的 RichTextLabel,支持自定义动画效果。
树(也可用于显示表格)。
支持 RGB 及 HSV 模式的取色器。
控件可以被旋转和缩放。
调整大小:
锚点将 GUI 元素保持在特定的角落、边缘或中心。
容器按照特定规则自动放置 GUI 元素。
使用
canvas_items
或viewport
拉伸模式,缩放至多种分辨率。使用锚点和
expand
拉伸比例,支持任意纵横比。
主题:
内置主题编辑器。
根据当前的编辑器主题设置生成主题。
使用 StyleBoxFlat 进行基于向量的程序式主题设计。
支持圆角/斜角、阴影、各边框宽度、抗锯齿。
使用 StyleBoxTexture 进行基于纹理的主题设计。
Godot 较小的发行包大小,使其适合成为 Electron 或 Qt 等框架的替代品。
动画
正向运动学与反向运动学。
支持使用可自定义插值动画化任意属性。
支持在动画轨道中调用方法。
支持在动画轨道中播放声音。
支持在动画中使用贝塞尔曲线。
文件格式
场景和资源可保存为文本或二进制格式。
基于文本的格式易于阅读,并且对版本控制更友好。
二进制格式保存/加载大型场景/资源的速度更快。
使用 FileAccess 读写文本或二进制文件。
可选择使用压缩或加密。
读写 JSON 文件。
使用 ConfigFile 读写 INI 样式的配置文件。
可以(反)序列化任何 Godot 数据类型,包括 Vector2/3、Color 等。
使用 XMLParser 读取 XML 文件。
无需通过 Godot 的导入系统, 即可在导出的项目中加载和保存图像、音频/视频、字体和 ZIP 存档。
将游戏数据打包到 PCK 文件(针对快速搜索优化的自定义格式)、ZIP 存档或直接打包到可执行文件中以进行单文件分发。
导出额外的 PCK 文件,引擎可以读取这些文件以支持 mod 和 DLC。
杂项
视频播放内置支持 Ogg Theora。
Movie Maker 模式可从正在运行的项目中录制视频,并具有同步音频和完美的帧同步。
对服务器的低级别访问,能够在必要时绕过场景树的开销。
使用命令行接口进行自动化。
使用持续集成平台导出和部署项目。
适用于 Bash、zsh 和 fish 的 Shell 补全脚本 。
在所有平台使用 print_rich 将彩色文本打印至标准输出。
支持将 C++ 模块静态链接到引擎二进制文件中。
引擎和编辑器以 C++17 编写。
可使用 GCC、Clang、MSVC 进行编译。同样支持 MinGW。
对打包者友好。通常情况下,可以使用系统库代替 Godot 提供的库。构建系统不会下载任何东西。构建完全可重现。
使用宽松的 MIT 许可。
开放的开发过程,欢迎贡献。
参见
Godot 提案库列出了社区要求的、可能在未来 Godot 版本中实现的功能。