Skip to content

Latest commit

 

History

History
104 lines (78 loc) · 9 KB

Introduce Priconne Cysp To Skel.md

File metadata and controls

104 lines (78 loc) · 9 KB

Priconne Cysp To Skel

이 프로젝트는 Princess Connect! Re: Dive 게임에서 사용하는 .cysp 파일을 .skel 파일로 추출, 처리 및 변환하려는 사용자를 돕기 위해 만들어졌습니다.


🔍 주요 기능

  • Tkinter GUI

    • 애니메이션 파일 및 출력 디렉토리를 선택하기 위한 사용자 친화적인 파일 선택 대화 상자를 제공합니다.
  • 애니메이션 추출

    • .cysp 파일의 데이터 구조를 분석하여 총 애니메이션 개수를 계산하고, 이 정보를 사용해 .skel 파일을 생성합니다. 이를 통해 파일 내 애니메이션 데이터의 위치와 수를 파악하고, 변환 작업에 필요한 정보를 제공합니다.
  • CSV 지원

    • .csv 파일을 사용하여 캐릭터 ID, 이름 및 공통 배틀 ID와 같은 특정 캐릭터 세부 정보를 확인합니다.
  • 파일 처리

    • 처리 작업을 위한 임시 디렉터리를 자동으로 생성하고 작업 완료 후 삭제하여 사용자의 파일 시스템을 깔끔하게 유지합니다.
  • 자동화 및 유연성

    • 특정 캐릭터 ID를 처리하거나 기타 애니메이션을 처리하기 위한 다양한 명령어를 제공하여 사용자가 필요한 작업을 자동으로 수행할 수 있습니다.

⏩ 사용 방법

1. Priconne Cysp To Skel 실행

  • Priconne Cysp To Skel을 실행합니다.

2. 디렉터리 및 파일 선택

  • 프로그램이 다음을 선택하라고 요청합니다:
    • .cysp 파일이 포함된 폴더를 선택합니다. 이 폴더에는 변환하려는 모든 .cysp 파일이 포함되어 있어야 합니다.
    • 처리 할 데이터가 포함된 .csv 파일을 선택합니다. 이 파일에는 ID, 이름 등이 포함되어 있어야 합니다.
    • 변환된 .skel 파일이 저장될 대상 폴더를 선택합니다. 이 폴더는 최종 결과물을 저장할 위치로 사용됩니다.

3. 명령어 입력

  • 폴더와 파일을 선택한 후, 도구는 계속 진행하기 위해 다음 중 하나의 명령어를 입력하도록 요청합니다:
    • 6자리 캐릭터 ID:

      • 특정 캐릭터의 애니메이션을 추출하기 위해 6자리 숫자로 이루어진 캐릭터 ID를 입력합니다.
      • 예를 들어, 107661을 입력하면 캐릭터 ID 107661과 관련된 모든 .cysp 파일을 처리하여 .skel 파일로 변환합니다.
    • EtcAnime:

      • 캐릭터 전투 애니메이션이 아닌 모든 애니메이션 파일 (예: 미니게임, 캐러밴 등 관련 애니메이션)을 처리합니다.
    • EXIT:

      • 프로그램을 종료합니다.

4. 파일 처리

  • 입력한 명령어에 따라 .cysp 파일들이 그룹화되고 처리됩니다. 도구는 각 처리된 파일에 대한 자세한 정보를 표시하며, 변환 과정이 완료되면 .skel 파일을 지정한 출력 디렉토리에 저장합니다.
  • .cysp 파일은 캐릭터와 관련된 애니메이션 데이터를 포함하고 있으며, 이를 .skel 파일로 변환하여 게임 내에서 사용할 수 있게 합니다.
  • 모든 파일 처리는 임시 디렉토리에서 이루어지며, 변환 후에는 결과 파일을 지정한 출력 폴더로 이동하고 임시 디렉토리는 삭제됩니다. 이로 인해 파일 작업 중 오류 발생을 방지하고 작업 환경을 깔끔하게 유지할 수 있습니다.

애니메이션 파일 처리

  • extract_anim_count: 각 .cysp 파일의 데이터 구조를 분석하여 애니메이션의 개수를 추출합니다. 이 함수는 파일의 특정 오프셋에서 데이터를 읽어와 애니메이션의 총 개수를 계산하고, 그 값을 전역 변수로 저장하여 다른 함수에서 사용할 수 있도록 합니다.

    • 이 과정에서 파일의 헤더 부분을 13바이트 읽은 후, 12번째 바이트 값을 기반으로 오프셋을 계산하여 해당 파일에 포함된 애니메이션 개수를 가져옵니다. 이를 통해 .cysp 파일에 저장된 데이터의 구조를 분석하고, 각 캐릭터 애니메이션의 수를 파악할 수 있습니다.
    • 예외 처리: 파일을 읽는 과정에서 발생할 수 있는 오류를 감지하고, 해당 오류에 대한 메시지를 출력합니다. 이를 통해 사용자는 어떤 파일이 문제가 있는지 쉽게 알 수 있습니다.

  • extract_data: 파일 내 특정 바이트 시퀀스를 찾아 데이터를 추출하고 이를 .skel 파일에 기록합니다. 이 과정에서 특정 패턴을 탐색하며, 애니메이션 데이터가 올바르게 저장되었는지 확인한 후 결과를 기록합니다.

    • 파일에서 필요한 데이터를 추출한 후, .skel 파일에 기록하는 과정을 통해 캐릭터의 애니메이션 정보를 재구성합니다. 이 정보는 게임 내 캐릭터의 애니메이션 동작을 정의하는 데 사용됩니다.
    • 특정 바이트 패턴 탐색: 예를 들어, 바이트 배열(stateStop 등)을 찾아 해당 위치에 맞춰 데이터를 삽입하거나 수정하는 작업을 수행합니다. 이러한 작업을 통해 애니메이션의 정확성과 일관성을 보장합니다.
    • 데이터 추가 및 변환: 추출된 데이터에 기반해 필요한 경우 데이터를 추가 변환하여 skel 파일에 삽입합니다. 이 과정에서 데이터의 포맷이 게임에서 사용 가능한 형태로 조정됩니다.

  • 그룹 처리: MINIGAME_*.cysp, NAVI_*.cysp와 같은 파일을 그룹화하여 한 번에 처리합니다. 각 그룹은 고유한 .skel 파일로 변환되어 출력 디렉토리에 저장됩니다.

    • 각 그룹의 파일들은 공통된 규칙에 따라 필터링되며, 관련 파일들을 묶어 일괄적으로 처리하여 일관된 애니메이션 파일을 생성합니다. 이를 통해 특정 유형의 애니메이션들을 효과적으로 관리할 수 있습니다.
    • 파일 필터링: 정규 표현식을 사용하여 특정 패턴에 맞는 파일들만 선택하고, 이 파일들을 일괄적으로 처리합니다. 이를 통해 파일 선택 과정에서 발생할 수 있는 오류를 줄이고, 처리의 정확성을 높입니다.

📂 구조 예시

project-root/
  ├── cysp-files/                # 입력 .cysp 파일이 포함된 디렉토리
  │     ├── file1.cysp
  │     ├── file2.cysp
  │     └── ...
  ├── output/                    # 처리된 .skel 파일이 저장될 디렉토리
  │     ├── result1.skel
  │     ├── result2.skel
  │     └── ...
  └── data.csv                   # 캐릭터 정보가 포함된 CSV 파일

.cysp 파일은 필수적이며, .csv 파일은 데이터를 식별하고 처리하는 데 필요합니다.


🔧 문제 해결

  1. .cysp 파일이 없음:

    • 선택한 디렉토리에 .cysp 확장자를 가진 파일이 있는지 확인하세요. .cysp 파일은 프로그램의 주요 입력 파일이므로 필수적입니다.
  2. csv 파일 문제:

    • .csv 파일이 올바르게 포맷되었고, 캐릭터 ID, 이름, 공통 배틀 ID와 같은 필요한 열이 포함되어 있는지 확인하세요. .csv 파일의 형식이 잘못되면 프로그램이 올바르게 데이터를 가져올 수 없습니다.
    • .csv 파일 내에 올바른 헤더가 있는지 확인하고, 필요한 열이 정확하게 매칭되는지 확인하세요. 이 열은 캐릭터의 세부 정보를 가져오고 애니메이션 파일과 연관시키는 데 중요합니다.
  3. FileNotFoundError:

    • 파일이 누락된 경우, GUI 프롬프트에서 올바른 경로가 선택되었는지 확인하세요. 올바른 경로를 선택하지 않으면 프로그램이 파일을 찾을 수 없습니다.
    • 파일 경로 문제 해결: 파일이 존재하지 않는 경우 프로그램은 해당 오류를 사용자에게 알리고, 다시 파일을 선택하도록 유도합니다. 이를 통해 사용자가 쉽게 문제를 해결할 수 있도록 돕습니다.
  4. 잘못된 명령어 입력:

    • EtcAnime, 6자리 ID, 또는 EXIT과 같은 유효한 명령어를 입력했는지 확인하세요. 잘못된 명령어를 입력하면 프로그램이 작업을 진행할 수 없으며 오류 메시지를 표시합니다.
  5. 임시 폴더 문제:

    • 임시 폴더 생성 및 삭제 과정에서 오류가 발생할 수 있습니다. 이 경우 해당 폴더가 다른 프로그램에서 사용 중인지 확인하고, 수동으로 삭제한 후 다시 시도해 보세요.
    • 임시 디렉토리가 삭제되지 않은 경우, 해당 폴더가 여전히 시스템에서 점유 중인지 확인하고, 필요시 관리자 권한으로 수동 삭제를 시도하세요. 임시 폴더가 제대로 삭제되지 않으면 후속 작업에 영향을 줄 수 있습니다.