Cocos2d-X 로 게임 개발을 하면
특히 2D 게임에서는 이미지들을 한데 모아서
아래처럼 스프라이트 시트 (아틀라스) 방식으로
묶어서 사용하게 된다.
이러한 이미지를 만들어 주는 툴중에
유용한 프로그램을 찾았는데 바로
TexturePacker
라는 프로그램이다.
유료지만 $39.95 (약 4만 5천원 정도..) 면 살 수 있고
가격에 비해 기능도 많고 여러 플랫폼에 적용할 수 있다.
TexturePacker 공식 사이트
https://www.codeandweb.com/texturepacker
그런데 사용하다보면 한가지 문제점이 생기는데
바로 이미지들이 그대로 노출 된다는 점이다.
iOS 에서는 딱히 신경쓸 필요 없지만.
안드로이드에서는 Apk를 바로 열어 볼 수 있기때문에
엄청난 문제가 될 수 있다.
그래서 찾아보니
TexturePacker 자체에 이미지들을
압축해서 추출해 주는 기능이 있었다!!
근데 아직은 Cocos2d, Cocos2d-X 에서만 되기 때문에
다른 플랫폼은 아직 적용하지 못합니다.
(사이트에는 Cocos2d 만 된다고 써있는데,
Cocos2d-x 에서도 iOS, Android 둘다 됩니다.)
일단 TexturePacker 를 실행해서
cocos2d 를 선택해 줍니다.
그다음 스프라이트 시트로 묶을 이미지들을
아래 영역에 드래그 해서 끌어다 줍니다.
( 일단 1개만 넣겠습니다. )
오른쪽 창 부분에 보면
Texture 라는 항목이 있습니다.
1
텍스쳐의 포맷을 설정하는 부분.
2
이 부분이 스프라이트 시트에
암호를 거는 부분입니다.
1 번 항목에서
아래 화살표 처럼
PVR+zlib (.pvr.ccz, Ver.2)
를 선택해 줍니다.
( ccz 는 아마 CoCosZip 의 약자 인듯?? )
그다음 2번 항목에서
아래 영역의 자물쇠 모양의 버튼을 누릅니다.
누르면 아래 같은 창이 나오는데..
1
새로운 키를 생성 합니다.
2
키를 지우거나 비활성화 합니다.
3
공용키로 저장합니다.
4
공용키로 저정된 키를 불러 옵니다.
새로운 키를 생성 하거나 공용키를 불러오면
아래처럼 32 자리의 랜덤한 키가 생성 됩니다.
이 키를 꼭 기억해 둡니다.
그 다음 스프라이트 시트로 추출하면
아래처럼 2개의 파일이 추출 됩니다.
이 2개의 파일을
프로젝트에 포함시켜 줍니다.
그다음 코드를 구현합니다.
제일 중요한 부분은 아까 TexturePacker 에서
설정한 키 값을 적용하는 부분인데요.
키는 32 자리의 코드를 8자리로 나눠서
앞에 "0x" 를 붙여서 적용해 주시면 되는데요.
예를들면 키가 아래와 같다고 치면
6619a7b737576dd06569785dbf7888f1
4 등분 하고
6619a7b7 / 37576dd0 / 6569785d / bf7888f1
"0x" 를 붙여서
0x6619a7b7
0x37576dd0
0x6569785d
0xbf7888f1
이렇게 4등분 해서 적용해 주시면 됩니다.
키 값을 적용하는 코드는 아래와 같습니다.
키를 적용하고 사용하는 방법은
일반적인 방법으로 사용하시면 됩니다.
별 문제가 없다면 아래처럼 잘 실행 됩니다.
출저 & 참조
https://www.codeandweb.com/texturepacker/contentprotection
----- Tip -----
아까 키를 설정하는 부분에서
글로벌 키를 설정하면 모든 스프라이트 시트를
로드하고 사용할때 한번만 키를 적용하면 되지만,
모든 스프라이트 시트 마다
키를 새로 만든다면 로드할때 마다
키를 적용해야 되기 때문에 번거로울 수 있습니다.
하지만 보안적으로 보면 보안이 더욱 강화 되겠죠..
이부분은 작업을 하실때 참고하셔서
진행하시면 될 것 같습니다.
'Programming > Cocos2D-X' 카테고리의 다른 글
[Cocos2d-X] 해상도 고정해서 여러 디바이스에 쉽게 대응하기 (0) | 2015.04.01 |
---|---|
[Cocos2d-X] AssetsManager 를 이용한 패치파일 관리하는 방법 (1) | 2015.03.30 |
[Cocos2d-X] 안드로이드 메모리 해킹 대비하기 (0) | 2015.03.30 |
[Cocos2d-X] Cocos2d-x (C++) 에서 안드로이드 (Java) 로 Jni 를 이용해 함수 호출하는 방법 (0) | 2015.03.29 |
[Cocos2d-X] 안드로이드 (Java) 에서 Cocos2d-x (C++) 로 함수 호출하는 방법 (0) | 2015.03.28 |