이 프로젝트는 Princess Connect! Re: Dive 게임에서 사용하는 .cysp
파일을 .skel
파일로 추출, 처리 및 변환하려는 사용자를 돕기 위해 만들어졌습니다.
-
Tkinter GUI
- 애니메이션 파일 및 출력 디렉토리를 선택하기 위한 사용자 친화적인 파일 선택 대화 상자를 제공합니다.
-
애니메이션 추출
- 각
.cysp
파일의 데이터 구조를 분석하여 총 애니메이션 개수를 계산하고, 이 정보를 사용해.skel
파일을 생성합니다. 이를 통해 파일 내 애니메이션 데이터의 위치와 수를 파악하고, 변환 작업에 필요한 정보를 제공합니다.
- 각
-
CSV 지원
.csv
파일을 사용하여 캐릭터 ID, 이름 및 공통 배틀 ID와 같은 특정 캐릭터 세부 정보를 확인합니다.
-
파일 처리
- 처리 작업을 위한 임시 디렉터리를 자동으로 생성하고 작업 완료 후 삭제하여 사용자의 파일 시스템을 깔끔하게 유지합니다.
-
자동화 및 유연성
- 특정 캐릭터 ID를 처리하거나 기타 애니메이션을 처리하기 위한 다양한 명령어를 제공하여 사용자가 필요한 작업을 자동으로 수행할 수 있습니다.
Priconne Cysp To Skel
을 실행합니다.
- 프로그램이 다음을 선택하라고 요청합니다:
.cysp
파일이 포함된 폴더를 선택합니다. 이 폴더에는 변환하려는 모든.cysp
파일이 포함되어 있어야 합니다.- 처리 할 데이터가 포함된
.csv
파일을 선택합니다. 이 파일에는 ID, 이름 등이 포함되어 있어야 합니다. - 변환된
.skel
파일이 저장될 대상 폴더를 선택합니다. 이 폴더는 최종 결과물을 저장할 위치로 사용됩니다.
- 폴더와 파일을 선택한 후, 도구는 계속 진행하기 위해 다음 중 하나의 명령어를 입력하도록 요청합니다:
-
6자리 캐릭터 ID:
- 특정 캐릭터의 애니메이션을 추출하기 위해 6자리 숫자로 이루어진 캐릭터 ID를 입력합니다.
- 예를 들어,
107661
을 입력하면 캐릭터 ID107661
과 관련된 모든.cysp
파일을 처리하여.skel
파일로 변환합니다.
-
EtcAnime:
- 캐릭터 전투 애니메이션이 아닌 모든 애니메이션 파일 (예: 미니게임, 캐러밴 등 관련 애니메이션)을 처리합니다.
-
EXIT:
- 프로그램을 종료합니다.
- 프로그램을 종료합니다.
-
- 입력한 명령어에 따라
.cysp
파일들이 그룹화되고 처리됩니다. 도구는 각 처리된 파일에 대한 자세한 정보를 표시하며, 변환 과정이 완료되면.skel
파일을 지정한 출력 디렉토리에 저장합니다. .cysp
파일은 캐릭터와 관련된 애니메이션 데이터를 포함하고 있으며, 이를.skel
파일로 변환하여 게임 내에서 사용할 수 있게 합니다.- 모든 파일 처리는 임시 디렉토리에서 이루어지며, 변환 후에는 결과 파일을 지정한 출력 폴더로 이동하고 임시 디렉토리는 삭제됩니다. 이로 인해 파일 작업 중 오류 발생을 방지하고 작업 환경을 깔끔하게 유지할 수 있습니다.
-
extract_anim_count: 각
.cysp
파일의 데이터 구조를 분석하여 애니메이션의 개수를 추출합니다. 이 함수는 파일의 특정 오프셋에서 데이터를 읽어와 애니메이션의 총 개수를 계산하고, 그 값을 전역 변수로 저장하여 다른 함수에서 사용할 수 있도록 합니다.- 이 과정에서 파일의 헤더 부분을 13바이트 읽은 후, 12번째 바이트 값을 기반으로 오프셋을 계산하여 해당 파일에 포함된 애니메이션 개수를 가져옵니다. 이를 통해
.cysp
파일에 저장된 데이터의 구조를 분석하고, 각 캐릭터 애니메이션의 수를 파악할 수 있습니다. - 예외 처리: 파일을 읽는 과정에서 발생할 수 있는 오류를 감지하고, 해당 오류에 대한 메시지를 출력합니다. 이를 통해 사용자는 어떤 파일이 문제가 있는지 쉽게 알 수 있습니다.
- 이 과정에서 파일의 헤더 부분을 13바이트 읽은 후, 12번째 바이트 값을 기반으로 오프셋을 계산하여 해당 파일에 포함된 애니메이션 개수를 가져옵니다. 이를 통해
-
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
파일은 데이터를 식별하고 처리하는 데 필요합니다.
-
.cysp
파일이 없음:- 선택한 디렉토리에
.cysp
확장자를 가진 파일이 있는지 확인하세요..cysp
파일은 프로그램의 주요 입력 파일이므로 필수적입니다.
- 선택한 디렉토리에
-
csv 파일 문제:
.csv
파일이 올바르게 포맷되었고, 캐릭터 ID, 이름, 공통 배틀 ID와 같은 필요한 열이 포함되어 있는지 확인하세요..csv
파일의 형식이 잘못되면 프로그램이 올바르게 데이터를 가져올 수 없습니다..csv
파일 내에 올바른 헤더가 있는지 확인하고, 필요한 열이 정확하게 매칭되는지 확인하세요. 이 열은 캐릭터의 세부 정보를 가져오고 애니메이션 파일과 연관시키는 데 중요합니다.
-
FileNotFoundError:
- 파일이 누락된 경우, GUI 프롬프트에서 올바른 경로가 선택되었는지 확인하세요. 올바른 경로를 선택하지 않으면 프로그램이 파일을 찾을 수 없습니다.
- 파일 경로 문제 해결: 파일이 존재하지 않는 경우 프로그램은 해당 오류를 사용자에게 알리고, 다시 파일을 선택하도록 유도합니다. 이를 통해 사용자가 쉽게 문제를 해결할 수 있도록 돕습니다.
-
잘못된 명령어 입력:
EtcAnime
, 6자리 ID, 또는EXIT
과 같은 유효한 명령어를 입력했는지 확인하세요. 잘못된 명령어를 입력하면 프로그램이 작업을 진행할 수 없으며 오류 메시지를 표시합니다.
-
임시 폴더 문제:
- 임시 폴더 생성 및 삭제 과정에서 오류가 발생할 수 있습니다. 이 경우 해당 폴더가 다른 프로그램에서 사용 중인지 확인하고, 수동으로 삭제한 후 다시 시도해 보세요.
- 임시 디렉토리가 삭제되지 않은 경우, 해당 폴더가 여전히 시스템에서 점유 중인지 확인하고, 필요시 관리자 권한으로 수동 삭제를 시도하세요. 임시 폴더가 제대로 삭제되지 않으면 후속 작업에 영향을 줄 수 있습니다.