반응형


ETC1 VS ETC2

http://hwanggoon.tistory.com/237 


 

ETC 포맷에 대해 알아보자

 

 

ETC는 Ericsson Texture Compression의 약자로 에릭슨에서 만든 텍스쳐 포맷 입니다.

참조 : http://www.jacobstrom.com/publications/StromAkenineGH05.pdf

안드로이드 표준 포맷이기도 합니다.

 

ETC1은 Open GL ES2.0에서 사용 할 수 있는 포멧입니다.

요즘 모바일 게임 개발에 널리 사용되고 있죠.

ETC1의 단점 중 하나는 사용 Bit수가 작다 보니 압축 시 채널 별 색상 침범이 눈에 띄게 일어 난다는 겁니다.

그래서 R채널은 반투명, G채널은 마스크 이런 식으로 사용하면 문제가 될 수 있습니다.

 

자 그렇다면 ETC2는?

ETC1에 비해 퀄리티도 좋고, 색상침범도 훨씬 덜 일어 납니다.

아래 내용을 보시죠.

 

 

 

ETC1, ETC2 비교

 

 

퀄리티 비교

 

참조 : https://www.khronos.org/assets/uploads/developers/library/2012-siggraph-opengl-es-bof/Ericsson-ETC2-SIGGRAPH_Aug12.pdf

ETC1과 ETC2의 퀄리티 차이를 분명히 볼 수 있죠.

ETC2의 퀄리티는 DXTC 포맷 수준의 퀄리티를 보장합니다.

 

512*512 사이즈, 반투명 채널 X

 - ETC1 : 128KB

 - ETC2 : 128KB

 

512*512 사이즈, 반투명 채널 O (알파테스팅)

 - ETC1 : 256KB (ETC1 2장 사용)

 - ETC2 : 128KB

알파테스팅 용 반투명 채널을 사용한다면 ETC2가 용량을 2배 절약

(마젠타 방식을 사용하면 용량은 같습니다.)

 

512*512 사이즈, 반투명 채널 O (알파블랜딩)

 - ETC1 : 256KB (ETC1 2장 사용)

 - ETC2 : 256KB

퀄리티는 ETC2가 훨씬 좋습니다.

 

 

알파채널 비교

순서대로 ETC2 8bit, RGBA 16bit, RGBA 32bit

ETC2의 용량은 256KB로 다른 포멧에 비해 용량 대비 퀄리티가 압도적 입니다.

(UI를 ETC2로 제작 한다면 상당한 효과를 볼 수 있을 겁니다.)

 

ETC2의 압승입니다.

 

 

 

포맷 지원

 

 

ETC는 안드로이드 표준 포맷이라 대부분의 기기에서 지원 합니다.

다만 버전 별로 지원하는 기준이 있는데요.

 

ETC1 : Open GL ES2.0

ETC2 : Open GL ES3.0, Open GL ES4.3

 - 3.0부터 의무 지원

 - 참조 : https://en.wikipedia.org/wiki/Ericsson_Texture_Compression#ETC2_and_EAC

 

 

Open GL ES3.0 안드로이드 디바이스

 - 참조 : https://en.wikipedia.org/wiki/OpenGL_ES#OpenGL_ES_3.0

 - Nexus 7 (2013)
 - Nexus 4
 - Nexus 5
 - Nexus 10
 - HTC Butterfly S
 - HTC One/One Max
 - LG G2
 - LG G Pad 8.3
 - Samsung Galaxy S4 (Snapdragon version)
 - Samsung Galaxy S5
 - Samsung Galaxy Note 3
 - Samsung Galaxy Note 10.1 (2014 Edition)
 - Sony Xperia M
 - Sony Xperia Z/ZL
 - Sony Xperia Z1
 - Sony Xperia Z Ultra
 - Sony Xperia Tablet Z

...

..

.

 

 

Open GL ES2.0에서 ETC2

 

 

2.0버전에 ETC2를 사용하면 텍스쳐는 보일까?

 - 잘~ 보입니다.(유니티에서는...)

 

유니티에서는 텍스쳐 포맷이 맞지 않는데도 어떻게 텍스쳐가 보일까?

 - 유니티는 지원하는 않는 포맷을 사용한 경우, 내부적으로 적용 가능한 텍스쳐를 생성해 보여 줍니다.

 

그럼 ETC2를 사용해도 되지 않나?

 - 내부적으로 생성된 텍스쳐가 RGBA32여서 문제

 - 메모리에 올라가는 텍스쳐 용량이 증가하게 됨

 - 증가된 용량을 받아 주는 모바일 기기라면 문제 없겠지만, 그게 아니라면 앱이 죽게 되겠죠.

 

그럼 ETC2를 사용하면 안되나요?

 - 전체 메모리가 낮은 편이라면 ETC2를 써도 괜찮습니다.

 - 메모리의 압박을 받는 상황이라면 사용하면 안되겠죠.

 

 


Open GL 버전 별 점유율

 

 

참조 : http://developer.android.com/about/dashboards/index.html

2015년 10월 2일 기준 OpenGL 점유율 입니다.

아직까진 2.0을 많이 사용하고 있네요.

그런데 3.0 비율이 43%(3.0 + 3.1)로 생각보다 높습니다.

 

2015년 2월 2일 기준이 31.1%인걸 감안하면 빠르게 교체되고 있는 중 입니다.

(8개월 만에 12%가 올라갔네요.)

 

이 추세대로 간다면 내년 여름 즘 3.0이 60%정도 되지 않을까 싶습니다.

 

 

 

종합 분석

 

 

글로벌 서비스를 생각한 모바일 게임이라면 아직까진 ETC1으로 가야할 것 같습니다.

(노트3, 겔럭시4 LTE-A 버전 이상을 생각한다면 ETC2로 가야겠지만..)

 

고 퀄리티 게임을 목표로 상위 기종을 노린다면 ETC2가 좋은 방법이 될 수 있습니다.

2017년을 목표로 개발을 하는 프로젝트는 ETC2로~

(Open GL ES3.0이면 쉐이더 텍스코드도 더 쓸 수 있고, 개발 방법에 많은 변화가 생길 것 같네요.)





1. Android Works 설치


http://docs.unrealengine.com/latest/KOR/Platforms/Android/GettingStarted/1/index.html



안드로이드 개발을 시작하기에 앞서 먼저 Android Works 를 설치해야 합니다. Android Works 는 안드로이드 디바이스에 디플로이하기 위해 필요한 프로그램과 코드 전부 설치되도록 도와줄 것입니다. 여기서는 개발 PC 에 Android Works 를 설치하는 법에 대해 다루겠습니다.

운영 체제 선택

Windows

Mac OS

이미 Android Works 가 설치되어 있는데 환경 변수는 없어진 경우, 이 단계는 전부 건너뛰고 에디터의 편집 메뉴 -> 프로젝트 세팅 -> Android SDK 프로퍼티에서 설치 위치를 지정해 주기만 해도 됩니다.

Android Works 는 에디터와 런처 둘 다 닫힌 상태로 설치할 것을 강력 추천합니다. 그래야 설치에 문제가 없습니다.

  1. Android Works 를 설치하려면 Engine > Extras > Android 폴더로 이동합니다.

    설치 유형위치
    바이너리[EngineInstallLocation]\Unreal Engine[EngineVersion]\Engine\Extras\Android
    GitHub[EngineSyncLocation\UE4\Engine\Extras\Android

    UE4 를 Github 에서 다운로드한 경우, Android Works 인스톨러 실행 전 다음과 같은 작업을 해 줘야 합니다. GitHub 에서 UE4 소스 코드를 다운로드했으면 윈도우 기반 PC 든 맥이든 양쪽에 적용된다는 점 참고 바랍니다. 런처에서 다운로드한 바이너리 빌드를 사용중이라면 이 부분은 건너뛰고 바로 Android Works 설치로 들어가시면 됩니다.

    1. GitHub 에서 UE4 다운로드를 마치고 압축을 풀었으면, Setup.bat 파일을 실행하여 필수 파일과 Android Works인스톨러를 다운로드합니다.

    2. Setup.bat 실행이 완료되면 Android Works 인스톨러를 실행하고 아래 안내를 따릅니다.

  2. AndroidWorks-1R1-windows.exe 파일을 더블클릭하여 설치 프로세스를 시작합니다.

    AndroidWorks_11.png

  3. 첫 창에서 다음 버튼을 눌러 설치 프로세스를 시작합니다.

    AndroidWorks_00.png

  4. 다음 버튼을 눌러 계속합니다.

    AndroidWorks_01.png

  5. Android Works 를 다운로드하고 설치할 위치를 설정한 뒤 다음 버튼을 누릅니다.

    AndroidWorks_02.png

    이 위치는 기본 위치로 놔둬도 전혀 상관 없습니다.

  6. AndroidWorks1R1 설치중인지 확인한 뒤 다음 버튼을 누릅니다.

    AndroidWorks_03.png

  7. 체크박스를 클릭하고, 라이선스 조항에 동의하면 모두 수락 을 누른 뒤 수락 버튼을 누릅니다.

    AndroidWorks_04.png

  8. 필수 Android Works 툴의 다운로드 및 설치 진행상황이 표시되는 창이 새로 뜹니다.

    이 부분의 완료를 위해서는 인터넷 연결이 필요합니다. 그 인터넷 연결 속도에 따라 몇 분에서 몇 시간까지 걸릴 수 있습니다.

    AndroidWorks_06.png

  9. 필수 툴의 다운로드 및 설치가 전부 끝나면 다음 창이 표시됩니다. OK 버튼을 눌러 설치 프로세스를 계속합니다.

    AndroidWorks_08.png

  10. 이제 완료 버튼을 눌러 Android Works 설치를 완료합니다.

    AndroidWorks_09.png

  11. 마지막으로  버튼을 눌러 컴퓨터를 재시작합니다.

    AndroidWorks_10.png

    GitHub 에서 UE4 를 다운로드한 경우, Android Works 가 설치를 완료하면 환경 변수 설정을 위해 PC 또는 맥을 재시작하고 Setup.bat 파일을 한 번 더 실행하여 필수 안드로이드 파일을 다운로드합니다.



http://docs.unrealengine.com/latest/KOR/Platforms/Android/GettingStarted/2/index.html



2. 안드로이드 디바이스 셋업

  • SHARE:

언리얼 엔진

Android Works 가 설치되었으니 안드로이드 디바이스를 개발에 사용할 수 있도록 구성해 줄 차례입니다. 여기서는 UE4 프로젝트를 실행하는 데 안드로이드 디바이스를 사용할 수 있도록 구성하기 위해 알아야 하는 모든 것에 대해 다루겠습니다.

운영 체제 선택

Windows

Mac OS

  1. USB 를 통해 개발 PC 에 안드로이드 디바이스를 연결합니다.

  2. 디바이스 드라이버 소프트웨어가 자동으로 설치될 수도 있지만, 그렇지 않은 경우 Android's OEM USB Driver 페이지를 방문하여 드라이버 설치 링크 및 추가 정보를 확인할 수 있습니다.

  3. 안드로이드 디바이스에서 Settings 어플리케이션을 엽니다.

  4. Developer Options 메뉴에서 Developer Options 를 탭합니다.

    이 항목이 보이지 않는 경우, 디바이스의 Developer Options 활성화가 필요합니다. 자세한 내용은 Android's Using Hardware Devices 페이지를 참고하세요.

  5. 화면 스크롤을 내려 About Phone 을 선택합니다. 안드로이드 디바이스에 따라 About Device, About Tablet, About Shield 옵션이 대신 나타날 수도 있습니다.

    주: 신형 안드로이드 버전의 경우 More 부분에 있을 수도 있습니다.

  6. Build Number 를 7 회 탭하여 개발자 모드를 활성화시킵니다.

    Enable_Dev_Mode.png

  7. 처음 몇 번 탭하고 나면 You are now # steps away from becoming a developer. 메시지가 뜰 것입니다.

  8. 개발자 모드가 활성화되면 아래와 비슷한 성공 메시지가 화면에 뜰 것입니다.

    Dev_Mode_Active.png

  9. Settings 메뉴로 되돌아가 사용가능해진 Developer Options 를 선택합니다.

    Dev_Options_Enabled.png

  10. Developer Options 메뉴에서 USB 디버깅을 탭하여 켭니다.

    Enable_USB_Debugging.png

  11. 묻는 창이 뜨면 OK 를 선택하여 USB 디버깅을 켭니다.

    Enable_USB_Debugging_Warning.png

  12. USB 디버깅 활성화 여부는 그 옆의 체크박스에 초록색 체크표시가 있는 것을 보고 알 수 있습니다.

    USB_Debugging_Enabled.png

  13. USB 에서 안드로이드 디바이스를 뽑은 다음 바로 다시 꽂습니다. 디바이스를 PC 에서 인식한 이후 안드로이드 디바이스에 이 PC 와의 통신을 허용하겠냐는 메시지가 뜹니다. 이 컴퓨터 항상 허용 이라는 체크박스를 누른 다음 OK 버튼을 누릅니다.

    PC_RSA_Fingerprint.png

  14. 디바이스 셋업이 제대로 되었는지 확인하기 위해, 윈도우+R 키를 눌러 실행 창에 cmd 라 입력합니다.

    Windows_Run_Command.png

  15. cmd 창에 adb devices 라 입력하면 PC 에 연결된 모든 디바이스를 확인할 수 있습니다.

    ADB_Devices.png

    adb devices 명령을 입력한 후에도 디바이스가 보이지 않는다면, PC 에서 해볼 수 있는 방법은 다음과 같습니다.

    • 디바이스가 나열은 되어 있으되 허가되지 않은 것으로 나타나는 경우, 디바이스에서 PC 승인을 하도록 해 줘야 함을 나타냅니다.

    • 디바이스가 나타나지 않으면 연결을 해제한 후 다시 연결해야 할 수도 있습니다.

    • Always allow 체크박스는 체크해 두는 것이 좋습니다.

    • 어떤 경우에는 제대로 환경설정된 디바이스도 Camera (PTP) 가 아닌 Media Device (MTP) 로 연결된 경우 나타나지 않을 수도 있습니다. 이 때 adb devices 아래 디바이스가 전혀 나타나지 않는 경우 Camera (PTP) 옵션을 선택해 보세요.


http://docs.unrealengine.com/latest/KOR/Platforms/Android/GettingStarted/3/index.html


3. 프로젝트 생성

  • SHARE:

언리얼 엔진

여기서는 안드로이드로의 디플로이를 테스트하는 데 사용할 프로젝트를 새로 만들겠습니다. 생성할 프로젝트는 블루프린트 삼인칭 템플릿을 사용하는 블루프린트 기반 프로젝트입니다.

  1. 언리얼 프로젝트 브라우저 에서 다음 옵션으로 블루프린트 기반 프로젝트를 새로 만듭니다.

    • 삼인칭 템플릿 사용

    • 타겟 하드웨어는 모바일 / 태블릿

    • 그래픽 레벨은 스케일가능 3D 또는 2D

    • 시작용 콘텐츠 비포함

    • 프로젝트 이름은 AndroidProject

new_android_project.png

이 예제에는 블루프린트 기반 프로젝트를 선택했지만, C++ 든 블루프린트든 어떤 유형의 프로젝트를 사용해서 안드로이드 디바이스에 패키징 및 디플로이 가능합니다.



4. 레벨 디플로이

  • SHARE:

언리얼 엔진

여기서는 작업중인 프로젝트의 레벨 하나를 안드로이드 디바이스에 디플로이하여 빠르게 테스트해 보는 방법을 살펴보겠습니다.

이번 섹션에서는 안드로이드 디바이스가 개발 PC 의 USB 를 통해 연결되어 있어야 합니다. 이미 연결하지 않은 경우, 먼저 연결한 뒤 진행해 주시기 바랍니다.

안드로이드 디바이스에 레벨을 디플로이하려면 먼저 안드로이드 디바이스가 지원하는 텍스처 포맷을 결정해야 합니다. 왜냐면 각기 다른 안드로이드 디바이스마다 정상 작동을 위해서는 각기 다른 텍스처 포맷이 필요하기 때문입니다. 어느 안드로이드 기반 디바이스에 어느 텍스처 포맷이 맞는지는 다음 표와 같습니다.

포맷설명
DXT데스크탑 컴퓨터에서 사용되는 방식으로, Tegra 기반 디바이스에도 사용됩니다.
ATCQualcomm Snapdragon 기반 디바이스에 사용됩니다.
PVRImgTec PowerVR 기반 디바이스에 사용됩니다.
ETC1모든 디바이스에 지원되지만, 알파 채널이 있는 텍스처를 지원하지 않으므로, 텍스처가 압축되지 않아 게임의 다운로드 크기가 커지고 실행시간 메모리를 더욱 많이 사용합니다.
ETC2MALI 기반 디바이스 등에 사용됩니다.

어떤 텍스처 포맷을 사용해야 하는지 불확실하거나 디바이스가 지원하는 것이 무엇인지 모르겠는 경우, 게임 실행 후 다음과 같은 작업을 통해 알 수 있습니다.

  1. 화면을 네 손가락으로 한 번에 터치하면 대화창이 뜹니다.

  2. 이 대화창은 보통 (stat fps 같은) 콘솔 명령을 입력하는 데 사용되나, 디바이스가 지원하는 포맷을 표시해 주기도 합니다.

  3. 그 목록을 확인했으면, 그를 통해 디플로이/패키징시 보다 이상적인 유형을 선택할 수 있습니다.

Available_Texture_Formats.png

  1. 안드로이드 기반 디바이스에서 현재 레벨을 테스트하기 위해서는 먼저 테스트하고자 하는 레벨을 열어야 합니다. 이 예제에서는 지난 단계에서 생성한 블루프린트 기반 프로젝트의 ThirdPersonExampleMap 레벨을 사용하겠습니다.

    Correct_Level_Open.png

  2. ThirdPersonExampleMap 을 연 채로 메인 툴바 로 이동한 뒤 실행 아이콘 옆의 작은 삼각형을 클릭하면 추가 옵션이 표시됩니다.

    Level_Deploy_Options.png

  3. 디바이스 섹션 아래 실행 메뉴에서 목록의 안드로이드 디바이스를 클릭하여 선택합니다.

    launch_rightformat.png

  4. 디바이스에서 레벨이 실행되는 도중 그 진행상황이 화면 우하단 구석에 표시됩니다. 프로젝트가 디바이스에 성공적으로 디플로이되면 알림창이 뜹니다.

  5. 쿠킹 및 실행 프로세스가 완료된 후, 게임이 자동으로 디바이스에 뜨며, 앱 드로어에서도 접근할 수 있습니다.

    Deployed_Project_Android.png




5. 게임 패키징

  • SHARE:
언리얼 엔진

다른 사람과 프로젝트를 공유하거나 디지털 스토어에 올려 판매하기 위해서는, 프로젝트를 패키징해야 합니다. 여기서는 완성된 프로젝트를 UE4 내에서 배포용으로 패키징하는 방법을 살펴보겠습니다.

운영 체제 선택

Windows

Mac OS

현재 이 게임을 테스트중이기에 Development 로 패키징하고 있으나, 게임이 완성되면 패키지 프로젝트 메뉴에서 빌드 환경설정 옵션에 커서를 올려 Shipping 으로 패키징하면 됩니다.

  1. 파일 메뉴에서 패키지 프로젝트 > 안드로이드 로 가서 패키징하고자 하는 텍스처 포맷을 선택합니다. 이번 예제에서는 모든 디바이스에 지원되는 안드로이드 ETC1 을 선택하겠습니다.

    package_menu.png

    각기 다른 디바이스마다 실행되는 하드웨어에 따라 각기 다른 텍스처 포맷을 지원합니다. 다양한 포맷에 대한 세부적인 분석에 대해서는 안드로이드 개발 참고서 문서를 참고하시기 바랍니다.

  2. 그러면 패키징된 게임을 저장할 위치를 묻는 창이 뜹니다. 지금은 데스크탑에 새 폴더를 만들어 그 위치에 프로젝트를 저장하도록 하겠습니다.

    package_folder.png

  3. 프로젝트가 패키징되는 동안 우하단 구석에 뜨는 패키징 메시지로 패킹 프로세스 진행상황이 표시됩니다.

    package_toast.png

  4. 패키징에 성공하면, 패키징 완료 메시지가 에디터 우하단 구석에 뜹니다.

    Packageing_Completed.png

  5. 2 단계에서 생성된 폴더로 이동합니다. 이 폴더에 보면 패키징시 선택한 텍스처 유형에 맞는 폴더가 새로 생겨있을 것입니다. 이번 예제에서 그 폴더 이름은 Android_ETC1 입니다.

    Android_ECT1_Folder.png

  6. Android_ETC1 폴더를 열고 Install[ProjectName]Development.bat 뱃치 파일을 실행하여 프로젝트를 안드로이드 디바이스에 설치합니다.

    Install_Bat.png

    안드로이드 디바이스는 USB 를 통해 개발 PC 에 연결되어 있어야 프로젝트가 디바이스에 디플로이됩니다. .BAT 파일 실행시 디바이스가 연결되지 않은 경우 아무런 작업도 하지 않습니다.

  7. .BAT 파일 작업이 완료되면 안드로이드 디바이스에서 프로젝트를 사용할 준비가 된 것이 보일 것입니다.

    Game_On_Phone.png



http://docs.unrealengine.com/latest/KOR/Platforms/Android/GettingStarted/6/index.html


6. 직접 해보기

  • SHARE:

언리얼 엔진

여기서는 안드로이드 디바이스에 UE4 프로젝트를 디플로이시키는 방법을 연습하고 가다듬을 수 있도록 직접 해볼 수 있는 몇 가지 것들에 대해 다루겠습니다.

UE4 프로젝트를 패키징하고 안드로이드 디바이스에서 테스팅하기 위한 준비를 마쳤으니, 이번 퀵스타트 가이드에서 배운 것을 토대로 다음과 같은 작업을 해 보세요.

  • 기본 템플릿 중 하나를 사용해서 새 프로젝트를 만든 다음 그 프로젝트가 안드로이드 디바이스에서 실행되도록 만듭니다.

  • 다양한 안드로이드 텍스처 포맷을 사용해서 프로젝트를 패키징해 보고, 대상 안드로이드 디바이스에 어느 것이 잘 맞는지 확인합니다.

  • 패키징된 파일 크기를 확인한 다음 APK 패키지 크기 줄이기 문서를 통해 크기 압축을 시도해 봅니다.

  • 삼성 기어 VR 디버깅 문서를 참고하여 무선 네트워크를 통해 안드로이드 디바이스에 프로젝트를 디플로이해 봅니다.

다음 링크는 어떤 안드로이드 디바이스가 UE4 에 적합한가서부터 모바일 디바이스를 대상으로 한 콘텐츠 제작시 고려할 사항까지 그 모든 것에 대한 도움이 될 수 있습니다. 아직 둘러보지 않으셨다면 매우 귀중한 정보가 넘쳐흐로고 있으니 한 번 둘러보실 것을 강력 추천합니다.

디바이스 호환성과 퍼포먼스 관련 상세 정보입니다:

모바일 디바이스용 게임 콘텐츠 및 레벨 디자인 관련 상세 정보입니다:

모바일 프리뷰어 를 사용하면 디바이스에 디플로이하지 않고도 모바일 게임을 미리볼 수 있습니다.

반응형

+ Recent posts