Skip to content

Parts Assembly

Pawn Module · Avatar

Parts
Assembly

슬롯 키 기반 오픈 파츠 스택 시스템.
고정된 슬롯 목록 없이 키 문자열만으로 장착·누적·대체를 결정한다.

SlotKeyLayerOrderHierarchyRequiredSlots

Section 00

핵심 규칙

슬롯 키가 같은지 다른지가 전부다. 이 두 가지 규칙이 모든 파츠 조합을 결정한다.

슬롯 키가 다르면
두 파츠 동시 표시
STACK
슬롯 키가 같으면
새 파츠가 기존 파츠 대체
REPLACE

Section 01

계층 구조

슬롯 키는 점(.)으로 계층을 표현한다. 상위 슬롯이 비어있으면 하위 슬롯은 전부 착용 불가. 상위 슬롯 해제 시 하위 슬롯도 자동 해제된다.

outfit ← 이 슬롯이 비면 하위 전체 잠김
├──outfit.upper
├──outfit.lower
├──outfit.gloves
└──outfit.boots
상위 슬롯 상태결과
outfit 점유됨outfit.* 착용 가능
outfit 비어있음outfit.* 전체 착용 불가
armor 비어있음armor.* 전체 착용 불가

Section 02

파츠(Part) 필드

필드타입설명
PartIduint전역 고유 ID
SlotKeysstring[]점유할 슬롯 키 목록. 여러 개 지정 시 모두 동시 점유. 계층은 .으로 표현.
LayerOrderint렌더 적층 순서. 낮을수록 아래에 렌더.
AssetIduint비주얼 에셋 키. 0이면 슬롯 점유만 하고 렌더 없음.
RequiredSlotsstring[]이 파츠 장착 전에 점유되어야 할 슬롯 키 목록. 하나라도 비면 장착 거부.
AssetId = 0인 파츠는 비주얼 없이 슬롯만 점유한다. 상위 슬롯 활성 조건을 충족하는 용도로 사용.

Section 03

멀티 슬롯 점유

하나의 파츠가 SlotKeys에 여러 슬롯 키를 나열하면 모든 슬롯을 동시에 점유한다. 점유된 슬롯 중 하나라도 다른 파츠가 있으면 해당 슬롯을 대체한다.

예: 너클 장비
ring.l.1ring.l.2ring.l.3ring.l.4ring.l.5

너클을 장착하면 왼손 손가락 5개 슬롯을 모두 점유 → 반지를 끼려면 너클을 먼저 해제해야 한다.

슬롯 키는 점 표기로 무한히 확장할 수 있다. 시스템은 키 문자열의 깊이에 제한을 두지 않는다.
ring.l.1 · ring.l.1.joint_3 · ring.l.1.joint_3.tip_0 · ...

Section 04

슬롯 키 네이밍

슬롯 키의 이름은 시스템이 강제하지 않는다. 어떤 문자열도 슬롯 키가 될 수 있으며, 콘텐츠 레이어에서 자유롭게 정의한다.

시스템 기본값
없음
의상, 방어구, 악세서리 등의 슬롯 키는 시스템이 정의하지 않는다. 콘텐츠 문서에서 컨벤션을 결정한다.
Body Parts 기본값
존재
신체 부위 슬롯 키는 시스템(Health) 수준에서 정의된 기본값을 사용한다. 상세는 Body Parts 문서를 참고한다.

Section 05

선행 슬롯 조건

계층 규칙과 별개로, 파츠는 RequiredSlots에 슬롯 키를 나열해 선행 장착 조건을 추가 선언할 수 있다.

1
계층(Hierarchy) 확인
상위 슬롯이 점유되어 있는가?
2
RequiredSlots 확인
지정 슬롯이 모두 점유되어 있는가?
장착 허용
두 검사 모두 통과해야 한다
이 필드는 슬롯 키 문자열만 참조한다. 그 슬롯이 의상 파츠로 채워졌는지 신체 부위 파츠로 채워졌는지는 관여하지 않는다.
어떤 슬롯이 신체 부위인지는 시스템·콘텐츠 문서에서 정의한다.

Section 06

장착 / 해제 흐름

Equip(part)
1. 계층 유효성 확인
   상위 슬롯이 점유되어 있는가?
   → 비어있으면 장착 거부

2. RequiredSlots 확인
   지정 슬롯 모두 점유 여부
   → 하나라도 비면 장착 거부

3. 동일 SlotKey 기존 파츠 제거

4. 신규 파츠 삽입

5. 렌더러 알림
   LayerOrder 재정렬 → 합성
Unequip(slotKey)
1. 해당 슬롯 제거

2. 해당 슬롯이 상위 슬롯이었다면
   → 하위 슬롯 전체 자동 해제
   (재귀적으로 적용)

3. 렌더러 알림