Godot에서 어떤 C++ 라이브러리든 사용하기
Using any C++ library in Godot

Godot는 GDScript로 게임 로직을 작성하지만, 네이티브 C/C++ 라이브러리가 필요한 순간이 온다. GDExtension과 godot-cpp를 사용하면 C++ 코드를 엔진 클래스처럼 노출할 수 있다. 문제는 빌드: godot-cpp 버전을 Godot에 맞추고, 추가한 모든 라이브러리를 각 플랫폼용으로 컴파일해야 한다. Conan과 ConanCenter의 godot-cpp 10 레시피를 사용하면 이 의존성 관리를 단순화할 수 있다. flecs ECS 라이브러리로 10만 개 입자를 시뮬레이션하는 예제를 통해 전체 과정을 보여준다.
GDScript는 네이티브 코드를 호출할 수 없지만, Godot는 GDExtension을 통해 이를 로드할 수 있으며, 공식 C++ 바인딩인 godot-cpp를 사용하면 해당 코드를 일반 엔진 클래스로 노출할 수 있다.
HN 토론
49- valorzard
Rust를 알고 있다면, GDExtension용 Godot Rust 바인딩도 정말 훌륭하고 Godot에서 어떤 Rust 라이브러리든 사용할 수 있게 해줍니다 (정말 원한다면 tokio와 async rust도 포함해서)
- voodooEntity
최근에 Godot으로 RTS를 만들면서 놀고 있었는데, GDScript 성능 면에서 내가 감당할 수 있는 한계에 부딪혔어.
그래서 많은 무거운 로직을 C++ 시뮬레이션으로 옮기기 시작했지: 확실히 지루하긴 한데 결과는 스스로 말해주더라.
기본적으로 메뉴, 대화창 같은 것들은 Godot으로 처리하고, 진짜 무거운 작업은 C++ 시뮬레이션에서 돌릴 수 있게 해줘.
- MeteorMarc
그래서, 성능 문제 때문에 불필요하게 C++의 번거로움으로 뛰어들기 전에, GDScript나 C# 코드의 중요한 부분을 찾기 위해 어떤 프로파일링 지원을 사용할 수 있나요? 이 글은 기능적인 이유를 다루는데, 그건 괜찮아요.
- Asmod4n
나는 C++26 리플렉션을 사용해서 비슷한 걸 만들고 있어. 그래서 어떤 언어든 몇 줄의 보일러플레이트만으로 C++ 라이브러리를 수명과 메모리 안전한 방식으로 사용할 수 있지 (가능한 경우에). 그리고 객체의 안전한 수명을 추론할 수 없는 경우에는, 해당 함수들을 안전하게 사용하는 방법을 라이브러리에 알려주는 작은 .toml 파일이 있어.
- zerr
> // 모든 엔티티의 위치를 MultiMesh 버퍼로 복사
그래서, 월드(C++ vs Godot) 경계 때문에 제로 카피가 불가능한 건가요?