# 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`, `
` 등 4. **에러 처리** - 경고 로그만 출력하고 계속 진행 - 누락 데이터는 빈 값으로 표시 ## 🔄 재실행 방법 데이터가 업데이트되면: 1. 원본데이터 폴더에 최신 JSON 파일 배치 2. 수집 스크립트 재실행 3. 수집결과 폴더의 파일들이 자동으로 덮어쓰기됨 ## 📈 수집 통계 (2025-11-05) - 총 스토커: 11명 - 평균 스킬 수: 5개 (기본 3~4 + 서브 1 + 궁극기 1) - 총 스킬 몽타주: 64개 - 총 기본 공격 몽타주: 24개 - 스탯 합계 검증: 모든 스토커 75.0 ✓ ## 🛠️ 향후 보완 계획 - [ ] Blueprint 내부 정보 수집 (변수, 함수 등) - [ ] GameplayEffect 상세 정보 수집 - [ ] 모든 AnimNotifies 수집 (현재는 4가지만) - [ ] CurveTable 데이터 수집 - [ ] 데이터 비교/분석 도구 추가