문서추가

This commit is contained in:
Gnill82
2025-11-05 19:23:33 +09:00
parent 80176c7c9e
commit e23e2b6e2c
2 changed files with 1431 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,162 @@
# DS-전투시스템-데이터수집
## 분석 대상 스토커 11명
- Hilda (힐다)
- Urud (우르드)
- Nave (네이브)
- Baran (바란)
- Rio (리오)
- Clad (클라드)
- Rene (레네)
- Sinobu (시노부)
- Lian (리옌)
- Cazimord (카지모르드)
- Blackmaria (블랙마리아)
## 1. Asset Export to JSON 소개
언리얼 엔진 에셋은 기본적으로 바이너리 형식으로 저장되어 LLM이나 외부 분석 도구가 직접 접근할 수 없습니다. 이를 해결하기 위해 **Asset Export to JSON** 에디터 확장 기능을 개발하였습니다.
**참고 문서**: `DS-전투분석_저장소\분석참고자료\DS-Asset_Export_to_JSON.md`
### 1.1 주요 내용
- **지원 에셋 타입**: DataTable, Blueprint, AnimMontage, CurveTable
- **프로젝트 설정 통합**: `편집 → 프로젝트 설정 → 플러그인 → Asset Export to JSON`
- **타임스탬프 익스포트**: 익스포트 히스토리 보관을 위한 타임스탬프 폴더 생성
- **완전한 데이터 추출**:
- DataTable: 모든 행/열 데이터
- Blueprint: 변수, 함수, 컴포넌트, 이벤트 그래프 노드 구조
- AnimMontage: 섹션, 노티파이, 커스텀 프로퍼티, 슬롯 애니메이션
- CurveTable: RichCurves 및 SimpleCurves 키 데이터
### 1.2 JSON 참조 규칙
**중요**: JSON 파일은 에디터에서 익스포트한 결과물로, 소스 코드처럼 고정된 라인 번호가 없습니다.
#### 올바른 참조 방법
**Asset 이름으로 참조**
```
DT_CharacterStat 어셋의 "hilda" 행
AM_PC_Hilda_B_Skill_SwordStrike 몽타주
GA_Skill_Hilda_SwordStrike_C 블루프린트
```
**라인 번호로 참조하지 않음**
```
DataTable.json:358143-358192 (X)
```
#### JSON 구조 예시
**DataTable.json**:
```json
{
"AssetName": "DT_CharacterStat",
"RowStructure": "CharacterStatData",
"Rows": [
{
"RowName": "hilda",
"Data": {
"name": "힐다",
"defaultSkills": ["SK100201", "SK100202", "SK100204"],
"subSkill": "SK100101",
"ultimateSkill": "SK100301"
}
}
]
}
```
**AnimMontage.json**:
```json
{
"AssetName": "AM_PC_Hilda_B_Skill_SwordStrike",
"SequenceLength": 1.8,
"AnimNotifies": [
{
"NotifyStateClass": "ANS_SkillCancel_C",
"TriggerTime": 1.3,
"Duration": 0.5
}
]
}
```
## 2. JSON 전투 데이터 수집
익스포트된 JSON 데이터에서 어떤 정보를 수집하는지 설명.
### 2.1 DataTable 어셋
언리얼의 데이터 테이블 어셋이 DataTable.json 형태로 익스포트 되어 있으며 주로 스토커의 밸런스 데이터가 있다.
- DT_CharacterStat 필드 정보
- 기본 스탯 값: Str, Dex, Int, Con, Wis, HP, MP, Mana Regen, Stamina, criticalPer // 소수점 2째자리 까지만 수집
- 전체 스탯 합계는 75로써 모든 스토커가 동일하다
- 스킬 ID 목록
- 기본 스킬 ID 정보: defaultSkills
- 보조 스킬 ID 정보: subSkill
- 궁극기 스킬 ID 정보: ultimateSkill
- 장착 가능 장비 타입: equipableTypes
- 궁극기 발동 필요 포인트: ultimatePoint
- DT_CharacterAbility 필드 정보
- 기본 공격(평타) 몽타주 정보: attackMontageMap > {무기정보} > montageArray
- DT_Skill 필드 정보
- 스킬 ID: RowName
- 스킬 이름: name
- 스킬 설명: desc // {} 안의 정보는 변수
- 스킬 설명에 포함된 변수 값: descValues // 유저에게 텍스트로 전달하기 위한 정보일 뿐 실제 데이터 값은 아니다
- 스킬의 공격 타입: skillAttackType
- 스킬의 원소 타입: skillElementType
- 스킬의 피해 배율: skillDamageRate
- 스킬 시전 중 걸음 속도 배율: walkSpeedMultiplier // 0이면 원래 속도로 걸어감
- 스킬 시전 시간: castingTime // 0이면 시전시간 없음
- 스킬의 마나 비용: manaCost
- 스킬 재사용 대기시간(초): coolTime
- 스킬에 지정된 몽타주 정보: useMontages
- 지정된 몽타주가 2개 이상일 경우 제외할 몽타주: ready, Equip, Equipment, _E, // 몽타주 이름에 해당 키워드가 있다면 수집, 분석에서 제외
- 스킬 스택 여부: bIsStackable
- 스킬의 최대 스택 수: maxStackCount // 0이면 스택 기능 없음
- 스킬의 궁극기 여부: bIsUltimate
- 스킬 시전(캐스팅포함) 결과에 따른 BP 정보: abilityClass
- 스킬의 캐스팅 결과에 따른 BP: activeAbilityClass // 즉, 캐스팅 로직을 탄 스킬은 이 BP까지 실행 된다
- 스킬 효과 유지 시간(초): activeDuration // 발동 효과가 특정 시간 동안 유지되는 경우에 사용
- 스킬에 적용할 GameplayEffect 목록: gameplayEffectSet
### 2.2 AnimMontage 어셋
언리얼의 애니메이션 몽타주 어셋이 AnimMontage.json 형태로 익스포트 되어 있으며, 스토커의 실질적인 모션 타이밍 데이터가 있다.
- 기본 공격 몽타주: `DT_CharacterAbility` 데이터 테이블에서 지정 된다.
- 스킬 공격 몽타주: `DT_Skill` 데이터 테이블에서 지정 된다.
#### 2.2.1 공통 수집 필드
- 어셋 이름: AssetName
- 시퀀스 길이(초): SequenceLength
- 재생 속도: RateScale
- 섹션 목록: Sections
- 섹션 이름: SectionName
- 섹션 시작 시간: StartTime
- 주요 AnimNotifies 정보: 모든 AnimNotifies를 수집하는 것이 아니라 지정한 AnimNotifies에 대해서만 정보를 수집 한다.
#### 2.2.2 수집 할 주요 AnimNotifies 및 CustomProperties
해당 AnimNotifies가 AnimMontage 내에 있을 경우 정보를 수집한다.
- ANS_AttackState_C: 공격 상태 및 피해 배율
- TriggerTime: 시작 시간 (초)
- Duration: 지속 시간 (초)
- AddNormalAttackPer: 피해 배율 증감 (%)
- AnimNotifyState_AttackWithEquip: 히트 판정 타이밍
- TriggerTime: 시작 시간 (초)
- Duration: 지속 시간 (초)
- AttackTag: 공격 타입 태그
- ANS_SkillCancel_C: 스킬 캔슬 윈도우
- TriggerTime: 시작 시간 (초)
- Duration: 지속 시간 (초)
- AN_Trigger_Projectile_Shot_C: 발사체 발사
- TriggerTime: 시작 시간 (초)
- EventTag