特性列表

这一页旨在罗列所有的现在被 Godot 支持的功能特性.

备注

这个页面列出了当前稳定版本的 Godot(3.3)所支持的特性。最新的开发版本(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 调试器

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

  • 性能监控工具。

  • 脚本热重载。

  • 场景热编辑。

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

  • 远程检查器。

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

  • 实时摄像机复制。

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

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

插件:

  • 可以从素材库下载编辑器插件,扩展编辑器的功能。

  • 使用 GDScript 创建您自己的插件,从而添加新功能或加快工作流程。

  • 从项目管理器中的素材库下载项目,然后直接导入。

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支持单色字体以及彩色字体(例如用于表情符号)。支持的格式是TTF、OTF和WOFF1。

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

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

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

  • 基于 CPU 的粒子。

2D 工具

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

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

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

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

  • 2D 几何辅助器类.

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

2D物理

物理实体:

  • 静态实体.

  • 刚体.

  • 动力学实体.

  • 关节(Joints).

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

碰撞检测:

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

  • 碰撞多边形(可以被人工绘制或在编辑器中从一个 Sprite 生成而来)。

3D 图形

有两个渲染器可用:

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

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

    • 使用 sRGB 的 HDR 渲染。

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

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

    • 兼容性更高的 LDR 渲染。

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

摄像机:

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

基于物理的渲染:

  • 遵循迪士尼 PBR 模型。

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

  • 法线贴图。

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

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

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

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

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

实时光照:

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

  • 全方向光。

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

阴影贴图:

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

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

  • SpotLight:单个材质。

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

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

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

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

    • 光照贴图在 CPU 上烘焙。

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

反射:

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

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

  • GLES3: 屏幕空间反射.

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

天空:

  • 全景天空(使用HDRI).

  • 程序式天空。

雾:

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

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

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

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

粒子:

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

  • 基于 CPU 的粒子。

后期处理:

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

  • GLES3: 根据视窗亮度自动调整曝光.

  • GLES3: 近景深和远景深.

  • GLES3: 屏幕空间环境光遮挡.

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

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

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

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

纹理过滤:

  • 最近, 双线性, 三线性或各向异性滤波.

纹理压缩:

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

  • GLES3: ETC2(macOS不支持).

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

  • GLES3: S3TC(移动/网络平台不支持).

抗锯齿:

  • 多采样抗锯齿(MSAA).

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

这些效果中的大多数都可以调整以获得更好的性能或进一步提高质量. 这在使用Godot进行脱机渲染时非常有用.

3D 工具

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

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

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

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

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

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

  • 3D 几何体辅助类。

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 绑定。

音频

特性:

  • 单声道, 立体声, 5.1和7.1输出.

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

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

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

  • Listener3D 节点从不同于 3D 摄像机的位置进行侦听.

  • 使用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(仅静态场景,可直接被加载为网格)。

输入

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

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

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

  • 键盘输入.

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

  • 鼠标输入.

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

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

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

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

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

网络

  • 使用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中加入对从右向左排版与文字塑形的支持.

窗口功能与操作系统整合

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

  • 更改窗口标题和图标.

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

  • 全屏模式.

    • 不使用全屏独占模式, 不会更改屏幕分辨率. 可使用不同分辨率的视图来代替.

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

  • 窗口置顶功能.

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

  • macOS上的全局菜单整合.

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

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

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

移动端

  • 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 的格式化文本

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

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

  • 控件可以旋转和缩放。

调整大小:

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

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

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

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

主题:

  • 内置主题编辑器。

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

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

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

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

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

动画

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

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

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

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

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

文件格式

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

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

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

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

    • 可选择使用压缩或加密.

  • 读写 JSON 文件.

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

    • 可以(反)序列化任何 Godot 数据类型,包括 Vector、Color 等。

  • 使用 XMLParser 读取 XML 文件。

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

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

杂项

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

  • 用于自动化的命令行界面.

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

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

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

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

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

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

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

  • 使用宽松的 MIT 许可。

参见

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