Skip to content

MuteJack/Diff_Patch_Generator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Patch Generator

Git Diff를 이용하여 두 폴더를 비교하고, 바이너리 패치를 생성/적용하는 도구입니다.

한글패치 등을 제작할 때 게임의 원본 스크립트를 직접 수정해야 하는 경우가 있습니다.
수정된 파일 전체를 배포하면 원본 내용이 그대로 공개되므로, 이 도구는 변경 사항(diff)만 추출하여 패치 파일로 배포합니다.
추가적인 최소한의 보안 조치로, 패치 파일은 Base64로 인코딩되어 일반 사용자가 내용을 직접 열람하거나 수정할 수 없도록 합니다. 암호화 과정이 없으므로, 본인이 추가/수정한 부분에 보안이 필요하다면 주의바랍니다.

1. 구조

Patch_Generator/
├── Original/            # 원본 파일 (이름 수정 가능)
│   └── 게임 내 파일들
├── Modified/            # 수정된 파일 (이름 수정 가능)
│   └── 게임 내 파일들
├── create_patch.bat     # 패치 생성 스크립트
└── Patcher/             # 배포용 폴더 (패치기)
    ├── apply_patch.bat  # 패치 적용 스크립트
    ├── PortableGit/     # Git Portable 버전 및 extract되는 폴더
    ├── {filename}.dat   # 인코딩된 패치 데이터
    └── .gitignore       # GitHub 배포 시 제외할 파일 (예: Git Portable)

2. 원리

2.1 패치 생성 (create_patch.bat)

  1. git diff --no-index --binaryOriginal/Modified/ 폴더를 비교합니다.
  2. 제외 패턴(EXCLUDE_PATTERNS)에 해당하는 파일을 필터링합니다.
  3. 패치 경로에서 Original/, Modified/ 접두사를 제거하여 대상 환경에서 바로 적용 가능하도록 정규화합니다.
  4. .patch 파일을 Base64로 인코딩하여 .dat 파일을 생성합니다. (일반 사용자가 내용을 직접 수정하지 못하도록)

2.2 패치 적용 (apply_patch.bat)

  1. PortableGit 실행파일을 탐색합니다. 설치 파일(.7z.exe)만 있는 경우 자동으로 압축해제합니다.
  2. .dat 파일을 Base64 디코딩하여 .patch로 복원합니다.
  3. git apply -p1로 게임 루트 기준 패치를 적용합니다.

3. 사용법

3.1 패치 생성 (개발자)

  1. Original/ 폴더에 원본 파일을 넣습니다. (이름 수정 가능)
  2. Modified/ 폴더에 수정된 파일을 넣습니다. (이름 수정 가능)
  3. create_patch.bat을 실행합니다.
  4. unofficial_patch_YYYYMMDD.dat 파일이 생성됩니다.

설정 (create_patch.bat 상단)

변수 설명 기본값
Original_DIR 원본 폴더 경로 Original
Modified_DIR 수정 폴더 경로 Modified
EXCLUDE_PATTERNS 제외할 파일/폴더 (정규식) \.psd\b|/saves/

제외 패턴 예시

:: 확장자 제외: \.확장자\b
:: 폴더 제외: /폴더명/
set "EXCLUDE_PATTERNS=\.psd\b|/saves/|/cache/"

3.2 패치 적용 (사용자)

  1. Patcher/ 폴더를 게임 루트 디렉토리에 넣습니다.
  2. apply_patch.bat을 실행합니다.
게임 루트/
├── game/           # 패치 대상
└── Patcher/        # 여기에 배치
    ├── apply_patch.bat
    ├── unofficial_patch_YYYYMMDD.dat
    └── PortableGit/

설정 (apply_patch.bat 상단)

변수 설명 기본값
TARGET_DIR 패치 대상 폴더명 (존재 확인용) game
DAT_FILE 패치 데이터 파일 경로 unofficial_patch_YYYYMMDD.dat

3.3 배포

다음 파일을 포함하여 배포합니다:

  • apply_patch.bat
  • unofficial_patch_YYYYMMDD.dat
  • PortableGit/ 폴더 (또는 PortableGit 설치 파일)

4. 요구 사항

  • Windows
  • PowerShell 5.0+
  • Git (create_patch.bat) / PortableGit (apply_patch.bat)

5. Disclaimer

  • 본 도구는 어떠한 보증 없이 제공되며, 사용으로 인해 발생하는 오류, 데이터 손상 등 모든 문제에 대해 개발자는 책임지지 않습니다.
  • 본 도구는 비공식 패치 배포 시 원본 리소스를 그대로 공유하여 발생하는 윤리적 문제를 해소하고자 개발되었습니다.
    • 그러나 리소스를 그대로 공유하지 않는다 하여 저작권 등 법적 문제에서 자유로워짐을 의미하지는 않습니다.
    • diff를 응용한 패치 역시 원본 저작물의 파생물에 해당될 수 있으며, 배포 행위 자체가 저작권법에 저촉될 수 있습니다.
    • 따라서 패치를 배포하기 전, 반드시 원작자/개발사의 허가를 구하는 것을 권장합니다.
  • 본 도구에는 암호화 등 어떠한 실질적인 보안 조치가 적용되어 있지 않습니다.
    • 인코딩은 리소스의 직접적인 노출을 방지하기 위한 최소한의 조치일 뿐 실질적인 보안 수단이 아닙니다.
    • 이는 일반적인 사용자의 무분별한 열람/수정을 억제하기 위한 최소한의 조치이며, 관련 지식을 가진 사용자라면 데이터를 복원할 수 있음에 주의해주세요.
    • 보안이 필요한 경우 별도의 암호화 조치를 적용하는 것을 권장합니다.
  • 본 도구에 대해서, 불법적인 목적으로의 사용을 금지합니다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors