Unreal Modular Cosmetic System

김여울·2025년 10월 21일
0

내일배움캠프

목록 보기
100/114

Character Customization

자료

커스텀 목록

상의 / 하의 / 원피스 / 모자 / 머리 / 장갑 / 안경 / 눈알 / 눈썹 / 수염 / 신발 / 가방 / 피부색

애니메이션

Idle
Confirm

📎 when cute villagers wear ugly clothes 😒 ← 옷 다 고르고 완료 버튼 누르면 애니메이션, 이펙트, 사운드 추가 예정

애니메이션과 사운드, 이펙트 관련해서는 기능 구현한 후에 기준님, 성현님과 다시 회의하기로 했다.

Unreal Modular Cosmetic System

📎 Unreal Modular Character Customization System #4 - Dynamic UI
📎 변경 가능한 캐릭터 커스터마이징 튜토리얼 - 언리얼 엔진 5

내일 캐릭터 담당하시는 분들이랑 회의하고 모듈러 캐릭터 받은 후에 커스텀 기능을 해봐야 할 것 같다.

목표

  • SetLeaderPoseComponent + FFastArraySerializer 기반 모듈식 파츠 교체 시스템 구현
  • 실시간 미리보기 / Back / OK UI 완성
  • 멀티플레이 완전 동기화 + 성능 최적화 유지

코드 보완 목록

1. UI → 서버 반영

  • SetCharacterPart()는 서버 전용 → 클라 호출용 RPC 추가
UFUNCTION(Server, Reliable)
void ServerSetCharacterPart(const FCharacterPart& NewPart);
  • UI는 무조건 ServerSetCharacterPart() 호출

2. 대량 자산 대비 (SoftRef 전환)

  • FCharacterPart.MeshTSoftObjectPtr<USkeletalMesh> 변경
  • 클릭 시 StreamableManager.RequestAsyncLoad()로 비동기 로드
  • 머리 108개 등 대량 파츠도 초기 로딩 최소화

3. FastArray 개선

  • 항목 제거 시:
It.RemoveCurrent();
AppliedCharacterPartList.MarkArrayDirty();
  • 변경 시엔 MarkItemDirty(Entry)도 함께 호출

4. 런타임 생성 기본 세팅

NewPartComponent->SetCollisionEnabled(ECollisionEnabled::NoCollision);
NewPartComponent->SetComponentTickEnabled(false);
NewPartComponent->SetReceivesDecals(false);

틱·충돌 비활성화로 퍼포먼스 안정화

5. 수명 관리

  • EndPlay()에서 모든 파츠 안전 제거 (DestroyComponent())
  • 리스폰/맵 전환 시 잔류 방지

6. UI Back / OK 로직

  • Snapshot 저장 → Back 시 ApplyEquipSet(Snapshot)
  • OK 시:
    • Idle 정지
    • ConfirmMontage 재생
    • AnimNotify로 FX / SFX 발동
    • 종료 시 SaveGame

7. 엣지 케이스 처리

  • 동일 메시 재장착 요청 시 무시
  • 전용 서버는 시각적 파츠만 → Register 생략 가능
  • NetRelevancy 문제 없음 (FastArray 자동 포함)

8. 테스트 플로우

1) BeginPlay → 기본 파츠(첫 칸) 장착
2) UI에서 슬롯 클릭 → 파츠 교체 즉시 반영
3) Back → 원복 / OK → Confirm 연출 후 저장
4) 멀티플레이 2창 테스트 (한쪽 변경 → 상대도 반영)

“클라가 ServerSetCharacterPart()로 요청 → 서버가 FastArray 갱신 → 클라들이 파츠 생성/교체 + LeaderPose로 애니 동기화.”

0개의 댓글