프로젝트 소개
Godot-Python은 Godot 게임 엔진에 Python 언어 지원을 스크립팅 모듈로 제공하는 프로젝트입니다. 이를 통해 개발자는 GDScript 대신 Python으로 게임 스크립트를 작성할 수 있으며, Python의 생태계와 문법을 활용할 수 있습니다.
**주요 기능:**
- **Godot에서의 Python 스크립팅:** Godot 노드(예: `Node2D`, `KinematicBody`)를 상속하는 Python 클래스를 사용하고 `@exposed` 데코레이터를 통해 엔진에 노출합니다.
- **내보내기:** `export(<type>)`를 사용하여 내보낸 속성과 프로퍼티를 정의하여 Godot 인스펙터와 통합합니다.
- **전체 API 접근:** 생성된 바인딩(예: `Vector2`, `ResourceLoader`)을 통해 Godot API에 접근합니다.
- **헬퍼 클래스:** 노출되지 않은 Python 클래스를 내부 로직에 사용할 수 있습니다.
- **빌드 시스템:** Scons, Cython, Jinja2 기반이며 Linux, Windows, macOS를 지원합니다.
- **테스트 및 예제:** pytest 기반 테스트와 Pong 예제 프로젝트를 포함합니다.
**현재 상태:** 이 프로젝트는 현재 코드베이스와 호환되지 않는 Godot 4를 지원하기 위해 대대적인 리팩토링 중입니다. 개발은 `godot4-meson` 브랜치에서 진행 중이며, master 브랜치는 Godot 3.x를 대상으로 합니다.
**설치:** 사용자는 Godot 에셋 라이브러리를 통해 설치하거나, 에셋 라이브러리 웹사이트에서 다운로드하거나, 릴리스 페이지에서 플랫폼별 빌드를 받을 수 있습니다.
**사용 예시:**
```python
from godot import exposed, export, Vector2, Node2D, ResourceLoader
@exposed
class Player(Node2D):
name = export(str)
@export(int)
@property
def age(self):
return self._age
@age.setter
def age(self, value):
self._age = value
def talk(self, msg):
print(f"I'm saying {msg}")
def _ready(self):
self._age = 42
print(self.get_name())
def _process(self, delta):
self.position += Vector2(10, 10) * delta
```
**소스에서 빌드:** Python >= 3.7과 C 컴파일러가 필요합니다. 단계에는 GDNative 헤더용 서브모듈 초기화, 가상 환경 생성, 종속성 설치, 플랫폼별 명령(예: `scons platform=x11-64 release`)으로 Scons 실행이 포함됩니다.
**FAQ 주요 사항:**
- **프로젝트 내보내기:** 수동 내보내기가 필요하며, Python 환경과 Godot 바이너리를 릴리스 폴더에 복사합니다.
- **Python 패키지 사용:** `ensurepip`로 pip을 설치한 후 `pip install`을 사용하여 임베디드 인터프리터에 패키지를 추가합니다.
- **PyCharm으로 디버깅:** Godot 바이너리 이름에 'python'을 포함하도록 변경하고 "Attach to Local Process"를 사용합니다.
- **자동 로드 스크립트:** `project.godot`의 `[autoload]` 및 `[gdnative]`에서 구성합니다.
- **PoolArrays:** 효율적인 접근을 위해 `arr.raw_access()` 컨텍스트 관리자를 사용하되 메모리 안전에 주의하세요.
**참고:** 이 프로젝트는 Godot 3에 대해 적극적으로 유지 관리되지 않으며, 사용자는 향후 업데이트를 위해 `godot4-meson` 브랜치를 확인해야 합니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.