페이지

레이블이 공포박물관인 게시물을 표시합니다. 모든 게시물 표시
레이블이 공포박물관인 게시물을 표시합니다. 모든 게시물 표시

2017년 2월 19일 일요일

공포박물관 1.0.3 업데이트 수기 - 5편 : 마치며...


업데이트 작업 전에 이런저런 욕심이 생겼다.
리마스터버전으로 업그레이드 하면서 스토리도 새로 쓰고,
유저분들이 리뷰로 요구 하셨던 SAVE / LOAD, 오마케 모드등도 추가 하고,
그 핑계로 무료로 제공하던 게임을 유료로 전환한다던가......

근데 이미 설날 연휴 플러스, 약 1주 정도의 시간을 더 투자하며
ezGUI, obb downloader, 애셋 번들 이슈들과 씨름하고 나니
리마스터 버전에 대한 야욕은 깔끔히 사라져 버렸다.

개인 프로젝트는 이래서 문제다.
혼자 하기 때문에 포기하고 싶은 순간이 찾아 왔을 때, 아무도 말리지 않는다.

물론 공포박물관이라는 프로젝트가 좀 더 매력적이었다면 어떻게 됐을지 모르겠다만
내 의지가 좀 더 강려크 했다면 또 어떻게 됐을지 모른다.

곧 다음 프로젝트를 시작할 예정이다.
앞으로 더 잘하자.
진짜로.

공포박물관 1.0.3 업데이트 수기 - 4편 : 임시방편( obb downloader로 이전 버전 obb파일 받기 )

실행 불가 현상의 핵심 원인은 obb downloader의 호환성 문제였다. obb downloader를 최신 버전으로 업데이트 한다.
이제 게임이 크래쉬 되던 지점은 무사히 통과된다. 하지만 obb 파일이 다운로드 되는 것 같지 않다. 왜지?

obb파일을 업데이트 할 필요를 당장 못 느꼈기에 버전업한 앱을 업로드 할 때,
업데이트에 사용할 obb는 이전 버전의 것으로 설정 했다.

하지만 이게 문제 였다. 원인을 찾기 위해 obb downloader플러그인 소스를 훑어보던 중, 다음과 같은 코드가 눈에 들어왔다.
private static void populateOBBData()
{
 if (obb_version != 0)
  return;

 using (AndroidJavaClass unity_player = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
 {
  AndroidJavaObject current_activity = unity_player.GetStatic<AndroidJavaObject>("currentActivity");
  obb_package = current_activity.Call<string>("getPackageName");
  AndroidJavaObject package_info = current_activity.Call<AndroidJavaObject>("getPackageManager").Call<AndroidJavaObject>("getPackageInfo", obb_package, 0);

                // 플레이어 셋팅의 Bundle Version Code값이 obb_version에 할당 되는 듯 하다.
                obb_version = package_info.Get<int>("versionCode");

               // 만약 아래와 같이 하드 코딩 하면 내가 원하는 버전의 obb파일을 얻을 수 있다.
               // 아래 코드 같은 경우, 버전 코드 3에 매칭되는 obb파일을
               // 다운로드 받을 수 있게 해 준다.
               obb_version = 3;
 }
}

업데이트를 위해 플레이 스토어 개발자 콘솔에 APK를 업로드 하기 위해서는 이전에 올렸던 APK보다 높은 버전 코드를 설정해야 한다.
따라서 위의 코드 내용 대로라면 obb_downloader를 사용할 떄, 버전 코드를 올리는 것 이외에도
obb파일도 버전에 맞게 새로 만들어서 같이 올려야 한다.


리소스 내용이 바뀔 필요가 없는데 obb_downloader때문에 obb파일을 새로 업로드 하고 싶진 않았다.
그래서 테스트 삼아 위와 같이 obb_version = 3이라고 코딩 후 어떻게 동작하는지 테스트 해 본 결과,

다운로드가 된다!!!

이후 obb_downloader 호환성 문제 때문에 문제를 일으켰던 폰에서도 obb파일이 잘 다운로드 됨을 확인할 수 있었다.
하지만 이후 obb파일을 애셋번들링 했던 엔진과 앱을 빌드했던 엔진의 버전 불일치 문제 때문에 결국 obb 파일은 새로 빌드 해야 했다 ㅠ ㅠ

3년 지난 후의 애셋번들링 툴이라서 툴 코드에 대한 안전성에 자신이 없어서 웬만하면 애셋번들은 다시 굽고 싶지 않았다.
하지만 앱과 애셋번들과의 버전 불일치 문제 때문에 결국 obb파일도 새로 갱신했다.

이후 obb 다운로드도 계속 잘 되고, 애셋번들 파일 로딩도 잘 처리되어 공포 박물관의 타이틀 화면을 폰에서 확인하는데 성공한다.

임시방편으로 빨리 일을 처리하고 싶었지만 결국 정공법으로 문제를 해결해 나가야만 했다.
이렇게 업데이트를 위한 8부능선을 넘는다.

2017년 2월 16일 목요일

공포박물관 1.0.3 업데이트 수기 - 3편 : 의외의 복병( ezGUI 호환성 문제 )

obb downloader업데이트를 하기 전에 Unity3D 엔진을 최신 5.5버전으로 업데이트 해보았다.
하지만 이내 ezGUI 때문에 발생하는 각종 경고와 에러 메시지 때문에 5버전에서 업데이트 작업을 진행 할 수 없었다. 
ezGUI는 국내에 Unity3D가 태동하던 무렵 NGUI 탄생 전까지 자주 쓰이던 UI개발 플러그인으로 더 이상 애프터 서비스를 지원하지 않는다.

절판 됐기 때문에 애셋 스토어에서 구매한 사람만 다운로드 받을 수 있다.
수백 개의 경고 메시지가 무섭지만 다행히 Unity3D 4 최신 버전에서 동작한다.

공포박물관 작업 당시에는 Unity3D 4버전으로 개발 했기 때문에 5버전은 포기하고 4버전을 재설치해 보았다. 

유니티3D 4버전 다운로드 링크

여전히 오류가 확인 되지만 많은 수는 아니다. 적당히 오류만 나지 않게 코드를 수정해 본다.
다행히 이제 컴파일 오류가 나지 않는다. 안심하고 다음 문제를 해결하기 위해 분석하고, 코딩하고, 빌드하고 폰에서 실행해 본다.

갓뎀!!! 터치 인식이 안된다. 

최대한 빨리 고민하지 않고 문제를 해결하고 싶다!
절판된 버전이지만 간절한 마음으로 ezGUI를 애셋 스토어에서 다운 받아 임포트해 본다. 순간 또 한 번 뜨악한다.
이전 버전의 ezGUI와 폴더 구조가 완전히 바뀐 것이다. 쉐이더 및 테스트용 애셋을 제외하고는 최신 스크립트들을
이전 ezGUI 스크립트 폴더로 하나하나 복붙해 나간다.

휴~ 이제 터치 인식이 잘 된다.

만약 공포박물관 작업 당시 사용했던 엔진 버전을 기억했다면, 그 버전으로 다운로드 받는 것이 속 편했을 것이다.
하지만 그 때가 3년 6개월전 일이라 정확히 버전도 기억이 나지 않는데다, 현재 공식 사이트에서 제공하는 Unity3D 버전도
4.3이 가장 올드한 버전이다. 결국 그나마 4버전의 최신 것으로 작업 환경을 꾸미는게 최선이었던 것이다.

워낙 과거의 산물이라( IT기술은 10년이 아니라 2년만 지나도 강산이 변한다 ) 이제 ezGUI는 다시 쳐다볼 일이 없을줄 알았다.
근데 최근 입사한 회사에서 인계 받은 프로젝트가 ezGUI를 쓰고 있었고 개인 프로젝트 업데이트 때문에도 ezGUI를 다시 열어보게 된 것.
회사 프로젝트에서 ezGUI는 이제 tk2d로 교체해 나가는 중이고 공포 박물관도 무사히 업데이트 했다.
앞으로는 이제 ezGUI를 다시 보지 않길 소망해 본다. 과연......



2017년 2월 11일 토요일

공포박물관 1.0.3 업데이트 수기 - 2편 : 문제의 원인( unity3d obb downloader )


증상은 일부 폰에서 게임 실행 후, 스플래쉬 화면이 확인되면 얼마 안 가 앱이 강제 종료 되는 현상 이었다.
일부 폰에서만 발생하는 문제라 직접 확인할 방법이 없어 곤란했는데
마침 설날 연휴때 잠깐 보기로 한 친구의 폰에서 이 문제를 확인할 수 있었다.

확인 결과, 앱이 죽는 시점이 Unity3d 공식 플러그인, OBB 다운로더가 리소스를 초기화 하는 시점 이었다.
최근 출시된 폰과 호환성 문제를 일으키는 듯 했다.


플레이 스토어 공식 APK 파일 사이즈 확장 매뉴얼

유니티3D 공식 OBB 지원 매뉴얼


플레이 스토어에서는 용량이 큰 앱을 그대로 출시하지 못한다.
앱의 리소스 파일 일부를 분리하여 obb라고 불리우는 파일로 분리해서
앱과 obb파일을 같이 업로드 하여 출시해야 한다.

공포 박물관 출시 직전 당시( 2013년 4월 ), 
플레이 스토어의 앱 사이즈 제한 정책을 그제서야 확인했고
이것 때문에 안드로이드 네이티브 코딩이 필요할지 모를 상황이라 멘붕 직전 이었다.

그나마 다행이었던게 지금처럼 obb 자동 분할 기능은 없었지만
그 때 당시에도 Unity3D에서 공식적으로 obb 다운로더 플러그인을 애셋 스토어를 통해 제공하고 있었다.

그래서 안드로이드 버전에서는 게임의 이미지 리소스 대부분을 애셋번들로 분리했고,
이렇게 분리한 애셋 번들 파일을 앱의 obb파일로 업로드 했고 다운로드는 obb downloader로 해결했다.
애셋 번들 다루는게 꽤나 손이 가는 작업이라 공포 박물관 개발 막바지의 잊지 못할 난관이었다.

일단, 플러그인을 최신 버전으로 업데이트 해 보기로 한다.

2017년 2월 10일 금요일

공포박물관 1.0.3 업데이트 수기 - 1편 : 동기


<공포박물관>
플레이 스토어 링크

공포박물관은 약 3년 6개월전,
한 동네에서 같이 자랐던 게임 원화가 후배와 합심하여 만든 디지털 호러 게임북이다.

불투명한 회사 프로젝트의 미래. 상당히 긴 기간의 취업난. 각자의 사정을 안고,
우리 끼리라도 간단한 게임 하나 정도는 직접 출시해 보자는 목표를 잡았었다.
덕분에 게임 심의를 받느라 삽질을 했던 웃픈 경험도 했었고.

게임물등급위원회 심사 과정

그리고 결국 출시했다. 나름 보람 있었고 의미 있었던 작업이라 생각된다.
이후 3년 6개월의 시간이 흘렀고, 게임 원화가 후배에게서 연락이 왔다.

최근 입사한 회사에서 동료들에게 공포박물관 자랑을 했는데,
막상 상당 수의 동료들 폰에서 공포박물관이 실행이 안된다는 것이었다.

그렇다. 나도 종종 게임 실행이 안된다는 제보를 종종 전해 들었던 것 같다.
심지어는 직접 어떤 폰에서 실행이 안되는걸 본 것 같기도 하다.

공짜로 내놓은 게임이라고 관심을 껐던 것일까?
게임의 컨셉 및 원작이 내 것이 아니여서 관심을 껐던 것일까?

회사 동료들에게 자랑했지만 실행이 안되었던 게임.
그 상황이 머리 속에 그려진다.
거기서 내 맘이 움직인다.

그렇게 해서 3년 6개월만에
<공포박물관> 1.0.3버전 업데이트 작업을 시작하게 되었다.