적절한 아키텍처 없이 Godot 게임을 구축하면 유지 관리가 어려운 코드와 성능 문제가 발생합니다. 이 스킬은 상태 머신, 컴포넌트 시스템, 오브젝트 풀링, 저장 시스템을 포함한 프로덕션 준비된 GDScript 패턴을 제공하여 깔끔하고 확장 가능한 게임을 구축할 수 있도록 돕습니다.
스킬 ZIP 다운로드
Claude에서 업로드
설정 → 기능 → 스킬 → 스킬 업로드로 이동
토글을 켜고 사용 시작
테스트해 보기
"godot-gdscript-patterns" 사용 중입니다. 대기, 순찰, 추적 상태가 있는 적의 상태 머신�� 생성하세요
예상 결과:
StateMachine 클래스 (Node 상속), State 기본 클래스, EnemyIdle, EnemyPatrol, EnemyChase의 세 가지 구체적 상태 스크���트를 생성합니다. 플레이어 거리 감지 및 상태 변경을 위한 시그널 연결을 기반으로 한 전환 로직을 포함합니다.
"godot-gdscript-patterns" 사용 중입니다. 20개의 초기 인스턴스가 있는 총알용 오브젝트 풀을 생성하세요
예상 결과:
get_instance() 및 return 메서드가 포함된 ObjectPool 스크립트와 수명 관리, 속도 기반 이동, returned_to_pool 시그널이 포함된 PooledBullet 스크립트를 제공합니다. 20���의 비활성화된 총알 인스턴스를 미리 생성하는 초기화 코드를 포함합니다.
보안 감사
안전Static analysis detected 60 potential security issues, all confirmed as false positives after review. All 'external_commands' findings are markdown code fence delimiters in GDScript examples. 'Weak cryptographic algorithm' findings refer to Godot 4's built-in encrypted file API (FileAccess.open_encrypted_with_pass) used legitimately in save system examples. 'Generic API keys' finding is a placeholder encryption key in example code (your_secret_key_here). 'Network' findings are documentation links to legitimate Godot resources. This skill contains only educational GDScript code examples and documentation with no executable content or security risks.
품질 점수
만들 수 있는 것
플레이어 상태 머신 구현
대기, 이동, 공격, 점프 상태가 있는 플레이어 캐릭터용 상태 머신을 생성합니다. 게임 상태에 따라 플레이어 동작이 변경되는 플랫포머 또는 액션 게임을 만들 때 사용하세요.
총알을 위한 오브젝트 풀링
총알이나 발사체와 같이 자주 생성되는 오브젝트를 위한 오브젝트 풀링을 구현합니다. 가비지 ��렉션 버벅임을 줄이고 많은 엔티티가 생성되는 게임의 성능을 향상시키려면 이를 사용하세요.
컴포넌트 기반 체력 시스템
모든 게임 엔티티에 연결할 수 있는 재사용 가능한 체력, 히트박스, 허트박스 컴포넌트를 생성합니다. 전투 기능이 필요한 많은 캐��터가 있는 게임을 만들 때 사용하세요.
이 프롬프트를 사용해 보세요
[LIST_STATES] 상태가 있는 [ENTITY_TYPE]용 상태 머신을 생성하세요. StateMachine 클래스, State 기본 클래스, 하나의 구체적 상태 구현을 포함하세요.
[NUMBER]개의 오브젝트를 미리 인스턴스화하고 동적으로 확장할 수 있는 [OBJECT_TYPE]용 오브젝트 풀 시스템을 생성하세요. 풀 스크립트와 생성/소멸 콜백이 포함된 풀링된 오브젝트 스크립트를 포함하세요.
시그널을 통해 상호 작용하는 [COMPONENT_1] 및 [COMPONENT_2]가 포함된 컴포넌트 시스템을 설계하세요. 각 컴포넌트는 독립적이며 모든 노드에 연결 가능해야 ��니다.
[DATA_TYPES]을(를) 암호화된 파일에 저장하는 저장 시스템을 구현하세요. 개별 오브젝트용 SaveManager 오토로드와 Saveable 컴포넌트를 포함하세요.
모범 사례
- 프로세스 루프에서 get_node()를 호출하는 대신 @onready로 노드 참조를 캐시하세요
- 강력한 결합을 피하려면 노드 간 통신에 시그널을 사용하세요
- 데이터를 리소스(Resource 상속)로 분리하고 로직은 노드에 유지하세요
- 더 나은 성능을 위해 모든 변수와 함수 매개변수에 정적 타이핑을 사용하세요
- 필요하지 않을 때 노드의 처리를 비활성화하세요 (set_process, set_physics_process)
피하기
- _process() 또는 _physics_process() 루프에서 get_node() 또는 $ 표기법을 호출하지 마세요
- 씬 간에 직��� 노드 참조를 저장하지 마세요 - 시그널 또는 오토로드를 사용하세요
- 리소스 스크립트에 게임 로직을 넣지 마세요 - 데이터 컨테이너로 유지하세요
- 핫 코드 경로에서 새 오브젝트를 만들지 마세요 - 대신 오브젝트 풀링을 사용하세요
- 타입 안전성을 갖춘 Callable을 사용할 수 있는 경우 시그널에 문자열 이름을 사용하지 마세요
자주 묻는 질문
이 스킬은 어떤 Godot 버전을 지원하나요?
3D 게임에�� 이 패턴을 사용할 수 있나요?
플레이스홀더 암호화 키를 어떻게 바꾸나요?
모든 전역 데이터에 오토로드를 사용해야 하나요?
상속 대신 컴��넌트 기반 아키텍처를 사용하는 이유는 무엇인가요?
언제 오브젝트 ��링을 사용해야 하나요?
개발자 세부 정보
작성자
sickn33라이선스
MIT
리포지토리
https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/godot-gdscript-patterns참조
main
파일 구조