이번엔 안드로이드폰에서 테스트를 진행해봤습니다.



1. PNG



초기화 시간 - 57 ms



비트맵 메모리 - 21193 kb

GPU 메모리 - 61488 kb




2. ATF



초기화 시간 - below 1 ms



메모리 - 5849 kb

GPU 메모리 - 61488 kb



결론


 

 PNG

ATF 

 
 Time 57 ms

 < 1 ms

 월등히 좋음

 Memory 21193 kb

 5849 kb 

 262%

 GPU Memory 61488 kb 61488 kb  0%
 File size 312 kb 83 kb  276%


PC에서와 다른 점은 점유 메모리까지 매우 줄어들었다는 점이네요.


ATF 자주 활용해야겠네요.




다만 주의할 것은 여기서 테스트한 ATF 포맷은 Uncompressed ARGB 포맷이었는데


ATF는 DXT, PVR등을 지원하는데 이에 대한 테스트도 한번 해봐야 정확하겠지만


이 경우에는 워낙 파일크기가 커져서 성능이 아무리 좋아도 용량땜에 못쓰겠더군요.


암튼 ATF 포맷은 좋네요 ㅋ




For the better.





Starling 텍스쳐를 다루면서 궁금했던게 바로 ATF(Adobe Texture Format)이었습니다.


ATF : http://www.bytearray.org/?p=4472


항상 텍스쳐를 다루면서 이미 바이너리로 존재하는 데이터를 꼭 ByteArray로 변환해서 텍스쳐로 올려야하나?


라는 생각을 했었는데


바로 이 ATF 포맷이 그것을 지원하는 것 같습니다.


설명에 보면


 - 렌더링이 빠르다.

 - 텍스쳐 메모리가 적다.

 - 텍스쳐 메모리로 올리는 속도가 빠르다

  - mipmap을 자동으로 생성해준다.

 - 압축을 통해 같은 사이즈에서 보다 높은 resolution이 가능하게 합니다(?)


텍스쳐 메모리를 적게 차지하고 업로드 속도가 빠르다는게 매력적이었습니다.


규모가 큰 게임을 만들면 텍스쳐 처리가 초기 버벅임의 주범이었습니다.


때문에 텍스쳐를 보다 효율적으로 다루는 방법이 필요했었는데


ATF 포맷을 보고 직접 테스트를 해봤습니다.




[ 테스트 방법 ]


1024x1024 사이즈의 이미지를


png와 atf 두벌을 놓고 각 10개씩 만들어서 생성 타임과 차지하는 메모리를 Monocle로 측정해보았습니다.


atf 파일은 uncompressed, no-mipmap으로 컨버팅했습니다.




1. PNG



초기화 시간 - 18 ms



메모리 - 11161 kb

GPU 메모리 - 61488 kb




2. ATF (Adobe Texture Format)



초기화 시간 - below 1 ms



메모리 - 10266 kb

GPU 메모리 - 61488 kb




결론


결론은 ATF 포맷이 성능이 월등했습니다.


 

 PNG

ATF 

 
 Time  18 ms

 < 1 ms

 월등히 좋음

 Memory  11161 kb

 10266 kb 

 9%

 GPU Memory  61488 kb  61488 kb   0%
 File size  312 kb  83 kb   276%


파일 사이즈에서부터 속도까지 매우 훌륭했습니다.


다만 주의할것이 이번 테스트는 OS X에서 테스트한겁니다.


다음에는 모바일에서 테스트를 해봐야할 것 같습니다.



Adobe에서 새롭게 내놓은 프로파일링 툴입니다.


기존의 Profile 기능과는 차원이 다릅니다.


특히 Stage3D 기반의 앱에게는 최고의 디버깅 툴이 될 것입니다.






사용하는 방법은 간단합니다.


Monocle 프로그램을 실행하면


이후부터 실행되는 swf이 자동으로 프로파일링이 시작됩니다.


다만 프로파일링에는 2가지 종류가 있습니다.


기존의 swf도 모두 가능한 Standard 프로파일링과


더 디테일한 프로파일링이 가능하도록 하는 Advanced 프로파일링이 있습니다.



Standard 프로파일링일때는 ActionScript 패널에 위와 같이 나타납니다.


"이 패널을 사용하려면 -advanced-telemetry 옵션을 추가하여 컴파일해야합니다."


라고 쓰여있습니다.


컴파일 옵션을 추가해야하는데 다음과 같은 방법들이 있습니다.



1. Flash Builder 4.7을 사용한다.


2. command line 으로 -advanced-telemetry 옵션을 추가해준다.


3. add-advanced-telemetry.py 파이썬을 통하여 직접 swf에 advanced-telemetry 정보를 추가한다.




가장 쉬운 방법은 역시 IDE를 이용하는 것입니다.


하지만 Flash Builder 4.7 Beta 는 현재 매우매우 불안해요.


현재 개발중인 게임은 일단 안돌아가서 논외로 했습니다.


게다가 IDE 자체도 불안해서 계속 에러가 발생하여 빌드도 제대로 이뤄지지 않았습니다.


완전 구려요.


물론 일단 테스트해보기에는 제일 좋습니다.





command line 으로 옵션을 주는 방법도 좋지만


ASC 2.0에서는 몇가지 변경점이 있습니다.


Font 임베드를 하면 안되는 것, Embed 태그 사용시 "/"로 시작해야되는 등


기존 소스에 변형을 가져오게 됩니다.


그래서 이것도 예외로 했습니다.




마지막 남은 방법이 파이썬을 이용하는 방법입니다.


파이썬을 먼저 설치할까요? 


(OSX에는 기본적으로 설치되어 있습니다.)


Python 2.7.2 : http://python.org/ftp/python/2.7.2/python-2.7.2.msi


이제 파이썬을 설치했으면 cmd 에서 다음과 같이 입력합니다.


C:\>[파이썬설치경로]\python.exe [파이썬 파일 경로]\add-advanced-telemetry.py [swf 경로] [비밀번호]


이렇게 실행하면 swf 에 advanced telemetry 정보가 추가되게 됩니다.




이렇게 해서 실행하면 Monocle에서 더 자세하게 프로파일링을 할 수 있게 됩니다.


Monocle 대박입니다.


앞으로 게임 개발할 때 필수툴이 될거 같습니다.




For the better.

+ Recent posts