이름       : 야옹형님들(돈캣치미/Don't CATch Me!!)

분류       : 퍼즐게임

가격       : 무료/광고제거 및 힌트 인앱구매

언어       : 영문 지원

제작자    : 최경준

지원버전 : 4.1 젤리빈 API 16

스토어    : 안드로이드 마켓/T스토어/쇼스토어

상세정보 : 언블록미 클론게임입니다. 나무토막 대신 고양이를 밀어서 쥐를 탈출시키는 퍼즐게임입니다.


다운로드 링크 : https://play.google.com/store/apps/details?id=com.bucksgames.dontcatchme1&hl=ko


일반모드 (초심자용)

Cap 2018-06-26 16-30-01-286.jpg 

헬모드(전문가용)

Cap 2018-06-26 16-30-16-965.jpg

 

인게임 화면

Cap 2018-06-26 16-30-37-494.jpg


단순 소개글보다는 만들면서 고생했던 과정도 알려드리고 싶어서 유니티허브에 올린 글을 퍼왔습니다.


양해 부탁드리고 또 감사합니다. (^^)(__)


---------------------------------------------------------------------------------------------------


안녕하셔요. 올 4월 17일에 가입해서 이것저것 여쭤봤고 지금도 여쭤보고 있는 유니티 초보 비만타쿠미라고 합니다.


다만 완전 개발초짜는 아니고 서른둘에 밥벌이를 위해 JAVA SI개발을 시작해서 지금은 십년이 좀 넘었네요.


모바일 개발은 아이폰3GS시절 모은행 SM으로 있을때 스터디삼아 앱을 하나 개발해본게 전부였고 거의 엔터프라이즈 웹개발만 했었습니다.


올해초에 외국계SM으로 옮기면서 시간적으로 여유가 많이 생겨서 유니티에 도전을 해 봤는데 결과적으로는 두달만에 게임 비스무리한게 나왔습니다.


게임개발은 이번이 처음이었구요. 아무래도 SI쪽 일만 하다보니 그래픽이나 알고리즘 같은 부분이 취약해서 초반에 애를 많이 먹었습니다. 

(사실 지금도 유니티에서 에니메이션 어떻게 시키는지 잘 몰라서 어제 책도 한권 샀네요.. ^^ 일단 이거 다보면 이펙트 책을 사려고 합니다)


솔직히 처음부터 개발을 했다면 두달로는 택도 없었을텐데 스토어에서 구매한 에셋을 베이스로 해서 가능했던 것 같습니다.


C#은 처음 해봤지만 그래도 원래 하던 자바랑 상당히 유사해서 적응하는데는 어렵지 않았으나 하나의 완전한게임을 만들기 위해서는 넘어야 할 산들이 무척 많더라구요.


단순히 게임소개만 하는 것보다는 저도 이 카페에서 많은 도움을 받았고 앞으로도 받을 거기때문에 혹시라도 저같은 분께 참고가 되실까봐 그 얘기들을 좀 해보려고 합니다.   


에셋의 소스는 일단 프로의 소스라서 그런지 배울점이 책과는 비교도 안되게 많았습니다. 솔직히 개발보다는 기존 소스를 분석하는데 시간이 더 들어갔구요..


그 외에는 씬 구성 및 이동, 세이브로드, UGUI 중첩다이얼로그 처리등 게임 제작하는데 기본적인 테크닉들을 에셋의 소스에서 많이 배울 수 있었습니다. (사견이지만, 항상 소스는 책에 나와있는건 개념이해할때 참고하고 자신보다 잘하는 프로의 소스를 분석하는게 최고인것 같습니다)


퍼즐게임인지라 풀이가 보고 싶을땐 리워드광고를 보면 힌트를 3개씩 주고 3시간마다 무료 리워드를 주도록 구상했는데...


능력만 된다면 풀이로직을 직접 짰겠지만 제 실력으로는 구현할수가 없어서 완전한 하나의 게임이 될 수가 없었습니다.


그래서 나중에 풀이로직이 있는 소스를 추가로 구매하였습니다.


그런데 맨날 SI로 단순히 데이터만 넣었다뺐다 해서 그런지... 풀이 로직이 제 수준에는 너무나 어려운겁니다.


이걸 이해를 해야 인티그레이션을 해서 리워드 보상도 하고 무료리워드도 주고 할텐데...


짬날때마다 밤낮으로 들여다봐도 이해가 잘 안가서 로직을 더이상 쪼갤 수 없는 작은 단위로 쪼개서 분석을 했습니다.

(분석하는데 거의 3주 걸렸네요... 전산 비전공자라 그런가ㅋㅋ SI바닥에서는 날라뎅기는 축인데 게임 알고리즘 앞에서 처음으로 사람이 너무 작아지더이다..)


하지만 역시 끈질기게 계속 물고 늘어지는데는 장사 없더군요.. 결국엔 해당로직이 이해가 갔고 옮기는데 성공했습니다.

(두 소스의 좌표가 Y축이 반대라서 좌표컨버팅을 해주게 했고, 풀이알고리즘이 6x6기준이라 매트릭스를 동적으로 변경하게 하는등 옮기는데도 좀 애를 먹었습니다. 나중에 알게 된거지만 이 풀이 알고리즘이 길찾기 알고리즘과 상당히 흡사한 것이더군요. 알고리즘 공부를 좀 해뒀더라면 훨씬 쉽게 할 수 있었을텐데 하는생각이 들더군요)


그런데 겨우겨우 풀이로직을 옮겼더니 다른 문제가 생겼습니다.

특정 스테이지는 풀이하는데 20분 30분씩 걸려버리는겁니다. 아니 유저가 힌트 보겠다고 20분을 기다리는다는건 말도 안되죠.. 20분이 아니라 20초, 아니 2초도 길텐데...


그래서 동일한 풀이로직을 쓰는 언블락류 게임들을 찾아보았습니다. 헉.. 그 게임들은 아무리 오래걸려도 5초가 채 안걸리더라구요.


풀이로직을 빨리 동작하게 하려고 일주일정도 애써보았는데... 제 실력으로는 아무리 해봐도 안되는겁니다.. ^^;;;


결국 생각을 바꿔서 다른 대책을 세웠습니다.


블럭을 움직이는 도중부터 풀이를 보여주는게 아니라 힌트 사용시 처음 위치로 블럭을 롤백 한다음에 미리 저장해놓은 정답 파일로 풀이를 보여주도록 했습니다.

정답은 전부 json으로 저장해서 레벨데이터에 포함시켰구요.. 이렇게 하니 풀이 보는데 0.1초.. ㅋㅋ


그런데 기쁜 마음도 잠시.. 레벨데이터에 풀이로직을 저장시켰더니, 데이터의 용량이 너무 큰 문제가 발생했습니다. 레벨이 2천개인데 풀이로직까지 더해서 텍스트파일로 저장을 하다보니 용량이 무려 40메가에 육박하더군요.


다행히 무료어셋인 SimpleZip을 구해다 gzip으로 압축시키니 650KB로 줄어들었습니다. 그런데 또!!! 압축을 푸니까 디렉토리명과 파일명이 합쳐지는 증상으로 제 위치에 풀리지 않더군요.

(이때쯤 아.. 왜 뭘 해도해도 끝이 없나?? 뭐하나 고치면 버그가 두개가 생기네?? 걍 때려칠까? 하는 생각도 좀 들었습니다만... ㅋㅋ)


윈도우의 역슬레시가 디렉명과 파일명에 합쳐지는 이상한 증상이 생겨서 압축 해제후 파일생성시에 역슬레시를 그냥 슬레시로 치환하여 해결하였습니다.


그리고 안드로이드용으로 컴파일을 할때... 안드로이드로 앱을 처음 등록해봐서 인증서를 만들고 내부테스트용으로 업는드하는데 이틀정도를 소모했습니다.


이것저것 해보다가 디버그인증서로 운영인증서를 덮어써서 복구가 불가능하게 되버리는 바람에 패키지명도 한번 바꿨어야 했던게 완전 코미디였구요..

(이 실수를 한 이후에는 키스토어 파일을 포함한 소스 전체를 git으로 관리하게 됬습니다. 저장소는 개인적으로 bitbucket.org 추천합니다.

github과 다르게 소스 비공개 설정이 가능하고 트렐로로 jira대신 간략하게 팀원들과 의사소통도 가능합니다)


이후 구글게임서비스, 애드몹, 구글통계를 연동하는데 디펜던시가 쫑나서 이걸 해결하는데 하루정도 소모했습니다.

관련 링크(https://blog.naver.com/foenix/221270343434)


그리고 애드몹 테스트디바이스가 적용이 안되는 문제가 있어서 맘놓고 테스트를 못했었는데 알고보니 디바이스아이디를 그냥 셋팅하는게 아니라 MD5암호화해서 셋팅해줘야 하더라구요.

관련링크(https://blog.naver.com/foenix/221263482942)


그 외에는 여섯살짜리 아들이 있어서 주말에는 도저히 집에서는 개발을 할 수 있는 환경이 못되서 사무실에 나오느라 와이프에게 독박육아를 맡기는 바람에 미안한 마음이 들었던게 힘들었던 점이구요.


그래도 결국에는 완성이란걸 해서 플레이스토어에 올렸더니 시원섭섭하면서 동시에 후련합니다.


그동안 제 질문에 답변해주신분들께 특히 너무 감사드리구요...


이것저것 얘기하느라 글이 너무 길어졌는데... 염치불구하고 마지막으로 게임 링크 한번 더 첨부합니다.


https://play.google.com/store/apps/details?id=com.bucksgames.dontcatchme1&hl=ko