◀ 포트폴리오 페이지로 돌아가기

ℹ️ 택탄 프로젝트를 진행하며 작성한 "DropBox 오브젝트" 관련 시스템 문서입니다.

시스템 설계 요약

핵심 설계 포인트

  • 필드 보상 획득 경험 강화
  • 즉시 / 운송 보상 이원화
  • 몬스터 처치 보상 시스템 확장
  • PvP 요소로 확장 가능한 구조
  • 데이터 기반 유연한 설정

기대 효과

  • 능동적인 보상 획득 경험
  • 전략적 선택과 긴장감 제공
  • 협동 / 경쟁 콘텐츠로 자연스러운 유도
  • 리스크-리워드 밸런스 구현

1. 개요

DropBox 오브젝트는 필드 내에서 기사단이 상호작용 할 수 있는 보상 오브젝트이다.

1.1. 목적

DropBox는 플레이어가 기사단을 직접 조작하여 "필드에서 보상을 획득하는 경험"을 제공하기 위한 오브젝트로 설계한다.

DropBox는 다음과 같은 상황에서 스폰되며, 플레이어에게 보상 기회를 제공한다.

1.2. 핵심 기능

DropBox 오브젝트에 다음과 같은 핵심 기능을 추가, 기사단이 루팅해 아이템 보상을 얻을 수 있게 설계한다.

1.2.1. 아이템 별 DropBox 오브젝트를 정의할 수 있게 설정

1.2.2. 즉시 보상 / 운송 완료 보상을 구분

루팅을 완료했을 때 다음과 같이 보상을 지급하는 방식을 구분, DropBox의 사용자 경험을 구분시킬 수 있도록 구조화한다.

1.2.3. 몬스터 처치 시 DropBox 스폰

특정 몬스터를 처치했을 때 DropBox가 처치된 대상 인근으로 스폰될 수 있게 구조화한다.

구조화 시 다음과 같은 사항을 고려, 스폰될 수 있게 정의한다.

처치에 기여한 유저에 한해 DropBox를 인터랙션할 수 있게 시스템을 구성한다.

1.2.4. DropBox 선택 UI 추가

DropBox 오브젝트가 필드에 스폰된 상태에서 선택했을 때 어떤 아이템인지 안내하는 역할의 UI를 추가한다.

2. ItemData 맵핑

우리 게임에 존재하는 모든 아이템별로 DropBox Field_Object를 맵핑할 수 있도록 구조화한다.

이를 통해 각 아이템 등급별로 다음과 같은 Field_Object 속성을 달리 적용하는 것을 목표로 한다.

3. DropBox 스폰

DropBox는 다음과 같은 형태로 필드 상에 스폰이 가능하게 설계한다.

3.1. 명령어 스폰

라이브 운영 중 운영자에 한해 특정 명령어를 입력하면 DropBox를 필드 상에 스폰할 수 있게 만든다.

Admin DropBox {ItemId} {ItemCount} {Pos_X} {Pos_Y} {Radius}

3.2. 몬스터 처치 스폰

특정 몬스터 처치 시 특정 Item을 필드 상에 스폰할 수 있게 만든다.

4. 기본 규칙

모든 DropBox는 ContentID의 Enum이 DropBox일 경우 다음과 같은 규칙을 따른다.

4.1. 루팅

기사단이 DropBox를 인터랙션 하는 행위를 "루팅"이라 정의한다.

4.2. 루팅 실패 처리

DropBox는 다음과 같은 상황일 때 인터랙션에 실패한다.

4.3. 루팅 완료

기사단이 DropBox에 정의된 InteractionTime 동안 루팅을 유지하면 "루팅 완료"가 된다.

4.4. 즉시 보상

DropBox의 인터랙션이 완료되면 해당 기사단을 운용하는 사용자에게 보상이 즉시 제공되는 형태를 "즉시 제공" 규칙이라 정의한다.

4.5. 운송 완료 보상

DropBox의 인터랙션이 완료되면 해당 기사단에게 아이템이 적용되고 유저성으로 복귀 시 보상이 제공되는 형태를 "운송 완료 보상" 규칙이라 정의한다.

4.5.1. DropBox 최대 보유 개수

기사단은 운송 완료 보상을 제공하는 DropBox를 최대 N개까지 보유 할 수 있다.

4.5.2. 루팅 완료 시 기사단 안내

기사단이 운송 완료 보상의 DropBox를 보유한 상태라면 첨부된 그림과 같이 "루팅 박스의 보유 유/무"를 안내한다.

4.5.3. 운송 중 전멸시 처리

첨부된 그림과 같이 기사단이 운송 완료 보상으로 구분된 DropBox를 가진 채로 기사단이 전멸 시 지니고 있던 DropBox를 모두 드랍한다.

4.6. DropBox 유지시간

모든 DropBox는 스폰됨과 동시 "유지 시간"이 적용된다.

4.7. DB 저장

모든 DropBox는 서버가 강제로 종료될 경우 다음과 같이 처리한다.

5. UI 추가

DropBox와 관련해서 다음과 같은 UI 정보를 추가한다.

5.1. DropBox 팝업 UI

첨부된 그림과 같이 필드에 스폰된 DropBox를 선택 시 "팝업 UI"가 출력되며, 구성은 다음과 같다.

6. DropBox 연출

DropBox가 필드에 스폰 및 디스폰될 때 다음과 같은 연출을 적용, 월드에 표현될 때 자연스럽게 연출되도록 만든다.

6.1. Spawn 연출

DropBox가 스폰될 때 연출을 출력할 수 있도록 BP 상에 다음과 같은 Anim 속성이 적용될 수 있게 만든다.

6.2. Despawn - LifeTime 만료

DropBox의 유지시간 이 만료되어 디스폰될 때 연출을 출력할 수 있도록 BP 상에 다음과 같은 Anim 속성이 적용될 수 있게 만든다.

6.3. Die - 인터랙션 횟수 초과해 제거될 경우

기사단이 DropBox의 루팅을 완료했을 때 연출을 출력할 수 있도록 BP 상에 다음과 같은 Anim 속성이 적용될 수 있게 만든다.

6.4. Idle

DropBox가 필드에 스폰된 상태에서 다음과 같은 사항을 연출될 수 있게 구조화한다.

7. ItemData 데이터 추가

각 아이템별로 DropBox 속성을 정의할 수 있도록 "ItemData.xlsx → Data Sheet"에 다음과 같은 컬럼을 추가한다.

7.1. DropBoxDataname Column 추가

각 아이템 별로 필드 상에 스폰시켰을 때 어떤 DropBox 속성을 지닐지 결정하는 역할의 컬럼이다.

8. Field_Obj 데이터 추가

Field_Obj.xlsx 테이블 상에서 DropBox를 구분, 정의할 수 있도록 테이블 상에 다음과 같은 사항을 추가한다.

8.1. EnumCategory 추가

"DropBox"를 Field_Obj.xlsx에서 구분할 수 있도록 관련 Enum을 추가한다.

8.2. IsTransportReward Column 추가

DropBox를 인터랙션 완료 했을 때 "보상 방식"을 결정하는 역할의 신규 데이터이다.

8.3. Field_Obj Const 추가

DropBox의 상수 값을 정의할 수 있도록 다음과 같은 데이터를 추가한다.

8.3.1. MaxTransportDropBox

기사단이 최대 보유 가능한 DropBox를 정의하는 역할의 데이터를 추가한다.

9. Field_Monster 데이터 추가

특정 몬스터를 처치 시 DropBox 스폰을 시키기 위해 "Field_Monster.xlsx → Data Sheet"에 다음과 같은 데이터를 추가한다.

9.1. RewardDropBox Coulmn 추가

몬스터를 처치 했을 때 어떤 DropBox의 보상을 적용할지 결정하는 역할의 데이터이다.

⚠️ 스폰시킬 DropBox Item을 RewardData에 정의 후 Field_Monster에서 해당 내용을 참조해 사용한다.
⚠️ 값이 없을 경우 DropBox Item을 스폰시키지 않는 몬스터로 판단한다.

9.2. DropBoxSpawnRadius Coulmn 추가

몬스터 처치 시 RewardData에 정의된 아이템이 DropBox로 스폰될 반경을 결정하는 역할의 데이터이다.

⚠️ 영역 내에서도 스폰이 유효한 위치에만 오브젝트가 스폰될 수 있게 만든다.

9.3. RewardDropBoxCount Coulmn 추가

몬스터 처치 시 RewardData가 돌아갈 횟수를 결정하는 역할의 데이터이다.

9.4. IsDropBoxContributor Coulmn 추가

몬스터 처치 시 스폰되는 DropBox에게 소유권을 부여할지 결정하는 역할의 데이터이다.

작성 예시 - True

작성 예시 - False