콘텐츠로 이동

압축 & 난독화

플레이어가 리소스팩을 더 빨리 내려받게 하려면(그리고 트래픽을 아끼려면) 리소스팩을 압축해야 한다.

또 다른 사람이 리소스팩을 쉽게 훔쳐 가지 못하게 하려면 난독화도 필요하다.

압축과 난독화에는 PackSquash를 추천한다. 참고로 이 문서는 ZIP 수준의 압축 & 난독화만 다룬다.

공식 사이트에서 내려받으면 된다.

PackSquash를 쓰려면 작업 디렉터리에 설정 파일 packsquash.toml을 만들어야 한다.

그리고 파일에 다음 내용을 적는다.

pack_directory = 'C:\path\to\pack(리소스팩이 있는 디렉터리를 적는다)'

그다음 해당 디렉터리에서 packsquash packsquash.toml을 실행하면 된다.

output_file_path = 'C:\path\to\result\pack\zip\file\my_pack.zip'
zip_spec_conformance_level = 'pedantic'

기본값은 pedantic으로, ZIP 파일 규격을 완전히 따르기 때문에 어떤 뷰어나 호스팅에서도 인식된다.

disregard는 추가 기능 모드로, 압축 해제 방지와 개선된 내부 ZIP 구조 압축이 들어가 성능이 더 좋다. 적극 추천한다.

size_increasing_zip_obfuscation = true

disregard 모드에서 이 옵션을 켜면 생성된 ZIP 파일을 열어 보거나, 압축을 풀거나, 변조하기 어렵게 만드는 보호가 추가되며, 대신 파일 크기가 약간 늘어난다. 파일 크기를 늘리지 않는 보호가 추가되는지와는 상관없는 옵션이고, ZIP 규격 수준이 보호를 제공하지 않으면 아무 효과가 없다.

percentage_of_zip_structures_tuned_for_obfuscation_discretion = 100

0(최솟값)으로 설정하면 모든 ZIP 레코드가 압축률을 우선해 저장된다. 반대로 100(최댓값)으로 설정하면 모든 ZIP 레코드가 은닉성을 우선해 저장된다. 그 사이 값은 둘을 섞는다.

ogg_obfuscation = true
two_pass_vorbis_optimization_and_validation = true

이 옵션을 켜면 생성된 Ogg 파일이 일부러 손상되어 Minecraft 밖에서는 재생하기 어려워진다.

PackSquash를 쓴 뒤 ItemsAdder 방어구가 제대로 동작하지 않는다

섹션 제목: “PackSquash를 쓴 뒤 ItemsAdder 방어구가 제대로 동작하지 않는다”

설정 파일에 다음 내용을 추가한다.

['**/*?.{fsh,vsh,glsl}']
minify_shader = false
['**/textures/models/armor/*?.png']
image_data_compression_iterations = 0
skip_alpha_optimizations = true
color_quantization_target = 'none'
zip_spec_conformance_level = 'disregard'
size_increasing_zip_obfuscation = true
percentage_of_zip_structures_tuned_for_obfuscation_discretion = 100
pack_directory = 'src'
output_file_path = 'resources.min.zip'
zip_spec_conformance_level = 'disregard'
zip_compression_iterations = 255
never_store_squash_times = true
['**/*?.png']
image_data_compression_iterations = 255