Git Diff를 이용하여 두 폴더를 비교하고, 바이너리 패치를 생성/적용하는 도구입니다.
한글패치 등을 제작할 때 게임의 원본 스크립트를 직접 수정해야 하는 경우가 있습니다.
수정된 파일 전체를 배포하면 원본 내용이 그대로 공개되므로, 이 도구는 변경 사항(diff)만 추출하여 패치 파일로 배포합니다.
추가적인 최소한의 보안 조치로, 패치 파일은 Base64로 인코딩되어 일반 사용자가 내용을 직접 열람하거나 수정할 수 없도록 합니다. 암호화 과정이 없으므로, 본인이 추가/수정한 부분에 보안이 필요하다면 주의바랍니다.
Patch_Generator/
├── Original/ # 원본 파일 (이름 수정 가능)
│ └── 게임 내 파일들
├── Modified/ # 수정된 파일 (이름 수정 가능)
│ └── 게임 내 파일들
├── create_patch.bat # 패치 생성 스크립트
└── Patcher/ # 배포용 폴더 (패치기)
├── apply_patch.bat # 패치 적용 스크립트
├── PortableGit/ # Git Portable 버전 및 extract되는 폴더
├── {filename}.dat # 인코딩된 패치 데이터
└── .gitignore # GitHub 배포 시 제외할 파일 (예: Git Portable)
git diff --no-index --binary로Original/과Modified/폴더를 비교합니다.- 제외 패턴(
EXCLUDE_PATTERNS)에 해당하는 파일을 필터링합니다. - 패치 경로에서
Original/,Modified/접두사를 제거하여 대상 환경에서 바로 적용 가능하도록 정규화합니다. .patch파일을 Base64로 인코딩하여.dat파일을 생성합니다. (일반 사용자가 내용을 직접 수정하지 못하도록)
- PortableGit 실행파일을 탐색합니다. 설치 파일(.7z.exe)만 있는 경우 자동으로 압축해제합니다.
.dat파일을 Base64 디코딩하여.patch로 복원합니다.git apply -p1로 게임 루트 기준 패치를 적용합니다.
Original/폴더에 원본 파일을 넣습니다. (이름 수정 가능)Modified/폴더에 수정된 파일을 넣습니다. (이름 수정 가능)create_patch.bat을 실행합니다.unofficial_patch_YYYYMMDD.dat파일이 생성됩니다.
| 변수 | 설명 | 기본값 |
|---|---|---|
Original_DIR |
원본 폴더 경로 | Original |
Modified_DIR |
수정 폴더 경로 | Modified |
EXCLUDE_PATTERNS |
제외할 파일/폴더 (정규식) | \.psd\b|/saves/ |
:: 확장자 제외: \.확장자\b
:: 폴더 제외: /폴더명/
set "EXCLUDE_PATTERNS=\.psd\b|/saves/|/cache/"Patcher/폴더를 게임 루트 디렉토리에 넣습니다.apply_patch.bat을 실행합니다.
게임 루트/
├── game/ # 패치 대상
└── Patcher/ # 여기에 배치
├── apply_patch.bat
├── unofficial_patch_YYYYMMDD.dat
└── PortableGit/
| 변수 | 설명 | 기본값 |
|---|---|---|
TARGET_DIR |
패치 대상 폴더명 (존재 확인용) | game |
DAT_FILE |
패치 데이터 파일 경로 | unofficial_patch_YYYYMMDD.dat |
다음 파일을 포함하여 배포합니다:
apply_patch.batunofficial_patch_YYYYMMDD.datPortableGit/폴더 (또는 PortableGit 설치 파일)
- Windows
- PowerShell 5.0+
- Git (create_patch.bat) / PortableGit (apply_patch.bat)
- 본 도구는 어떠한 보증 없이 제공되며, 사용으로 인해 발생하는 오류, 데이터 손상 등 모든 문제에 대해 개발자는 책임지지 않습니다.
- 본 도구는 비공식 패치 배포 시 원본 리소스를 그대로 공유하여 발생하는 윤리적 문제를 해소하고자 개발되었습니다.
- 그러나 리소스를 그대로 공유하지 않는다 하여 저작권 등 법적 문제에서 자유로워짐을 의미하지는 않습니다.
- diff를 응용한 패치 역시 원본 저작물의 파생물에 해당될 수 있으며, 배포 행위 자체가 저작권법에 저촉될 수 있습니다.
- 따라서 패치를 배포하기 전, 반드시 원작자/개발사의 허가를 구하는 것을 권장합니다.
- 본 도구에는 암호화 등 어떠한 실질적인 보안 조치가 적용되어 있지 않습니다.
- 인코딩은 리소스의 직접적인 노출을 방지하기 위한 최소한의 조치일 뿐 실질적인 보안 수단이 아닙니다.
- 이는 일반적인 사용자의 무분별한 열람/수정을 억제하기 위한 최소한의 조치이며, 관련 지식을 가진 사용자라면 데이터를 복원할 수 있음에 주의해주세요.
- 보안이 필요한 경우 별도의 암호화 조치를 적용하는 것을 권장합니다.
- 본 도구에 대해서, 불법적인 목적으로의 사용을 금지합니다.