Godot Engine용 Visual Studio에서 C++ 플러그인 만들기
10243 단어 C++VisualStudioGodot
작동 방식을 GDNative라고 하며 Godot의 엔진 기능에 액세스할 수 있습니다.
일단 공식에서는 GDNative의 빌드 툴에 SCons를 추천하고 있습니다만, Visual Studio로 C++플러그인 개발하고 싶은 분은 상당히 있지 않을까요.
이번에는 Visual Studio와 C++에서 Godot 플러그인을 개발하는 방법을 정리했습니다.
빌드 환경
준비
C++ 개발에 필요한 godot-cpp를 준비합니다.
godot-cpp clone
먼저 리포지토리를 GitHub에서 가져옵니다.
"3.2"는 현재 사용하고 있는 Godot 버전과 같은 것을 지정합니다.
git clone --recursive -b 3.2 https://github.com/GodotNativeTools/godot-cpp.git
godot-cpp 빌드
godot-cpp 빌드에는 SCons를 사용합니다.
그렇지 않은 경우 Python을 설치 한 다음 pip install scons
에서 SCons를 설치하십시오.
32/64bit판, Debug/Release판을 각각 빌드합니다.
scons platform=windows bits=32 generate_bindings=yes target=debug -j4
scons platform=windows bits=32 generate_bindings=yes target=release -j4
scons platform=windows bits=64 generate_bindings=yes target=debug -j4
scons platform=windows bits=64 generate_bindings=yes target=release -j4
Visual Studio에서 플러그인 만들기
프로젝트 만들기
Win32 C++ DLL 프로젝트를 만듭니다.
프로젝트 설정
다음 godot-cpp 헤더 경로를 포함 디렉토리에 추가합니다.
- $(ProjectDir)godot-cpp\godot_headers
- $(ProjectDir)godot-cpp\include
- $(ProjectDir)godot-cpp\include\core
- $(ProjectDir)godot-cpp\include\gen
※ 이번에는 프로젝트 디렉토리 내에 godot-cpp를 배치하고 있습니다. 다른 장소에 배치한 경우에는 적절히 변경해 주십시오.
또한 다음 godot-cpp 라이브러리를 각 빌드 구성에 지정합니다.
- [Win32/Debug] $(ProjectDir)godot-cpp\bin\libgodot-cpp.windows.debug.32.lib
- [Win32/Release] $(ProjectDir)godot-cpp\bin\libgodot-cpp.windows.release.32.lib
- [x64/Debug] $(ProjectDir)godot-cpp\bin\libgodot-cpp.windows.debug.64.lib
- [x64/Release] $(ProjectDir)godot-cpp\bin\libgodot-cpp.windows.release.64.lib
플러그인 소스 추가
공식 튜토리얼이 되어 Sprite를 확장한 클래스를 작성합니다.
htps : // / cs. 미안해. 오 rg / 그럼 / ㅁ st / 쓰리 아 ls / p ㅅ 긴 s / gd 나치 ゔ ぇ / gd 나 치 ゔ ぇ - ぁ ぁ mp ぇ. HTML
MySprite.h#pragma once
#include <Godot.hpp>
#include <Sprite.hpp>
class MySprite : public godot::Sprite
{
GODOT_CLASS(MySprite, godot::Sprite)
private:
float time_passed;
public:
static void _register_methods();
MySprite();
~MySprite();
void _init();
void _process(float delta);
};
MySprite.cpp#include "MySprite.h"
using namespace godot;
void MySprite::_register_methods()
{
register_method("_process", &MySprite::_process);
}
MySprite::MySprite()
{
}
MySprite::~MySprite()
{
}
void MySprite::_init()
{
time_passed = 0.0;
}
void MySprite::_process(float delta)
{
time_passed += delta;
Vector2 new_position = Vector2(10.0 + (10.0 * sin(time_passed * 2.0)), 10.0 + (10.0 * cos(time_passed * 1.5)));
set_position(new_position);
}
그런 다음 DLL에서 내보낼 C 함수를 추가합니다.
GDLibrary.cpp#include "MySprite.h"
extern "C" void GDN_EXPORT godot_gdnative_init(godot_gdnative_init_options *o)
{
godot::Godot::gdnative_init(o);
}
extern "C" void GDN_EXPORT godot_gdnative_terminate(godot_gdnative_terminate_options *o)
{
godot::Godot::gdnative_terminate(o);
}
extern "C" void GDN_EXPORT godot_nativescript_init(void *handle)
{
godot::Godot::nativescript_init(handle);
godot::register_class<MySprite>();
}
플러그인 빌드
오류가 없으면 성공입니다.
Godot 프로젝트에 플러그인 등록
DLL을 Godot 프로젝트 아래에 배치합니다. 이번에는 개발 중이므로 디버그 버전 DLL을 배치합니다. (궁극적으로 Release 버전 DLL을 배치합니다)
- myplugin/win32/libmyplugin.dll
- myplugin/win64/libmyplugin.dll
그런 다음 플러그인 정의 파일을 추가합니다. (새 리소스 추가)
- myplugin/myplugin.gdnlib
myplugin.gdnlib에 DLL을 설정합니다. (이번에는 Windows 전용)
플러그인의 클래스에 NativeScript 추가(새 스크립트 추가)
- MySprite.gdns
라이브러리에 myplugin.gdnlib를 설정합니다.
스프라이트에 MySprite를 설정하고 실행.
잘 움직이는 것 같습니다.
Visual Studio에서 플러그인 디버깅
디버그 버전의 DLL을 Godot 프로젝트에 넣습니다.
Godot에서 실행 중인 프로세스에 연결하는 방법을 수행합니다.
Visual Studio 메뉴 디버그 → 프로세스에 연결을 선택합니다.
프로세스에 성공적으로 연결되면 플러그인 소스 내에서 중단될 수 있습니다.
이제 플러그인 개발이 진행됩니다!
샘플 두는 곳
결론
이 기사는 Windows에서 효율적으로 Godot 용 플러그인을 개발하고 싶은 방향입니다.
그러나 실제로는 Mac이나 모바일과 같은 멀티 플랫폼의 경우 결국 SCons에서 빌드 할 수 있어야합니다. (Mac은 Mac에서 XCode로 빌드할 수 있게 하면 다소 뒤틀릴지도 모릅니다만…)
Reference
이 문제에 관하여(Godot Engine용 Visual Studio에서 C++ 플러그인 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ueshita/items/822e09717f730c211e78
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
git clone --recursive -b 3.2 https://github.com/GodotNativeTools/godot-cpp.git
scons platform=windows bits=32 generate_bindings=yes target=debug -j4
scons platform=windows bits=32 generate_bindings=yes target=release -j4
scons platform=windows bits=64 generate_bindings=yes target=debug -j4
scons platform=windows bits=64 generate_bindings=yes target=release -j4
프로젝트 만들기
Win32 C++ DLL 프로젝트를 만듭니다.
프로젝트 설정
다음 godot-cpp 헤더 경로를 포함 디렉토리에 추가합니다.
- $(ProjectDir)godot-cpp\godot_headers
- $(ProjectDir)godot-cpp\include
- $(ProjectDir)godot-cpp\include\core
- $(ProjectDir)godot-cpp\include\gen
※ 이번에는 프로젝트 디렉토리 내에 godot-cpp를 배치하고 있습니다. 다른 장소에 배치한 경우에는 적절히 변경해 주십시오.
또한 다음 godot-cpp 라이브러리를 각 빌드 구성에 지정합니다.
- [Win32/Debug] $(ProjectDir)godot-cpp\bin\libgodot-cpp.windows.debug.32.lib
- [Win32/Release] $(ProjectDir)godot-cpp\bin\libgodot-cpp.windows.release.32.lib
- [x64/Debug] $(ProjectDir)godot-cpp\bin\libgodot-cpp.windows.debug.64.lib
- [x64/Release] $(ProjectDir)godot-cpp\bin\libgodot-cpp.windows.release.64.lib
플러그인 소스 추가
공식 튜토리얼이 되어 Sprite를 확장한 클래스를 작성합니다.
htps : // / cs. 미안해. 오 rg / 그럼 / ㅁ st / 쓰리 아 ls / p ㅅ 긴 s / gd 나치 ゔ ぇ / gd 나 치 ゔ ぇ - ぁ ぁ mp ぇ. HTML
MySprite.h
#pragma once
#include <Godot.hpp>
#include <Sprite.hpp>
class MySprite : public godot::Sprite
{
GODOT_CLASS(MySprite, godot::Sprite)
private:
float time_passed;
public:
static void _register_methods();
MySprite();
~MySprite();
void _init();
void _process(float delta);
};
MySprite.cpp
#include "MySprite.h"
using namespace godot;
void MySprite::_register_methods()
{
register_method("_process", &MySprite::_process);
}
MySprite::MySprite()
{
}
MySprite::~MySprite()
{
}
void MySprite::_init()
{
time_passed = 0.0;
}
void MySprite::_process(float delta)
{
time_passed += delta;
Vector2 new_position = Vector2(10.0 + (10.0 * sin(time_passed * 2.0)), 10.0 + (10.0 * cos(time_passed * 1.5)));
set_position(new_position);
}
그런 다음 DLL에서 내보낼 C 함수를 추가합니다.
GDLibrary.cpp
#include "MySprite.h"
extern "C" void GDN_EXPORT godot_gdnative_init(godot_gdnative_init_options *o)
{
godot::Godot::gdnative_init(o);
}
extern "C" void GDN_EXPORT godot_gdnative_terminate(godot_gdnative_terminate_options *o)
{
godot::Godot::gdnative_terminate(o);
}
extern "C" void GDN_EXPORT godot_nativescript_init(void *handle)
{
godot::Godot::nativescript_init(handle);
godot::register_class<MySprite>();
}
플러그인 빌드
오류가 없으면 성공입니다.
Godot 프로젝트에 플러그인 등록
DLL을 Godot 프로젝트 아래에 배치합니다. 이번에는 개발 중이므로 디버그 버전 DLL을 배치합니다. (궁극적으로 Release 버전 DLL을 배치합니다)
- myplugin/win32/libmyplugin.dll
- myplugin/win64/libmyplugin.dll
그런 다음 플러그인 정의 파일을 추가합니다. (새 리소스 추가)
- myplugin/myplugin.gdnlib
myplugin.gdnlib에 DLL을 설정합니다. (이번에는 Windows 전용)
플러그인의 클래스에 NativeScript 추가(새 스크립트 추가)
- MySprite.gdns
라이브러리에 myplugin.gdnlib를 설정합니다.
스프라이트에 MySprite를 설정하고 실행.
잘 움직이는 것 같습니다.
Visual Studio에서 플러그인 디버깅
디버그 버전의 DLL을 Godot 프로젝트에 넣습니다.
Godot에서 실행 중인 프로세스에 연결하는 방법을 수행합니다.
Visual Studio 메뉴 디버그 → 프로세스에 연결을 선택합니다.
프로세스에 성공적으로 연결되면 플러그인 소스 내에서 중단될 수 있습니다.
이제 플러그인 개발이 진행됩니다!
샘플 두는 곳
결론
이 기사는 Windows에서 효율적으로 Godot 용 플러그인을 개발하고 싶은 방향입니다.
그러나 실제로는 Mac이나 모바일과 같은 멀티 플랫폼의 경우 결국 SCons에서 빌드 할 수 있어야합니다. (Mac은 Mac에서 XCode로 빌드할 수 있게 하면 다소 뒤틀릴지도 모릅니다만…)
Reference
이 문제에 관하여(Godot Engine용 Visual Studio에서 C++ 플러그인 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ueshita/items/822e09717f730c211e78
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
결론
이 기사는 Windows에서 효율적으로 Godot 용 플러그인을 개발하고 싶은 방향입니다.
그러나 실제로는 Mac이나 모바일과 같은 멀티 플랫폼의 경우 결국 SCons에서 빌드 할 수 있어야합니다. (Mac은 Mac에서 XCode로 빌드할 수 있게 하면 다소 뒤틀릴지도 모릅니다만…)
Reference
이 문제에 관하여(Godot Engine용 Visual Studio에서 C++ 플러그인 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ueshita/items/822e09717f730c211e78
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Godot Engine용 Visual Studio에서 C++ 플러그인 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ueshita/items/822e09717f730c211e78텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)