Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Godot 엔진에 대하여
`godot-cpp <https://github.com/godotengine/godot-cpp>`__는 Godot 프로젝트의 일부로 유지되는 공식 C++ GDExtension 바인딩입니다.
godot-cpp는 :ref:`GDExtension 시스템 <doc_gdextension>`으로 구축되어 :ref:`modules <doc_custom_modules_in_cpp>`과 거의 동일한 방식으로 Godot에 대한 액세스를 허용합니다. 많은 `엔진 코드 <https://github.com/godotengine/godot>`__를 godot-cpp 프로젝트에서 거의 그대로 사용할 수 있습니다.
특히, godot-cpp는 GDScript 및 :ref:`C# <doc_c_sharp>`이 가지고 있는 모든 기능에 접근할 수 있으며, 데이터에 대한 빠른 하위 수준 접근 또는 Godot와의 심층 통합을 위해 몇 가지 추가 기능에 대한 추가 접근권한을 갖습니다.
godot-cpp와 C++ 모듈와의 차이
엔진 바이너리와 정적으로 연결된 C++ 모듈 지원.
또한 둘 다 타사 라이브러리를 Godot에 통합할 수 있게 해줍니다. 선택해야 할 것은 필요에 따라 다릅니다.
godot-cpp의 장점
모듈과 달리, godot-cpp(및 일반적으로 GDExtensions)는 엔진의 소스 코드를 컴파일할 필요가 없으므로 작업을 더 쉽게 배포할 수 있습니다. 이를 통해 GDScript 및 C#에서 사용할 수 있는 대부분의 API에 액세스할 수 있으므로 성능을 완전히 제어하면서 게임 로직을 코딩할 수 있습니다. :ref:`asset 라이브러리 <doc_what_is_assetlib>`에 추가 기능으로 배포하려는 고성능 코드가 필요한 경우 이상적입니다.
또한:
편집기와 내보낸 프로젝트에서 동일한 컴파일된 godot-cpp 라이브러리를 사용할 수 있습니다. C++ 모듈을 사용하면 런타임에 해당 기능이 필요한 경우 사용하려는 모든 내보내기 템플릿을 다시 컴파일해야 합니다.
godot-cpp에서는 전체 엔진이 아닌 라이브러리만 컴파일하면 됩니다. 이는 엔진에 정적으로 컴파일되는 C++ 모듈과 다릅니다. 모듈을 변경할 때마다 엔진을 다시 컴파일해야 합니다. 증분 빌드를 사용하더라도 이 프로세스는 godot-cpp를 사용하는 것보다 느립니다.
C++ 모듈의 장점
엔진 바이너리와 정적으로 연결된 C++ 모듈 지원.
C++ 모듈은 엔진에 대한 더 깊은 통합을 제공합니다. GDExtension의 액세스는 정적 모듈만큼 깊지 않습니다.
C++ 모듈을 사용하면 기본 라이브러리 파일을 가지고 다니지 않고도 프로젝트에 추가 기능을 제공할 수 있습니다. 이는 내보낸 프로젝트까지 확장됩니다.
참고
특정 시스템이 godot-cpp를 통해 액세스할 수 없지만 사용자 정의 모듈을 통해 액세스할 수 있는 경우 `godot-cpp 저장소 <https://github.com/godotengine/godot-cpp>`__에서 문제를 열어 누락된 기능을 노출하기 위한 구현 옵션에 대해 논의하세요.
버전 호환성
이전 버전의 Godot를 대상으로 하는 GDExtensions는 이후 마이너 버전에서 작동해야 하지만 그 반대의 경우는 작동하지 않습니다. 예를 들어 Godot 4.2를 대상으로 하는 GDExtension은 Godot 4.3에서 제대로 작동하지만 Godot 4.3을 대상으로 하는 GDExtension은 Godot 4.2에서 작동하지 않습니다.
이러한 이유로 GDExtensions를 생성할 때 최신 버전의 Godot가 아님 필요한 기능을 갖춘 가장 낮은 버전의 Godot를 대상으로 삼고 싶을 수도 있습니다. 이렇게 하면 다양한 버전의 Godot에 대해 여러 빌드를 생성할 필요가 없어집니다.
이에 대한 한 가지 예외가 있습니다: Godot 4.0을 대상으로 하는 확장 프로그램은 Godot 4.1 이상에서 작동하지 **않습니다**(4.1용 GDExtension 업데이트 참조).
GDExtensions는 또한 확장 프로그램이 컴파일된 것과 동일한 수준의 부동 소수점 정밀도를 사용하는 엔진 빌드와만 호환됩니다. 즉, 배정밀도 부동 소수점이 포함된 엔진 빌드를 사용하는 경우 확장도 배정밀도 부동 소수점에 대해 컴파일되어야 하며 사용자 정의 엔진 빌드에서 생성된 extension_api.json 파일을 사용해야 함을 의미합니다. 자세한 내용은 :ref:`doc_large_world_coordinates`를 참조하세요.
일반적으로 말하자면, Godot의 사용자 정의 버전을 빌드하는 경우 GDExtensions에 대해 extension_api.json``를 생성해야 합니다. 왜냐하면 공식 Godot 빌드와 약간의 차이가 있을 수 있기 때문입니다. :ref:`빌드 시스템 섹션 <doc_godot_cpp_build_system>`에서 사용자 정의 ``extension_api.json 파일을 사용하는 프로세스에 대해 자세히 알아볼 수 있습니다.