icon안동민 개발노트

매크로 생성 및 간단한 사용 예


 매크로는 블루프린트에서 재사용 가능한 노드 그룹을 만드는 강력한 도구입니다.

 복잡한 로직을 캡슐화하고 코드의 가독성과 유지보수성을 향상시키는 데 도움을 줍니다.

매크로의 개념

 매크로는 여러 노드의 집합을 하나의 노드로 압축한 것으로, 함수와 유사하지만 몇 가지 중요한 차이점이 있습니다.

 매크로 vs 함수

특성매크로함수
실행 방식인라인 확장호출 및 반환
오버헤드낮음약간 있음
디버깅어려움용이함
재귀불가능가능
용도간단한 로직 재사용복잡한 로직, 재귀

매크로 생성 방법

  1. 'My Blueprint' 패널에서 '매크로 추가' 버튼 클릭
  2. 매크로 이름 지정 (예 : "CalculateDamage")
  3. 매크로 그래프 열기
매크로 생성 과정

매크로 입력과 출력 설정

  1. 매크로 그래프에서 '입력' 추가 버튼 클릭
  2. 입력 이름과 타입 설정 (예 : "BaseDamage", Float)
  3. '출력' 추가 버튼 클릭
  4. 출력 이름과 타입 설정 (예 : "FinalDamage", Float)
매크로 입력/출력 설정

매크로 내부 로직 구현

 매크로 내부에서 노드를 연결하여 원하는 로직을 구현합니다.

 예제 : 데미지 계산 매크로

[입력: BaseDamage] --> [Multiply] --> [Round] --> [출력: FinalDamage]
                        ^
[Random Float in Range] -|
(0.8, 1.2)
매크로 내부 로직 예시

매크로 사용 예제

  1. 간단한 데미지 계산
[플레이어 공격 이벤트] --> [CalculateDamage 매크로]
                               |
                    [적 체력 감소] <-- [FinalDamage]
  1. UI 요소 생성 및 설정
매크로: CreateUIElement
입력: ElementType (Enum), Position (Vector2D)
출력: CreatedElement (Widget)
 
[UI 초기화] --> [CreateUIElement] --> [AddToViewport]
                 |
   [Set Position] <-- [CreatedElement]
UI 요소 생성 매크로 사용 예시

매크로 효과적 사용 팁

  1. 명확한 이름 사용
  • 매크로의 기능을 잘 설명하는 이름 선택
  • 예 : CalculateDamageWithCritical, SpawnEnemyAtRandomLocation
  1. 적절한 범위 설정
  • 너무 복잡하거나 큰 로직은 함수로 분리 고려
  • 2-3개의 주요 노드를 포함하는 정도가 적당
  1. 문서화
  • 매크로의 목적, 입력, 출력에 대한 설명 추가
  • 복잡한 로직의 경우 내부에 주석 달기
  1. 일관성 유지
  • 프로젝트 전체에서 일관된 스타일의 매크로 사용
  • 팀 내 매크로 사용 가이드라인 수립
  1. 버전 관리
  • 매크로 변경 시 사용 중인 모든 인스턴스에 영향을 미침
  • 변경 사항 주의 깊게 관리 및 문서화

실제 게임 메커니즘 매크로 구현 예제

 아이템 드롭 시스템 매크로

 이 매크로는 적 캐릭터가 사망했을 때 랜덤한 아이템을 드롭하는 기능을 구현합니다.

매크로 이름: DropRandomItem
입력: 
  - EnemyLevel (Integer)
  - DropLocation (Vector)
출력:
  - DroppedItem (ActorReference)
 
내부 로직:
1. EnemyLevel에 따른 아이템 등급 결정
2. 해당 등급의 아이템 목록에서 랜덤 선택
3. 선택된 아이템을 DropLocation에 스폰
4. 스폰된 아이템에 물리 시뮬레이션 적용
5. DroppedItem으로 스폰된 아이템 참조 반환
아이템 드롭 시스템 매크로 구현

 사용 예

[적 캐릭터 사망 이벤트] --> [GetEnemyLevel] --> [DropRandomItem 매크로] --> [UpdatePlayerInventory]
                            [GetEnemyLocation] ---^             |
                                                      [PlayDropSound] <-- [DroppedItem]
                                                      [SpawnParticleEffect]

매크로를 통한 코드 재사용성 향상

  1. 공통 기능 모듈화
  • 여러 블루프린트에서 반복되는 로직을 매크로로 만들기
  • 예 : 데미지 계산, 아이템 생성, UI 업데이트 등
  1. 프로젝트 전반의 일관성 유지
  • 핵심 게임플레이 메커니즘을 매크로로 정의
  • 모든 관련 블루프린트에서 동일한 매크로 사용
  1. 빠른 프로토타이핑
  • 자주 사용되는 기능을 매크로로 미리 준비
  • 새로운 기능 구현 시 기존 매크로 활용
  1. 성능 최적화
  • 자주 호출되는 간단한 로직을 매크로로 변환
  • 함수 호출 오버헤드 감소

매크로 사용 시 주의사항

  1. 복잡성 관리
  • 매크로가 너무 복잡해지면 함수로 전환 고려
  • 매크로 내부 로직은 가능한 단순하게 유지
  1. 컨텍스트 의존성
  • 매크로는 사용되는 컨텍스트에 따라 다르게 동작할 수 있음
  • 가능한 독립적인 로직으로 구성
  1. 디버깅의 어려움
  • 매크로 내부로 직접 진입하여 디버깅 불가
  • 필요 시 임시로 함수로 변환하여 디버깅
  1. 과도한 사용 자제
  • 모든 것을 매크로로 만들지 않기
  • 적절한 상황에서만 매크로 사용

 매크로는 블루프린트에서 코드 재사용성을 높이고 복잡한 로직을 단순화하는 강력한 도구입니다. 적절히 사용하면 개발 효율성을 크게 향상시킬 수 있지만, 과도한 사용은 오히려 복잡성을 증가시킬 수 있습니다. 매크로의 장단점을 잘 이해하고, 프로젝트의 요구사항에 맞게 균형있게 사용하는 것이 중요합니다.