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개)
🚀 실행 방법
데이터 수집 실행
cd "D:\Work\WorldStalker\DS-전투분석_저장소\데이터수집\수집스크립트"
python collect_combat_data.py
결과 검증
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)
{
"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
- 몽타주 타이밍 정보
- 기본 공격 정보
⚠️ 주의사항
-
원본 데이터 경로
DS-전투분석_저장소/원본데이터/DataTable.jsonDS-전투분석_저장소/원본데이터/AnimMontage.json
-
스킬 몽타주 제외 규칙
- DT_Skill의 useMontages에만 적용
- 제외 키워드: ready, Equip, Equipment, _E
- 기본 공격 몽타주는 제외 규칙 미적용
-
descValues 처리
- JSON: 배열 그대로 보존
- Markdown: desc와 합쳐서 완성된 문장 생성
- 줄바꿈 태그 제거:
\r\n,\n,<br>등
-
에러 처리
- 경고 로그만 출력하고 계속 진행
- 누락 데이터는 빈 값으로 표시
🔄 재실행 방법
데이터가 업데이트되면:
- 원본데이터 폴더에 최신 JSON 파일 배치
- 수집 스크립트 재실행
- 수집결과 폴더의 파일들이 자동으로 덮어쓰기됨
📈 수집 통계 (2025-11-05)
- 총 스토커: 11명
- 평균 스킬 수: 5개 (기본 3~4 + 서브 1 + 궁극기 1)
- 총 스킬 몽타주: 64개
- 총 기본 공격 몽타주: 24개
- 스탯 합계 검증: 모든 스토커 75.0 ✓
🛠️ 향후 보완 계획
- Blueprint 내부 정보 수집 (변수, 함수 등)
- GameplayEffect 상세 정보 수집
- 모든 AnimNotifies 수집 (현재는 4가지만)
- CurveTable 데이터 수집
- 데이터 비교/분석 도구 추가