150 lines
4.7 KiB
Markdown
150 lines
4.7 KiB
Markdown
|
|
# DS 전투 데이터 수집 시스템
|
||
|
|
|
||
|
|
## 📁 폴더 구조
|
||
|
|
|
||
|
|
```
|
||
|
|
데이터수집/
|
||
|
|
├── 수집스크립트/
|
||
|
|
│ ├── collect_combat_data.py # 메인 실행 스크립트
|
||
|
|
│ ├── data_extractors.py # DataTable/AnimMontage 데이터 추출
|
||
|
|
│ ├── custom_property_parser.py # CustomProperties 파싱
|
||
|
|
│ ├── markdown_formatter.py # 마크다운 생성
|
||
|
|
│ ├── validators.py # 데이터 검증
|
||
|
|
│ └── validate_result.py # 결과 검증 스크립트
|
||
|
|
└── 수집결과/
|
||
|
|
├── all_stalkers_combat_data.json # 통합 JSON 결과
|
||
|
|
├── collection_log.txt # 수집 로그
|
||
|
|
└── markdown/ # 스토커별 마크다운 (11개)
|
||
|
|
```
|
||
|
|
|
||
|
|
## 🚀 실행 방법
|
||
|
|
|
||
|
|
### 데이터 수집 실행
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd "D:\Work\WorldStalker\DS-전투분석_저장소\데이터수집\수집스크립트"
|
||
|
|
python collect_combat_data.py
|
||
|
|
```
|
||
|
|
|
||
|
|
### 결과 검증
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd "D:\Work\WorldStalker\DS-전투분석_저장소\데이터수집\수집스크립트"
|
||
|
|
python validate_result.py
|
||
|
|
```
|
||
|
|
|
||
|
|
## 📊 수집 데이터 항목
|
||
|
|
|
||
|
|
### DT_CharacterStat (캐릭터 기본 스탯)
|
||
|
|
- 기본 스탯: Str, Dex, Int, Con, Wis (합계 75)
|
||
|
|
- 체력/마나: HP, MP, ManaRegen, Stamina
|
||
|
|
- 공격: PhysicalDamage, MagicalDamage, CriticalPer, CriticalDamage
|
||
|
|
- 방어: Defense, 각종 저항력
|
||
|
|
- 스킬 ID 목록: defaultSkills, subSkill, ultimateSkill
|
||
|
|
- 장비 타입: equipableTypes
|
||
|
|
- 궁극기 포인트: ultimatePoint
|
||
|
|
|
||
|
|
**소수점 처리**: 모든 숫자 필드를 소수점 2자리로 반올림
|
||
|
|
|
||
|
|
### DT_Skill (스킬 상세 정보)
|
||
|
|
- 기본 정보: name, desc, descValues
|
||
|
|
- 속성: skillAttackType, skillElementType, skillDamageRate
|
||
|
|
- 코스트: manaCost, coolTime, castingTime
|
||
|
|
- 몽타주: useMontages (제외 키워드: ready, Equip, Equipment, _E)
|
||
|
|
- 어빌리티: abilityClass, activeAbilityClass
|
||
|
|
- 효과: gameplayEffectSet (trigger, gEClass)
|
||
|
|
|
||
|
|
### DT_CharacterAbility (기본 공격 몽타주)
|
||
|
|
- attackMontageMap: 무기 타입별 몽타주 배열
|
||
|
|
|
||
|
|
### AnimMontage (애니메이션 타이밍)
|
||
|
|
- 기본 정보: AssetName, SequenceLength, RateScale
|
||
|
|
- 섹션: Sections (SectionName, StartTime)
|
||
|
|
- AnimNotifies (4가지 타입만 수집):
|
||
|
|
- **ANS_AttackState_C**: 공격 상태 (AddNormalAttackPer, AddPhysicalAttackPer)
|
||
|
|
- **AnimNotifyState_AttackWithEquip**: 히트 판정 (AttackTag)
|
||
|
|
- **ANS_SkillCancel_C**: 스킬 캔슬 윈도우
|
||
|
|
- **AN_Trigger_Projectile_Shot_C**: 발사체 발사 (EventTag)
|
||
|
|
|
||
|
|
## 📝 결과물 형식
|
||
|
|
|
||
|
|
### 통합 JSON (all_stalkers_combat_data.json)
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"collection_metadata": {
|
||
|
|
"collected_at": "2025-11-05T20:04:25.894098",
|
||
|
|
"total_stalkers": 11
|
||
|
|
},
|
||
|
|
"stalkers": {
|
||
|
|
"hilda": {
|
||
|
|
"basic_info": { "name": "힐다", "jobName": "전사" },
|
||
|
|
"stats": { "str": 20.0, "dex": 15.0, ... },
|
||
|
|
"skills": {
|
||
|
|
"default": ["SK100201", "SK100202", "SK100204"],
|
||
|
|
"sub": "SK100101",
|
||
|
|
"ultimate": "SK100301"
|
||
|
|
},
|
||
|
|
"skill_details": { ... },
|
||
|
|
"basic_attacks": { ... }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### 마크다운 (각 스토커별)
|
||
|
|
|
||
|
|
- 기본 정보 (직업, 궁극기 포인트)
|
||
|
|
- 기본 스탯 테이블
|
||
|
|
- 스킬 상세 정보
|
||
|
|
- 설명 (desc + descValues 치환 완료)
|
||
|
|
- 스킬 속성 테이블
|
||
|
|
- 어빌리티 클래스
|
||
|
|
- Gameplay Effects
|
||
|
|
- 몽타주 타이밍 정보
|
||
|
|
- 기본 공격 정보
|
||
|
|
|
||
|
|
## ⚠️ 주의사항
|
||
|
|
|
||
|
|
1. **원본 데이터 경로**
|
||
|
|
- `DS-전투분석_저장소/원본데이터/DataTable.json`
|
||
|
|
- `DS-전투분석_저장소/원본데이터/AnimMontage.json`
|
||
|
|
|
||
|
|
2. **스킬 몽타주 제외 규칙**
|
||
|
|
- DT_Skill의 useMontages에만 적용
|
||
|
|
- 제외 키워드: ready, Equip, Equipment, _E
|
||
|
|
- 기본 공격 몽타주는 제외 규칙 미적용
|
||
|
|
|
||
|
|
3. **descValues 처리**
|
||
|
|
- JSON: 배열 그대로 보존
|
||
|
|
- Markdown: desc와 합쳐서 완성된 문장 생성
|
||
|
|
- 줄바꿈 태그 제거: `\r\n`, `\n`, `<br>` 등
|
||
|
|
|
||
|
|
4. **에러 처리**
|
||
|
|
- 경고 로그만 출력하고 계속 진행
|
||
|
|
- 누락 데이터는 빈 값으로 표시
|
||
|
|
|
||
|
|
## 🔄 재실행 방법
|
||
|
|
|
||
|
|
데이터가 업데이트되면:
|
||
|
|
|
||
|
|
1. 원본데이터 폴더에 최신 JSON 파일 배치
|
||
|
|
2. 수집 스크립트 재실행
|
||
|
|
3. 수집결과 폴더의 파일들이 자동으로 덮어쓰기됨
|
||
|
|
|
||
|
|
## 📈 수집 통계 (2025-11-05)
|
||
|
|
|
||
|
|
- 총 스토커: 11명
|
||
|
|
- 평균 스킬 수: 5개 (기본 3~4 + 서브 1 + 궁극기 1)
|
||
|
|
- 총 스킬 몽타주: 64개
|
||
|
|
- 총 기본 공격 몽타주: 24개
|
||
|
|
- 스탯 합계 검증: 모든 스토커 75.0 ✓
|
||
|
|
|
||
|
|
## 🛠️ 향후 보완 계획
|
||
|
|
|
||
|
|
- [ ] Blueprint 내부 정보 수집 (변수, 함수 등)
|
||
|
|
- [ ] GameplayEffect 상세 정보 수집
|
||
|
|
- [ ] 모든 AnimNotifies 수집 (현재는 4가지만)
|
||
|
|
- [ ] CurveTable 데이터 수집
|
||
|
|
- [ ] 데이터 비교/분석 도구 추가
|