功能清單

本頁列出了目前 Godot 所支援的所有功能。

備註

This page lists features supported by the current stable version of Godot (3.4). More features are available in the latest development version (4.0).

功能

支援平台

在編輯器與匯出的專案中均可執行:

  • Windows 7 及更新版本 (64 位元與 32 位元)。

  • macOS 10.12 及更新版本 (64 位元、x86 與 ARM)。

  • Linux (64 位元或 32 位元,x86 或 ARM)。

    • 二進位檔使用靜態連結,並且若在一定舊的基礎發行版上編譯,則可在任意發行版上執行。

    • 官方二進位執行檔使用 Ubuntu 14.04 編譯。

  • 通過 WebAssembly 的 HTML5 (Firefox, Chrome, Edge, Opera)。

執行匯出的專案:

Godot 儘可能獨立於個別平台,並能相對輕鬆地移植至新平台。

編輯器

功能:

  • 場景樹編輯器。

  • Built-in script editor.

  • 支援如 Visual Studio Code 或 Vim 的 外部腳本編輯器

  • GDScript 除錯工具

    • 尚未支援對執行緒進行除錯。

  • 效能偵測工具。

  • 即時腳本重載。

  • 即時場景編輯。

    • 更改將反應到編輯器上,並會在正在執行的專案關閉後保留。

  • 遠端屬性面板。

    • 更改將不會反應到編輯器上,且關閉正在執行的專案後將不會保留。

  • 即時相機複製。

    • 移動編輯器中的相機,並在執行中專案內檢視結果。

  • 在編輯器中使用數十種由社群支援的語言。

外掛:

2D 圖像

兩種可用的算繪引擎:

  • OpenGL ES 3.0 算繪引擎 (在桌面平台上使用 OpenGL 3.3)。

    • 高階視覺效果。建議用於桌面平台。

  • OpenGL ES 2.0 算繪引擎 (在桌面平台上使用 OpenGL 2.1)。

    • 建議用於行動裝置與網頁平台。

功能:

  • Sprite、多邊形與線條算繪引擎。

    • 用於繪製如 Polygon2D 與 Line2D 的線條與多邊形之高階工具。

  • 使用 AnimatedSprite 協助建立動畫化的 Sprite。

  • 視差圖層。

    • Pseudo-3D support including preview in the editor.

  • 使用一般映射的 2D 光照。

    • 硬或軟陰影。

  • 使用點陣圖來進行字體算繪 (BitmapFont) 或使用 FreeType 來點陣化 (DynamicFont)。

    • 點陣圖字體可使用如 BMFont 等工具來匯出。

    • DynamicFont supports monochrome fonts as well as colored fonts (e.g. for emoji). Supported formats are TTF, OTF and WOFF1.

    • Dynamicfont 支援可選的字體描邊與可調整的寬度與色彩。

    • 支援字體過採樣,以在高解析度下保持字體清晰可見。

  • 基於 GPU 的粒子支援自定粒子著色器。

  • 基於 CPU 的粒子。

2D 工具

  • 具有內建平滑與拖移邊距的 2D 相機。

  • 用於在 2D 空間中表示路徑的 Path2D 節點。

    • 可在編輯器中繪製或以程式產生。

    • 可用於使節點跟著 Path2D 路徑的 PathFollow2D 節點。

  • 2D 幾何 Helper 類別。

  • 用於繪製紋理 2D 線條的 Line2D 節點。

2D 物理

物理形體:

  • 靜態形體。

  • 剛體。

  • 動力學形體。

  • 關節。

  • 用於偵測形體進入或離開的區域。

碰撞偵測:

  • 內建形狀:線、框、圈、橢圓。

  • 碰撞幾何 (可手動繪製或從編輯器中自 Sprite 產生)。

3D 圖形

兩種可用的算繪引擎:

  • OpenGL ES 3.0 算繪引擎 (在桌面平台上使用 OpenGL 3.3)。

    • 高階視覺效果。建議用於桌面平台。

    • Optional HDR rendering with sRGB (enabled by default).

    • Uses an optional depth prepass (enabled by default) to reduce the cost of overdraw, which speeds up complex scene rendering.

  • OpenGL ES 2.0 算繪引擎 (在桌面平台上使用 OpenGL 2.1)。

    • 建議用於行動裝置與網頁平台。

    • 為提供最佳相容性,以 LDR 進行算繪。

    • 並非所有功能都可用。當使用 OpenGL ES 3.0 算繪引擎時,僅在下方標示 GLES3 時才可用。

相機:

  • 透視法、正視投影與錐臺偏移相機。

Physically-based rendering (built-in material features):

  • 依照 Disney PBR 模型。

  • Supports Lambert, Lambert Wrap (half-Lambert), Oren-Nayar and Toon diffuse shading modes.

  • Supports Schlick-GGX, Blinn, Phong, Toon and Disabled specular shading modes.

  • 使用支援 ORM 紋理的粗糙金屬 (Roughness-metallic) 工作流程。

  • Uses horizon specular occlusion (Filament model) to improve material appearance

  • 法線映射。

  • Detail mapping for the albedo and normal maps.

  • 距離淡化可使用 Alpha 混合或晃動以避免穿過透明管線。

  • 晃動可依像素級別或物件級別來判斷。

  • GLES3: 依據距離自動判斷精細等級的視差/浮雕映射。

  • GLES3: 次表面散射與透射。

  • GLES3: Refraction with support for material roughness (resulting in blurry refraction). On GLES2, refraction is still functional but lacks support for material roughness.

  • GLES3: 臨近淡化 (軟粒子)。

即時光照:

  • 有向光照 (太陽/月亮)。每個場景最多可有 4 個。

  • 全向光照。

  • 有可調整圓錐角與衰減的聚光。

  • Specular energy can be adjusted on a per-light basis.

  • GLES3: Lighting is done with a single-pass forward approach. By default, up to 32 omni light and 32 spot lights can be displayed per mesh resource. If needed, this limit can be increased at the cost of increased shader compilation times and lower performance. GLES2 uses a multi-pass forward approach to lighting, which doesn't have a limit on the number of lights but is slower with many lights.

陰影映射:

  • DirectionalLight: 正交 (最快), PSSM 2-Split 與 4-Split。支援在 Split (切割) 間混合。

  • OmniLight: Dual Paraboloid (較快) 或 Cubemap (較慢但較精確)。支援 Panoramas 格式的色彩透射紋理 (Colored Projector Texture)。

  • SpotLight: 單一紋理。

以間接光照進行全域照明:

  • 烘焙光照圖 (較快,但無法在執行時更新)。

    • Supports baking indirect light only or baking both direct and indirect lighting. The bake mode can be adjusted on a per-light basis to allow for hybrid light baking setups.

    • Supports lighting dynamic objects using an automatic octree-based system. No manual probe placement is required.

    • 以 CPU 烘焙光照圖。

  • GLES3: GI 探查 (較慢,半即時)。支援反射。

反射:

  • Fast baked reflections or slow real-time reflections using ReflectionProbe. Parallax box correction can optionally be enabled.

  • Reflection techniques can be mixed together for greater accuracy or scalability.

  • GLES3: 基於 Voxel 的反射 (使用 GI 探查時)。

  • GLES3: 螢幕空間反射。

天空:

  • 全景天空 (使用 HDRI)。

  • 程序性天空。

霧:

  • 有可調整衰減曲線的深度霧。

  • 有可調整衰減的高度霧 (地面或天花板)。

  • 支援依照相機角度自動調整深度霧色彩 (以配合陽光的色彩)。

  • 可選擇開啟透射以讓光照在霧中提高能見度。

粒子:

  • GLES3: 支援自定粒子著色器之基於 CPU 的粒子。

  • 基於 CPU 的粒子。

後處理:

  • 色調映射 (線性, Reinhard, Filmic, ACES)。

  • GLES3: 基於檢視區亮度自動調整曝光。

  • GLES3: 近景深或遠景深。

  • GLES3: 螢幕空間週遭遮擋。

  • GLES3: Optional debanding to avoid color banding (effective when HDR rendering is enabled).

  • 以可選的雙立方放大發光,並有多種可用的混合模式:螢幕、軟廣、新增、取代。

  • 使用單維漸變進行色彩校正。

  • 亮度、對比度與飽和度調整。

紋理過濾:

  • 最近、雙線性、三線性或各向異性過濾。

紋理壓縮:

  • Lossless or lossy WebP (does not save VRAM; only reduces storage size).

  • S3TC (only supported on desktop platforms).

  • ETC1 (使用 GLES2 算繪引擎時建議使用)。

  • GLES3: BPTC 以獲得高品質壓縮 (在 macOS 上不支援)。

  • GLES3: ETC2 (在 macOS 上不支援)。

抗鋸齒:

  • 多採樣抗鋸齒 (MSAA)。

  • Fast approximate antialiasing (FXAA).

Performance:

  • Occlusion culling with rooms and portals. Supports gameplay notifications with primary and secondary visibility to disable AI/physics processing for nodes that don't need it.

  • Real-time occluder spheres. Not as effective as rooms and portals (and doesn't support gameplay notifications), but easier to set up.

備註

Most of the effects listed above can be adjusted for better performance or to further improve quality. This can be helpful when using Godot for offline rendering.

3D 工具

  • 內建網格:立方體、圓柱體/錐體、(半)球體、稜柱體、平面、四邊形。

  • 用於 產生集合 的工具。

  • 建置實體集合 (用於製作 Prototype)。

  • 在 3D 空間中表示路徑的 Path3D 節點。

    • 可在編輯器中繪製或以程式產生。

    • 使用 PathFollow3D 節點來使節點跟隨 Path3D。

  • 3D 集合 Helper 類別。

  • Support for exporting the current scene as a glTF 2.0 file from the editor.

3D 物理

物理形體:

  • 靜態形體。

  • 剛體。

  • 動力學形體。

  • Vehicle 形體 (用於處理 Arcade 物理而非模擬)。

  • 關節。

  • 軟體。

  • Ragdoll。

  • 用於偵測形體進入或離開的區域。

碰撞偵測:

  • Built-in shapes: cuboid, sphere, capsule, cylinder.

  • 在編輯器內為任意網格產生三角碰撞區域。

  • 在編輯器內為任意網格產生一個或多個凸碰撞區域。

著色器

  • 2D: 自定頂點、Fragment 與光照著色器。

  • 3D: 自定頂點、Fragment、光照與天空著色器。

  • Text-based shaders using a shader language inspired by GLSL.

  • 視覺著色器編輯器。

    • 支援視覺著色器外掛。

撰寫腳本

一般:

  • 可通過腳本來擴充節點的物件導向設計模式。

  • 可通過訊號與群組來在腳本間進行通訊。

  • 支援 跨語言腳本編寫

  • 多種 2D 與 3D 線型資料型別,如向量與變換。

GDScript:

C#:

  • 打包為獨立二進位檔案,以減少檔案大小與相依性。

  • 使用 Mono 6.x。

    • 完整支援 C# 7.0 語法與功能。

  • 支援所有平台。

  • 建議使用外部編輯器以獲得更多 IDE 功能。

視覺腳本 VisualScript:

  • 圖像式的視覺腳本語言

  • 適合用於特定功能 (如用於特定關卡的邏輯),而非以視覺腳本 VisualScript 來製作整個專案。

GDNative (C, C++, Rust, D, ...):

  • 當有需要時,可通過連接到原生函式庫以獲得更佳效能與進行第三方整合。

    • 若要撰寫遊戲腳本邏輯,則建議在效能允許的情況下使用 GDScript 或 C#。

  • 官方支援的 C 與 C++ 繫結。

    • 可依照需求使用任何建置系統與語言功能。

  • 由社群維護的 D, Kotlin, Python, Nim 與 Rust 繫結。

音訊

功能:

  • 單聲道、立體聲、5.1 與 7.1 輸出。

  • 在 2D 與 3D 空間中的非位置性與位置性播放。

    • 在 2D 與 3D 中提供可選的都卜勒效應。

  • 支援可重新導向的 音訊匯流排 與特效,並包含數十種特效。

  • Listener2D and Listener3D nodes to listen from a position different than the camera.

  • Audio input to record microphones with real-time access using the AudioEffectCapture class.

  • MIDI 輸入。

    • 尚未支援 MIDI 輸出。

所用 API:

  • Windows: WASAPI。

  • macOS: CoreAudio。

  • Linux: PulseAudio 或 ALSA。

匯入

格式:

  • 圖片: 請參閱 匯入圖片

  • 音訊:

    • WAV,可選擇是否使用 IMA-ADPCM 壓縮。

    • Ogg Vorbis。

    • MP3。

  • 3D 場景:

    • glTF 2.0 (推薦)

    • ESCN (直接從 Blender 中匯出)。

    • FBX (experimental, static meshes only).

    • Collada (.dae)。

    • Wavefront OBJ (僅可使用靜態場景,可直接載入為網格)。

  • 3D meshes use Mikktspace to generate tangents on import, which ensures consistency with other 3D applications such as Blender.

輸入

  • 使用硬式編碼的輸入事件或可重新映射的輸入操作來進行輸入映射。

    • 座標軸數值可映射至兩個不同的操作,並配有可設定的反應區域。

    • 使用同一個程式碼來同時支援鍵盤與遊戲控制器。

  • 鍵盤輸入。

    • 可將按鍵以「物理模式」進行映射,以避免因鍵盤配置不同而影響映射。

  • 滑鼠輸入。

    • 可將滑鼠遊標設為可見、隱藏、捕捉、或限制於視窗內。

    • 捕捉滑鼠輸入時,在 Windows 與 Linux 上會使用原始輸入,以繞過作業系統的滑鼠加速設定。

  • 遊戲控制器輸入 (同時支援最多 8 組控制器)。

  • 具有感壓支援的繪圖筆/繪圖板輸入。

  • Gamepad, keyboard and mouse input support are also available on Android.

網路

  • 使用 StreamPeer 與 TCP_Server 來操作低階 TCP 網路。

  • 使用 PacketPeer 與 UDPServer 來操作低階 UDP 網路。

  • 使用 HTTPClient 來傳送低階 HTTP 請求。

  • 使用 HTTPRequest 來傳送高階 HTTP 請求。

    • 支援 HTTPS,使用內建附帶的憑證。

  • 使用 UDP 與 ENet 來支援高階多玩家 API。

    • 通過遠端程序呼叫 (RPC) 來自動複製。

    • 支援不可靠、可靠、與有序的傳輸模式。

  • 在所有平台上均配有 WebSocket 用戶端與伺服器。

  • 在所有平台上均配有 WebRTC 用戶端與伺服器。

  • 支援在 NAT 下架設伺服器時通過 UPnP 來繞過需要連接埠轉發的需求。

國際化

  • 完整支援包含 Emoji 在內的 Unicode。

  • 將本地化字串儲存於 CSVgettext 格式。

  • 可在 GUI 元素中自動使用專案中的本地化字串,亦可使用 tr() 函式。

  • 預計於 Godot 4.0 中支援 RTL 文字模式與文字形狀。

視窗環境與作業系統整合

  • 移動、縮放、最小化與最大化由專案產生的視窗。

  • 更改視窗標題與圖示。

  • 喚起注意 (在大多數平台上,會使標題列閃爍)。

  • 全螢幕模式。

    • 不使用獨立的全螢幕,因此在該模式下無法更改螢幕解析度。可使用 Viewport 來設定不同的解析度。

  • 無邊框視窗 (可用於全螢幕或非全螢幕)。

  • 可將視窗設為總是在最頂端。

  • 透明視窗,可做到每個像素點都為透明。

  • 在 macOS 中可整合全域選單。

  • 阻斷式或非阻斷式地執行指令。

  • 使用預設或 (系統中有註冊時) 自定的通訊協定處理常式來開啟檔案路徑或網址。

  • 解析自定命令行引數。

  • Headless/server binaries can be downloaded for Linux and compiled for macOS. Any binary can be used without a window using the --no-window command line argument.

行動平台

  • 支援 iOS 與 Android 的內購功能。

  • 支援以第三方模組來顯示廣告。

  • Support for subview embedding on Android.

支援 XR (AR 與 VR)

  • 開箱即用支援 iOS 上的 ARKit。

  • Support for the OpenXR APIs.

    • Includes support for popular headsets like the Meta Quest and the Valve Index.

  • Support for the OpenVR APIs.

GUI 圖形界面系統

Godot 的 GUI 時使用在 Godot 中製作遊戲相同的 Control 節點製成的。編輯器的 UI 可通過擴充套件來輕鬆擴充。

節點:

  • 按鈕。

  • 勾選框、勾選按鈕、單選按鈕。

  • 使用 LineEdit (單行) 與 TextEdit (多行) 來加上文字輸入框。

  • 使用 PopupMenu 與 OptionButton 來製作下拉選單。

  • 滾動條。

  • 標籤。

  • 使用 RichTextLabel 來顯示 使用 BBCode 格式化的文字

  • 樹狀圖 (也可以用於顯示表格)。

  • Color picker with RGB and HSV modes.

  • Containers (horizontal, vertical, grid, flow, center, margin, aspect ratio, draggable splitter, ...).

  • Control 節點可旋轉與縮放。

調整大小:

  • 通過錨點 (Anchor) 來將 GUI 元素置於特定的角落、邊緣或置中。

  • 通過容器 (Container) 來依照特定規則自動擺放 GUI 元素。

  • 可通過 2DViewport 伸縮模式來縮放至不同的解析度。

  • 通過錨定與 Expand 伸縮模式來支援任何長寬比。

佈景主題:

  • 內建主題編輯器。

    • 通過目前的編輯器佈景主題設定來產生佈景主題。

  • 使用 StyleBoxFlat 來製作基於向量的佈景主題。

    • Supports rounded/beveled corners, drop shadows, per-border widths and antialiasing.

  • 通過 StyleBoxTexture 來以紋理製作佈景。

Godot 的小型發行版大小適合用於作為 Electron 或 Qt 的替代方案。

動畫

  • 正向運動學與反向運動學。

  • Tween node to easily perform procedural animations by code.

  • 支援以可客製化的插值算法來動畫化任何屬性。

  • 支援在動畫軌中呼叫方法。

  • 支援在動畫軌中播放聲音。

  • 支援在動畫中使用貝茲曲線。

File formats

  • 場景與資源可保存為 文字檔 或二進位格式。

    • 文字檔為人類可讀取的格式,並較適合用於版本控制系統。

    • 二進位檔案在保存與讀取大型場景或資源時較快。

  • 使用 File 來讀取與寫入二進位檔案。

    • 可使用可選的壓縮或加密。

  • 可讀寫 JSON 檔案。

  • 可通過 ConfigFile 來讀寫 INI 格式的組態設定檔。

    • Can (de)serialize any Godot datatype, including Vector2/3, Color, ...

  • 可通過 XMLParser 來讀取 XML 檔案。

  • 可將遊戲資料打包進 PCK 檔案 (可更快讀取的客製化格式),或是打包進 ZIP 壓縮檔,亦或是直接打包進執行檔內來發佈單一檔案。

  • 匯出額外的 PCK 檔案 ,可讓引擎讀取,並用於支援 Mod 或 DLC。

其他

  • 低階伺服器存取 可在需要時繞過場景樹的一些瓶頸。

  • Command line interface for automation.

    • 通過持續整合 (CI, Continuous Integration) 平台來匯出與部署專案。

    • Shell completion scripts are available for Bash, zsh and fish.

  • 支援將 C++ 模組 靜態連結到引擎二進位檔中。

  • 引擎與編輯器以 C++03 撰寫。

    • 可通過 GCC, Clang 與 MSVC 進行 編譯 。亦支援 MinGW。

    • 對打包者友好。在大多數情況下,都可使用系統函式庫來代替 Godot 中提供的函式庫。建置系統不需要額外下載任何東西。建置過程完全可重現。

    • Godot 4.0 會使用 C++ 17 來撰寫。

  • 以鬆散的 MIT 授權條款授權。

也參考

The Godot proposals repository lists features that have been requested by the community and may be implemented in future Godot releases.