功能清單

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

備註

This page lists features supported by the current stable version of Godot (3.3). 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 儘可能獨立於個別平台,並能相對輕鬆地移植至新平台。

編輯器

功能:

  • 場景樹編輯器。

  • 腳本編輯器。

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

  • GDScript 除錯工具

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

  • 效能偵測工具。

  • 即時腳本重載。

  • 即時場景編輯。

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

  • 遠端屬性面板。

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

  • 即時相機複製。

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

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

外掛:

  • 可以從 素材庫 中下載編輯器外掛來擴充編輯器的功能。

  • 使用 GDScript 來自行建立外掛,以增加新功能或加速你的工作流程。

  • 在專案管理員中從素材庫中下載專案,並直接匯入。

2D 圖像

兩種可用的算繪引擎:

  • OpenGL ES 3.0 算繪引擎 (在桌面平台上使用 OpenGL 3.3)。
    • 高階視覺效果。建議用於桌面平台。

  • OpenGL ES 2.0 算繪引擎 (在桌面平台上使用 OpenGL 2.1)。
    • 建議用於行動裝置與網頁平台。

功能:

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

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

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

  • 視差圖層。

    • 通過自動複製多次圖層來產生假 3D 效果 (Psuedo-3D)。

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

    • 硬或軟陰影。

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

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

    • DynamicFont 支援單色字體與彩色字體。支援的格式有 TTF 與 OTF。

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

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

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

  • 基於 CPU 的粒子。

2D 工具

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

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

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

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

  • 2D 幾何 Helper 類別。

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

2D 物理

物理形體:

  • 靜態形體。

  • 剛體。

  • 動力學形體。

  • 關節。

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

碰撞偵測:

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

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

3D 圖形

兩種可用的算繪引擎:

  • OpenGL ES 3.0 算繪引擎 (在桌面平台上使用 OpenGL 3.3)。
    • 高階視覺效果。建議用於桌面平台。

    • 以 sRGB 進行 HDR 算繪。

  • OpenGL ES 2.0 算繪引擎 (在桌面平台上使用 OpenGL 2.1)。
    • 建議用於行動裝置與網頁平台。

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

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

相機:

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

基於物理的算繪:

  • 依照 Disney PBR 模型。

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

  • 法線映射。

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

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

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

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

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

即時光照:

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

  • 全向光照。

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

陰影映射:

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

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

  • SpotLight: 單一紋理。

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

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

    • 以 CPU 烘焙光照圖。

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

反射:

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

  • 使用 ReflectionProbe 來快速烘焙反射或較慢的即時反射。可選擇性開啟平行矯正。

  • GLES3: 螢幕空間反射。

  • 可混合使用多個反射技術以取得更高的精確度。

天空:

  • 全景天空 (使用 HDRI)。

  • 程序性天空。

霧:

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

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

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

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

粒子:

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

  • 基於 CPU 的粒子。

後處理:

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

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

  • GLES3: 近景深或遠景深。

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

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

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

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

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

紋理過濾:

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

紋理壓縮:

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

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

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

  • GLES3: S3TC (在行動裝置與網頁平台上不支援)。

抗鋸齒:

  • 多採樣抗鋸齒 (MSAA)。

  • Fast approximate antialiasing (FXAA).

這些效果中大多數都可以調整為更佳效能或進一步提升品質。這些調整有助於在離線算繪下使用 Godot。

3D 工具

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

  • 用於 產生集合 的工具。

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

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

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

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

  • 3D 集合 Helper 類別。

3D 物理

物理形體:

  • 靜態形體。

  • 剛體。

  • 動力學形體。

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

  • 關節。

  • 軟體。

  • Ragdoll。

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

碰撞偵測:

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

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

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

著色器

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

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

  • 使用 參考 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 中提供可選的都卜勒效應。

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

  • Listener3D 節點可用於在 3D 空間中以與相機的位置進行監聽。

  • 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 (實驗性)。

    • Collada (.dae)。

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

輸入

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

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

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

  • 鍵盤輸入。

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

  • 滑鼠輸入。

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

    • 捕捉滑鼠輸入時,在 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 中可整合全域選單。

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

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

  • 解析自定命令行引數。

行動平台

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

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

  • Support for subview embedding on Android.

支援 XR (AR 與 VR)

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

  • 支援 OpenXR 與 OpenVR API。

  • 通過外掛,可支援主流 VR 頭戴式裝置,如 Oculus Quest 與 HTC Vive。

GUI 圖形界面系統

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

節點:

  • 按鈕。

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

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

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

  • 滾動條。

  • 標籤。

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

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

  • Container (水平、垂直、網格、置中、可拖曳的分割線…等)。

  • Control 節點可旋轉與縮放。

調整大小:

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

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

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

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

佈景主題:

  • 內建主題編輯器。

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

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

    • 支援圓角與斜角、陰影,與每個邊都可調整的寬度。

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

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

動畫

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

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

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

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

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

格式

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

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

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

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

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

  • 可讀寫 JSON 檔案。

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

    • 可序列化或復原序列化任何 Godot 資料型別,包含 Vector, Color…等。

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

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

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

其他

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

  • 可用於自動化的命令行介面。

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

    • 可用於 Bash, ZSH 與 Fish 的 自動補全腳本

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

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

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

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

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

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

也參考

Roadmap Repository 中的文件說明了經討論同意且可能在未來版本中實作的功能。