Post

TPS 개발 : 무기 시스템 (2) — Definition 통일

아이콘·메쉬·몽타주까지 Weapon Definition에 통합해 하나의 정의에서 모든 작업이 이루어지게 개편

TPS 개발 : 무기 시스템 (2) — Definition 통일

TPS 개발 - 무기 시스템 (2)

무기를 장착하는 것까진 됐는데, 문제가 있었다. 무기를 구성하는 데이터가 여기저기 흩어져 있었다.

  • 전투 스탯은 Weapon Definition
  • UI 아이콘은 상점 쪽
  • 메쉬랑 몽타주는 또 다른 데서 참조

한 자루의 총을 화면에 올리는데 여러 군데를 뒤져야 했다. 오늘은 이걸 정리했다.


Weapon Definition 개편

Weapon Definition이 무기에 관한 모든 것을 갖도록 확장했다.

1
2
3
4
5
6
UWeaponDefinition (개편 후)
  ├─ Origin           (신원 - ID, 이름)
  ├─ CombatAS 값       (데미지 / 연사 / 반동 / 탄퍼짐)
  ├─ UI 아이콘         (신규)
  ├─ 스켈레탈 메쉬      (신규)
  └─ 몽타주 세트        (신규 - Fire / Reload / Dash ...)

아이콘

UI에서 무기 슬롯을 그릴 때 쓰는 아이콘을 Definition에 직접 넣었다. 이제 UI는 상점을 거치지 않고 장착된 무기의 Definition에서 바로 아이콘을 가져온다.

메쉬 & 몽타주

무기를 손에 스폰할 때 필요한 스켈레탈 메쉬와, 발사/재장전/대시 시 재생할 몽타주 세트도 Definition에 포함시켰다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 개편된 Weapon Definition (의사코드)
UCLASS()
class UWeaponDefinition : public UItemDefinition_Origin
{
    GENERATED_BODY()
public:
    // 전투 스탯
    UPROPERTY(EditDefaultsOnly) FWeaponCombatStats CombatStats;

    // UI
    UPROPERTY(EditDefaultsOnly) TObjectPtr<UTexture2D> Icon;

    // 표현
    UPROPERTY(EditDefaultsOnly) TObjectPtr<USkeletalMesh> WeaponMesh;

    // 몽타주 세트
    UPROPERTY(EditDefaultsOnly) TMap<FGameplayTag, TObjectPtr<UAnimMontage>> Montages;
};

“하나의 Definition에서 모든 작업”

이번 개편의 핵심은 통일이다.

1
2
3
4
5
6
        [ 개편 전 ]                    [ 개편 후 ]

전투 스탯 → Weapon Def          
아이콘   → Shop 쪽        ───▶     모두 → Weapon Definition
메쉬     → 별도 참조                (단일 진입점)
몽타주   → 또 다른 곳

이제 무기와 관련된 어떤 작업이든 Weapon Definition 하나만 보면 된다.

  • UI가 아이콘을 그릴 때 → Weapon Definition
  • 캐릭터가 무기를 스폰할 때 → Weapon Definition
  • GA가 몽타주를 재생할 때 → Weapon Definition
  • 전투 계산이 스탯을 읽을 때 → Weapon Definition

데이터 진입점이 하나로 모이니, 무기를 추가하거나 수정할 때 헤맬 일이 없어졌다.


5일간의 흐름 돌아보기

이번 인벤토리·무기 시스템은 5일에 걸쳐 이렇게 굴러왔다.

날짜한 일배운 것
6/29Definition 뼈대CSV → Definition → Instance 분리
6/30크래프팅레시피리스 = 특성 이어붙이기, 제작용 Def 분리
7/01상점재료 N개 조합, 효율(RequireCount/ReturnCount)
7/02무기 장착Origin 재활용으로 Shop→Weapon 재빌드
7/03Definition 통일무기의 모든 데이터를 한 곳으로

돌이켜보면 첫날 잡은 “Origin + 타입별 재정의” 구조가 크래프팅·상점·무기까지 전부 지탱해줬다. 초반 구조 설계에 시간을 쓴 게 결국 이득이었다.


오늘 정리

  • Weapon Definition에 아이콘·메쉬·몽타주까지 통합
  • 무기 관련 모든 작업이 하나의 Definition을 진입점으로 삼도록 통일
  • 데이터가 흩어지지 않으니 무기 추가·수정 비용이 급감
This post is licensed under CC BY 4.0 by the author.