Files
DS-Combat_analy/데이터수집/README.md

4.7 KiB

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
    • 몽타주 타이밍 정보
  • 기본 공격 정보

⚠️ 주의사항

  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 데이터 수집
  • 데이터 비교/분석 도구 추가