Jede C++-Bibliothek in Godot nutzen – ohne eigenen Build

Using any C++ library in Godot

Jede C++-Bibliothek in Godot nutzen – ohne eigenen Build

Godot kann nativen Code nur über GDExtension laden, und godot-cpp bildet die Brücke. Der schwierige Teil ist der Build: godot-cpp muss zur Godot-Version passen, und jede eingebundene Bibliothek muss für jede Zielplattform kompiliert werden. Conan löst das, indem godot-cpp als reguläres Paket mit den Optionen api_version und target bereitsteht. Ein Beispiel simuliert 100.000 Partikel mit der ECS-Bibliothek flecs in einer Godot-Szene.

Das Schreiben des C++-Codes ist der einfache Teil. Der schwierige Teil ist der Build: godot-cpp muss zu deiner Godot-Version passen, und jede Bibliothek, die du hinzufügst, muss für jede Plattform kompiliert werden, auf der du veröffentlichst.
  1. valorzard

    Wenn du Rust kennst, sind die Godot-Rust-Bindings für GDExtension ebenfalls wirklich gut und ermöglichen es dir, jede Rust-Bibliothek in Godot zu verwenden (einschließlich tokio und async Rust, wenn du wirklich willst)

    https://godot-rust.github.io/

  2. voodooEntity

    Ich habe vor kurzem herumgespielt und ein RTS mit Godot gebaut, bis ich einfach an die Grenze dessen gestoßen bin, was ich mit GDScript leistungsmäßig bewältigen konnte.

    Dann habe ich angefangen, einen Großteil der schweren Logik in eine C++-Simulation zu verlagern: mühsam, in der Tat, aber die Ergebnisse sprechen für sich.

    Im Grunde erlaubt es mir, Godot für Dinge wie Menüs, Dialoge und ähnliches zu nutzen, während die eigentliche schwere Arbeit in einer C++-Simulation läuft.

  3. MeteorMarc

    Also, welche Profiling-Unterstützung gibt es, um die kritischen Teile deines GDScript- oder C#-Codes zu finden? Bevor man sich aus Performance-Gründen unnötig in C++-Ärger stürzt? Tfa befasst sich mit funktionalen Gründen, was in Ordnung ist.

  4. Asmod4n

    Ich baue etwas Ähnliches, mit C++26-Reflection. So kann jede Sprache C++-Bibliotheken mit nur wenigen Zeilen Boilerplate auf lebenszeitsichere und, wo möglich, speichersichere Weise nutzen. Und wo es nicht möglich ist, die sichere Lebensdauer eines Objekts abzuleiten, habe ich eine kleine .toml-Datei, die der Bibliothek sagt, wie diese Funktionen sicher zu verwenden sind.

  5. zerr

    > // Copy the position of every entity into the MultiMesh buffer

    Also, ist Zero-Copy aufgrund der Grenzen zwischen Welt (C++ vs. Godot) unmöglich?

Mehr von diesem Tag

2026-09-29