카테고리 보관물: Unity

유니티(Unity) 안드로이드 빌드 이름 다국어 지원

개요

게임 개발이 완료되고 대상 기기에 설치되었을 때 사용자가 설정한 언어로 앱 이름이 나타나면 더 좋은 인상을 줄 수 있습니다. 안드로이드로 빌드 했을 때 원하는 언어로 앱 이름을 설정하는 방법을 알아보도록 하겠습니다. Localization 패키지를 이용합니다.

Localization 패키지

다국어 지원을 위해서 Localization 패키지를 설치해야 합니다. Window > Package Manager 메뉴를 선택하면 창이 나타나고 다음 이미지와 같이 + 버튼을 클릭해서 Add package from git URL… 을 선택합니다.

Add package from git URL... 선택
Add package from git URL… 선택

입력란에 com.unity.localization 을 입력하고 Add 버튼을 클릭합니다.

git URL 입력
git URL 입력

Unity Registry에서 검색하면 1.3.2 버전이 나타나는데 버그가 있어 다국어 관련 항목이 나타나지 않는 문제가 있습니다. 글 작성일 기준으로 1.3.2 버전은 Editor 2021.3.9f1, 2022.2.15f1 모두 같은 오류가 있었습니다. Add package from git URL… 을 선택하면 1.4.3 버전이 설치됩니다.

Localization 관련 항목 추가

Window > Asset Management > Localization Tables 메뉴를 선택합니다. 창이 나타나지만 아무것도 없는 상태입니다. Create 버튼을 클릭합니다. 폴더를 하나 생성하고 저장합니다.

등록된 자료가 없는 상태
등록된 자료가 없는 상태

그런 후 New Table Collection 탭을 선택합니다. Locale Generator 버튼을 클릭합니다.

New Table Collection 탭 선택
New Table Collection 탭 선택

창이 나타나는데 원하는 언어를 선택합니다. Generate Locales 버튼을 클릭합니다. 폴더를 지정하면 작업에 필요한 파일이 생성됩니다.

Locale Generator

New Table Collection 탭의 Create 버튼을 클릭합니다. 폴더를 선택하면 다음과 같은 화면이 나타납니다.

Entry 추가 전 화면
Entry 추가 전 화면

Add New Entry 버튼을 클릭합니다. Key는 app_name 을 입력하고 각각의 언어에 원하는 앱 이름을 입력합니다.

app_name key 추가
app_name key 추가

폴더내의 Localization Settings 파일을 선택하면 Inspector에 다음과 같이 나타납니다. List is Empty 아래 + 버튼을 클릭합니다. Android > App Info 를 선택합니다.

Inspector 항목
Inspector 항목

Inspector에서 추가된 Android App Info 항목을 펼쳐보면 다음과 같이 나타납니다.

추가된 Android App Info 항목

Display Name 의 None(String) 을 클릭하면 table entry 를 선택할 수 있습니다.

table entry 선택
table entry 선택

app_name 을 선택하면 다음과 같이 변경된 것을 알 수 있습니다. Localization Package 1.3.2 버전의 경우 None 만 나타나서 추가된 entry를 선택할 수 없는 문제가 있습니다. 그래서 더 이상 진행이 불가능 합니다.

app_name entry 선택 후 변경된 사항
app_name entry 선택 후 변경된 사항

이 상태에서 빌드하고 설치해보면 앱 이름이 지정한 대로 나타나는 것을 확인하실 수 있습니다.

문제점

필자가 확인한 바로는 글 작성 일자 기준으로 동일한 조건에서 Localization 패키지를 추가해서 앱 이름 정보와 함께 빌드하면 10MB 정도 용량이 늘어나는 현상이 있었습니다. 명확하게 어떤 이유 때문에 그런 것인지는 알아내지 못했습니다. 앱의 기본용량이 작은 경우 문제가 될 것 같다는 생각이 들었습니다. 참고하시기 바랍니다.

유니티(Unity) 게임 성능 확인 및 최적화에 대한 생각

개요

이전에 살펴보았던 고전 우주 슈팅 게임 최적화 작업 은 눈에 보이는 것 위주로 진행했습니다. 기본적으로 조치할 수 있는 사항들을 처리하고 프로파일러를 이용해서 병목현상이 없는지 확인합니다. 프로파일러를 가지고 분석하는 내용은 방대해서 이 글에서 다루지는 않습니다. 좋은 자료와 동영상이 많으니 그것을 참조하시면 될 것 같습니다.

이 글에서 프로파일러를 이용해서 성능관련한 문제를 확인하는 전체적인 관점에 대한 것을 정리해 보았습니다.

프로파일러를 이용한 최적화 대상 선정

프로파일러로 분석하고 게임을 느리게 만드는 지점이 어디인지 정확하게 판단한 후 최적화 진행해야 합니다. 이 작업 없이 ‘여기인 것 같다…’ 혹은 ‘여기가 아닐까?’ 와 같은 감으로 진행하게 되면 효과도 없고 시간만 소요하게 됩니다.

당연한 이야기이지만 개발 PC에서 프로파일링을 해 보고 문제를 개선 후 반드시 대상 기기(안드로이드, iOS …) 에서 확인해야 합니다. 실제 개선한 사항이 효과가 있는지 확인해 보고 계속 반복해서 최고의 성능을 뽑아내도록 해야 합니다.

CPU쪽인지 GPU쪽인지 범위를 좁혀서 접근해야 정확하게 문제를 해결할 수 있습니다. 어느 부분을 먼저 진행할 것인지 결정하는 부분은 Asset 수정이 동반되어야 한다면 충분한 논의를 거쳐야 할 것으로 생각됩니다. 물론 스크립트 부분의 수정도 쉽지 않지만 Asset 부분의 변화가 더 큰 노력과 시간이 소요됩니다. 이것은 프로그래밍을 주로 했던 필자의 생각입니다.

게임 성능 측정 및 최적화 시기에 대한 생각

여러가지 부분에서 최적화 작업을 진행해 보니 게임을 제작하는 개발자나 팀을 좀 더 깊이 이해하게 되었습니다. 여러가지 이유로 일정에 쫓겨서 간신히 기능만 구현하고 최적화할 여유가 없겠다는 생각이 들었습니다. 그렇다고 해도 최적화 작업을 꼭 해야하는 작업이라고 단언할 수 있습니다.

그렇다면 최적화나 성능 점검을 하는 시점은 언제가 적절한가에 대해 생각해 보게 되었습니다. 개발하는 게임의 규모와 상황에 따라 다르겠지만 필자의 생각으로는 세 가지 정도입니다.

1. 기획단계

아직 만들어지지 않은 게임을 기획하는데 성능 점검이 왜 필요할까요? 기획단계에서는 제작할 게임의 대상 기기(모바일, PC…)에서 원활하게 실행이 되는 기준점을 잡기 위함입니다. 어느 정도 수준으로 Asset을 준비해야 하는지 기준을 마련할 수 있습니다.

예를 들어 게임내에 무엇인가 오브젝트가 많이 나오는 중요한 장면이 있을 때 간략하게라도 만들어보고 대상 기기에서 원활하게 수행되는지 확인합니다. 그 결과를 가지고 오브젝트의 수를 조정하던가 정밀도를 낮추어서 조정하는 방법등으로 방향을 결정합니다. 이런 작업을 개발 막바지에 하게 된다면 그 동안 작업했던 많은 Asset을 다시 작업해야 하는 최악의 경우가 발생할 수 있습니다.

2. 중요한 단계나 많은 양이 작업되었을 때

개발 중간에 특정한 단계가 작업되거나(스테이지 구현 혹은 챕터 구현…) 많은 작업이 함께 이루어 지는 경우가 있습니다. 이럴때에도 대상 기기에서 원활하게 수행이 되는지 점검이 필요합니다. 이전까지 괜찮았는데 추가 작업 후 성능 하락이 있다면 이전 작업이 원인입니다. 확인해야 할 범위가 줄어들어 바로잡기가 더 쉬워 집니다.

향후 문제점이 될 요소를 피하고 시간을 많이 절약할 수 있습니다. 성능하락을 유발하는 항목이 쌓이게 되면 점점 확인과 해결이 어려워지게 됩니다. 미리 점검하고 확인하는 것이 좋습니다.

3. 출시 임박시점

중간 중간 성능 점검과 최적화를 수행했다면 출시가 임박해서 크게 문제될 확률은 낮습니다. 하지만 거의 모든 요소가 같이 뭉쳐져 있는 상황이니 이전에 생각하지 못했던 성능 하락이 있을 수 있습니다.

미리 성능 점검 및 최적화 작업을 진행해 두었다면 범위를 특정하기가 상대적으로 수월합니다. 문제가 되는 부분을 빨리 알아낼 수 있으므로 해결에 소요되는 시간이 많이 줄어듭니다.

마무리

게임의 성능을 측정하고 최적화 하는 작업은 매우 어렵고 지루한 작업이 될 수 있습니다. 어느 시점까지는 효과가 있지만 특정 시점부터 성능을 개선하기가 아주 어려울 수도 있습니다.

게이머의 입장에서 보면 원활하게 게임이 수행되어야 만족감이 높은 것은 당연한 이야기 입니다. 게이머들이 만족해야 힘들게 작업한 게임의 가치를 올릴 수 있고 더 많은 기회를 잡을 수 있다고 생각합니다. 성능 측정과 최적화 작업은 꼭 필요한 것이라고 다시 한번 강조하고 싶습니다.

게임의 규모와 관계없이 꼭 성능 측정과 최적화 기준을 마련하셔서 성공적인 게임개발이 되시기를 바랍니다.