功能特性列表

这个页面旨在列出当前Godot引擎所支持的所有特性。

注解

这个页面列出了当前稳定版本的Godot (3.2)所支持的特性。更多的特性可以在最新的开发版本(4.0)中查阅。

特性

平台

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

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

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

  • Linux(64位和32位的x86或ARM平台).

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

运行导出的项目:

  • 安卓4.4及以上版本。
  • iOS 10.0及更高版本。
  • 通过WebAssembly (火狐浏览器,谷歌浏览器,Edge浏览器,Opera浏览器) 的HMTL5.
  • 主机.

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

编辑器

特性:

  • 场景树编辑器.

  • 脚本编辑器.

  • 支持例如 Visual Studio 或者 VIM 这样的 外部文本编辑器

  • GDScript 调试器.

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

  • 脚本热重载.

  • 场景热编辑.

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

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

    • 移动编辑器中的摄像头,并在正在运行的项目中查看结果。
  • 使用由社区贡献的支持数十种语言的编辑器。

插件:

  • 可以从:ref:`asset library <doc_what_is_assetlib>`下载编辑器插件,以扩展编辑器功能。
  • 使用 GDScript 创建您自己的插件,以添加新功能或加快工作流程。
  • 从项目管理器中的Asset library下载项目,然后直接导入。

2D图形

两个可用渲染器:

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

特性:

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

    • 绘制线和多边形的高级工具,例如Polygon2D和Line2D。
  • 作为辅助创建具有动画效果的Sprites节点的AnimatedSprites 节点。

  • 视差层.

    • 通过自动多次复制同一个图层来支持伪三维。
  • 带法线贴图的 2D 照明。

    • 硬阴影或软阴影。
  • 使用位图(位图字体)的字体呈现或使用 FreeType (动态字体) 进行栅格化。

    • 位图字体可以通过例如 BMFont 的工具被导出。
    • 动态字体支持单色字体和彩色字体。支持的格式是 TTF 和 OTF。
    • 动态字体支持具有可调整宽度和颜色的可选字体轮廓。
    • 支持字体超采样,以在更高的分辨率下保持字体的清晰度。
  • 支持自定义粒子着色器的基于GPU的粒子。

  • 基于CPU的粒子。

2D工具

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

  • 用于代表2维空间中的一条路径的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 渲染来提供更好的兼容性。
    • 并不是所有的特性都可用。只有在使用下方标有*GLES3*的 OpenGLES 3.0 渲染器时,特性才可用。

摄像机

  • 角度看,正和锥体偏移的摄像机。

基于物理的渲染:

  • 遵循迪士尼PBR模型。
  • 使用一个支持 ORM 纹理的粗糙金属工作流。
  • Normal mapping (法线贴图).
  • GLES3: 基于距离的拥有自动层级细节的视差/浮雕透视。
  • GLES3: 次表面散射和透射率。
  • GLES3: 近距离衰减(软颗粒)。
  • 可以使用alpha混合或抖动避免距离衰减通过透明管道。
  • 抖动可以根据每个像素或每个对象来确定。

Real-time lighting(实时光照):

  • 定向光(日光/月光)。每个场景最多4个。
  • 全方向光。
  • 可调整锥角和衰减的聚光灯。

阴影贴图:

  • *方向光:*正交(最快),PSSM 2-split和4-split。支持分割之间的混合。
  • OmniLight: Dual paraboloid (fast) or cubemap (slower but more accurate). Supports colored projector textures in the form of panoramas.
  • *SpotLight(点光):*单个材质。

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

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

    • 光照贴图在CPU上烘培。
  • *GLES3:*GI(全局光照)探头(较慢,半实时)。支持反射。

反射:

  • GLES3: 基于体素的反射(当使用GI全局光照探头)。
  • 使用反射探头(ReflectionProbe)进行快速烘培反射或缓慢的实时反射。视差校正可以选择启用。
  • GLES3: 屏幕空间反射。
  • 反射技术可以被混合使用从而获得更好的精度。

天空:

  • 全景天空(使用HDRI)。
  • 全景天空。

雾:

  • 具有可调衰减曲线的深度雾。
  • Height fog (floor or ceiling) with adjustable attenuation.
  • 支持基于相机角度的自动深度雾颜色(依据日光的颜色)。
  • 可选透光率,使灯光在雾中更清晰可见。

粒子:

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

自定义后期处理:

  • 色调映射(线性、Reinhard、Filmic、ACES)。
  • *GLES3:*根据视口亮度自动调整曝光。
  • GLES3: 近景深和远景深。
  • GLES3: 屏幕空间环境光遮挡。
  • 发光(glow/bloom)可以使用可选的双三次放大和多种混合模式:屏幕,柔和光,添加,替换。
  • 使用一维渐变进行颜色校正。
  • 亮度、对比度和饱和度调整。

纹理过滤:

  • 最近、双线性、三线性或各向异性滤波。

纹理压缩:

  • *GLES3:*用于高质量压缩的BPTC(macOS不支持)。
  • GLES3: ETC2(macOS不支持)。
  • ETC1(建议在使用GLES2渲染器时使用)。
  • *GLES3:*S3TC(移动/网络平台不支持)。

抗锯齿:

  • 多采样抗锯齿(MSAA)。

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

3D工具

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

  • 工具:ref:procedural geometry generation<doc_procedural_geometry>

  • Constructive solid geometry (用于原型制作)。

  • Path3D节点表示三维空间中的路径。

    • 可以在编辑器中绘制或者通过程序生成。
    • PathFollow3D节点,使节点跟随Path3D。
  • 三维几何帮助器类。

3D物理学

物理实体:

  • 静态实体.
  • 刚体.
  • 动力学实体.
  • Vehicle bodies (intended for arcade physics, not simulation).
  • 关节(Joints).
  • 软体。
  • 布娃娃系统。
  • 用以检测实体进入或离开的区域。

碰撞检测:

  • 内置形状:长方体、球体、胶囊、圆柱体(仅适用于子弹物理)。
  • 从编辑器中为任何网格生成三角形碰撞形状。
  • 从编辑器中为任何网格生成一个或多个凸碰撞形状。

着色器

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

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

  • 基于文本的着色器使用`受GLSL启发的着色器语言`。

  • 可视化着色器编辑器。

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

编写脚本

常规:

  • 具有脚本扩展节点的面向对象设计模式。
  • 用于脚本之间通信的信号和组。
  • 支持:ref:cross language scripting<doc_cross_language_scripting>
  • 多种二维和三维线性代数数据类型,如向量和变换。

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的非定位和定位播放。

    • Optional Doppler effect in 2D and 3D.
  • 支持重路由 音频总线 以及大量其它效果。

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

  • 支持录制麦克风,作为音频输入。

  • MIDI 输入。

    • 尚不支持MIDI输出.

被使用的 API :

  • Windows: WASAPI.
  • macOS: CoreAudio。
  • Linux: PulseAudio 或 ALSA.

Import

  • 支持:ref:custom import plugins <doc_import_plugins>

Formats:

  • Images: See 导入图像.

  • Audio:

    • WAV,可选IMA-ADPCM压缩。
    • Ogg Vorbis.
  • 3D scenes:

    • glTF 2.0 (推荐使用).
    • ESCN (direct export from Blender).
    • FBX (实验性功能)。
    • Collada (.dae)。
    • Wavefront OBJ(仅静态场景,可直接被加载为mesh)。

输入

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

    • 坐标轴参数可以映射到两个不同的操作上,这些操作可以配置死区。
    • 使用相同的代码支持键盘和手柄操作。
  • 键盘输入。

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

    • 鼠标箭头可以配置为可见,隐藏,捕获,或者限制在窗口范围内。
    • 当捕获了鼠标的原始输入时,将会绕过windows或者linux操作系统的鼠标加速设置。
  • Gamepad input (up to 8 simultaneous controllers).

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

网络

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

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

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

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

    • 使用打包的证书相关工具,支持开箱即用的HTTPS功能。
  • High-level multiplayer API using UDP and ENet.

    • 使用远程过程调用(RPCS)实现的自动同步复制功能。
    • 支持不可靠,可靠和有序传输模型。
  • 全平台可用的WebSocket客户端和服务器实现。

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

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

国际化

  • 对包含emoji的Unicode完整支持。
  • 使用 :ref:'CSV <doc_internationalizing_games>"或 :ref:'gettext <doc_localization_using_gettext>"存储本地化字符串。
  • Use localized strings in your project automatically in GUI elements or by using the tr() function.
  • Support for right-to-left typesetting and text shaping planned in Godot 4.0.

Windowing and OS integration

  • Move, resize, minimize, and maximize the window spawned by the project.

  • 更改窗口标题和图标。

  • Request attention (will cause the title bar to blink on most platforms).

  • Fullscreen mode.

    • Doesn't use exclusive fullscreen, so the screen resolution can't be changed this way. Use a Viewport with a different resolution instead.
  • Borderless window (fullscreen or non-fullscreen).

  • Ability to keep the window always on top.

  • Transparent window with per-pixel transparency.

  • Global menu integration on macOS.

  • Execute commands in a blocking or non-blocking manner.

  • Open file paths and URLs using default or custom protocol handlers (if registered on the system).

  • Parse custom command line arguments.

Mobile

  • In-app purchases on Android and iOS.
  • Support for advertisements using third-party modules.

XR support (AR and VR)

  • Support for ARKit on iOS out of the box.
  • Support for the OpenXR and OpenVR APIs.
  • Popular VR headsets like the Oculus Quest and HTC Vive are supported thanks to plugins.

GUI system

Godot's GUI is built using the same Control nodes used to make games in Godot. The editor UI can easily be extended in many ways using add-ons.

Nodes:

  • 按钮。
  • Checkboxes, check buttons, radio buttons.
  • Text entry using LineEdit (single line) and TextEdit (multiple lines).
  • Dropdown menus using PopupMenu and OptionButton.
  • Scrollbars.
  • 标签。
  • RichTextLabel for text formatted using BBCode.
  • Trees (can also be used to represent tables).
  • Containers (horizontal, vertical, grid, center, margin, draggable splitter, ...).
  • Controls can be rotated and scaled.

Sizing:

  • Anchors to keep GUI elements in a specific corner, edge or centered.

  • Containers to place GUI elements automatically following certain rules.

  • Scale to multiple resolutions using the 2d or viewport stretch modes.

  • Support any aspect ratio using anchors and the expand stretch aspect.

Theming:

  • 内置主题编辑器。

    • Generate a theme based on the current editor theme settings.
  • Procedural vector-based theming using StyleBoxFlat.

    • Supports rounded/beveled corners, drop shadows and per-border widths.
  • Texture-based theming using StyleBoxTexture.

Godot's small distribution size can make it a suitable alternative to frameworks like Electron or Qt.

动画

  • 正向运动学与逆向运动学。
  • Support for animating any property with customizable interpolation.
  • Support for calling methods in animation tracks.
  • Support for playing sounds in animation tracks.
  • Support for Bézier curves in animation.

Formats

  • Scenes and resources can be saved in text-based or binary formats.

    • Text-based formats are human-readable and more friendly to version control.
    • Binary formats are faster to save/load for large scenes/resources.
  • Read and write text or binary files using File.

    • Can optionally be compressed or encrypted.
  • Read and write JSON files.

  • Read and write INI-style configuration files using ConfigFile.

    • Can (de)serialize any Godot datatype, including Vector, Color, ...
  • Read XML files using XMLParser.

  • Pack game data into a PCK file (custom format optimized for fast seeking), into a ZIP archive, or directly into the executable for single-file distribution.

  • Export additional PCK files that can be read by the engine to support mods and DLCs.

其他

  • Low-level access to servers which allows bypassing the scene tree's overhead when needed.

  • Command line interface for automation.

  • Support for C++ modules statically linked into the engine binary.

  • Engine and editor written in C++03.

    • Can be compiled using GCC, Clang and MSVC. MinGW is also supported.
    • Friendly towards packagers. In most cases, system libraries can be used instead of the ones provided by Godot. The build system doesn't download anything. Builds can be fully reproducible.
    • Godot 4.0 will be written in C++17.
  • Licensed under the permissive MIT license.

参见

The roadmap 库中的文件是已被提上议程 并可能会在未来Godot发布的版本实装。