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]

매크로 효과적 사용 팁

 1. 명확한 이름 사용

  • 매크로의 기능을 잘 설명하는 이름 선택
  • 예 : CalculateDamageWithCritical, SpawnEnemyAtRandomLocation

 2. 적절한 범위 설정

  • 너무 복잡하거나 큰 로직은 함수로 분리 고려
  • 2-3개의 주요 노드를 포함하는 정도가 적당

 3. 문서화

  • 매크로의 목적, 입력, 출력에 대한 설명 추가
  • 복잡한 로직의 경우 내부에 주석 달기

 4. 일관성 유지

  • 프로젝트 전체에서 일관된 스타일의 매크로 사용
  • 팀 내 매크로 사용 가이드라인 수립

 5. 버전 관리

  • 매크로 변경 시 사용 중인 모든 인스턴스에 영향을 미침
  • 변경 사항 주의 깊게 관리 및 문서화

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

 아이템 드롭 시스템 매크로

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

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

 사용 예

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

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

 1. 공통 기능 모듈화

  • 여러 블루프린트에서 반복되는 로직을 매크로로 만들기
  • 예 : 데미지 계산, 아이템 생성, UI 업데이트 등

 2. 프로젝트 전반의 일관성 유지

  • 핵심 게임플레이 메커니즘을 매크로로 정의
  • 모든 관련 블루프린트에서 동일한 매크로 사용

 3. 빠른 프로토타이핑

  • 자주 사용되는 기능을 매크로로 미리 준비
  • 새로운 기능 구현 시 기존 매크로 활용

 4. 성능 최적화

  • 자주 호출되는 간단한 로직을 매크로로 변환
  • 함수 호출 오버헤드 감소

매크로 사용 시 주의사항

 1. 복잡성 관리

  • 매크로가 너무 복잡해지면 함수로 전환 고려
  • 매크로 내부 로직은 가능한 단순하게 유지

 2. 컨텍스트 의존성

  • 매크로는 사용되는 컨텍스트에 따라 다르게 동작할 수 있음
  • 가능한 독립적인 로직으로 구성

 3. 디버깅의 어려움

  • 매크로 내부로 직접 진입하여 디버깅 불가
  • 필요 시 임시로 함수로 변환하여 디버깅

 4. 과도한 사용 자제

  • 모든 것을 매크로로 만들지 않기
  • 적절한 상황에서만 매크로 사용

 매크로는 블루프린트에서 코드 재사용성을 높이고 복잡한 로직을 단순화하는 강력한 도구입니다.

 적절히 사용하면 개발 효율성을 크게 향상시킬 수 있지만, 과도한 사용은 오히려 복잡성을 증가시킬 수 있습니다.

 매크로의 장단점을 잘 이해하고, 프로젝트의 요구사항에 맞게 균형있게 사용하는 것이 중요합니다.