Unity3D를 이용한 안드로이드 3D 게임 제작 Android 3D game using Unity3D 박영민, 박종민, 신병철* * Yeomgin Park, Jongmin Park, Byung Cheol Shinn* 충북대학교 전자정보대학 정보통신공학부 Dept. of Information and Communications Eng., College of Electrical and Computer Eng., Chungbuk National Univ. Abstract The mobile game company extends its region from 2D to 3D region. They use Uniity3D game engine in developing card couple finding game which is helpful in the retentive faculty and other 2 kinds of games. In this paper the comfortability of Unity3D and its producing processs will be open partially to the public. Unity3D is ready-made, which means it provides various games by introducing simple programming and by usinng some simple graphic techniques. Once developed. Unity3D provides various functionalities such as shader, physical engine, networking, audio or video, animation and etc. which are required in developing games, and GUI is intuitive so that the beginners can handle one of these functions. Moreover it can be executed on web sites and it can be converted into iphone, Android, game machines such as PS(Play Station) 3 or X-BOX360 at any time. keywords : Uniity3d, shader, GUI, web, iphone, ipad, Android, PS3, X-Box360 요 약 최근 스마트폰의 국내 시장 점유율 증가와 더불어 모바일 게임업체의 게임 개발 폭이 넓어짐에 따라 기존 2D 게임에서 3D영역까지 확대되고 있다. 이에 발맞추어 유니티(Unity3d)라는 게임 엔진을 이용하여 기억력 증진에 도움되는 카드 짝 찾 기 게임을 연구 제작 하였다. 본 논문에서는 실제로 3D게임을 제작하는데 있어 유니티(Unity3d)의 편의성과 이에 대한 제 작 과정을 일부를 공개할 것이다. 유니티(Unity3d)는 완성되어 있는 엔진이고, 이가 의미하는 바는 간단한 프로그래밍과 그 래픽을 이용한다면 개인으로서 충분히 다양한 종류의 게임을 만들 수 있도록 되어 있다는 것을 의미한다. 유니티(Unity3d) 엔진은 실제적으로 셰이더(shader), 물리엔진, 네트워크, 지형 조작, 오디오&비디오, 애니메이션 등 게임을 만드는데 필요 한 웬만한 기능은 모두 탑재가 되어 있으며 GUI(Graphic User Interface)가 직관적이기 때문에 처음 배우는 사람도 쉽게 다룰 수가 있다는 것이 최대의 장점일 것이다. 그리고 웹에서 바로 실행이 될 뿐만 아니라 한번 게임을 만들면 아이폰, 안드 로이드, 아이패드, PS3, X-BOX360등으로도 언제든지 컨버젼을 할 수가 있다. 이로 인해 게임 개발에 대한 개방적 인식이 확립되고 더 나아가 스마트폰 게임 시장의 확대를 기대한다. keywords : Uniity3d, 쉐이더, GUI, 웹, 아이폰, 아이패드, 안드로이드, PS3, X-Box360 1. 서 론 1.1 스마트폰의 대중화 인구 대비 스마트폰 보급량을 의미하는 스마트폰 보급 률에서 한국이 세계에서 2012년 1위를 차지했다. 한국의 스마트폰 보급률은 67.6%으로 전 세계 국가 중 가장 높 았다. 이같은 수치는 세계 평균 보급률 14.8%보다 4.6 배 높았다. 한국의 스마트폰 보급률은 2009년 이후 급격 하게 증가하였는데 이는 3세대에 이어 4세대 네트워크의 전국망이 빠른 속도로 구축되면서 스마트폰이 일찍 대중 * 교신저자 : bcshin@cbu.ac.kr 화됐기 때문인 것으로 분석된다. 그림 1은 스마트폰 보급 률이 높은 상위 10개국을 보여주고 있다. 1.2 스마트폰 사용 분야 스마트폰이 등장한 이래 점점 더 많은 사람들이 스마트 단말기를 사용하고 있다. 모바일 게임은 스마트 단말기 보 유자들이 가장 많이 이용하는 애플리케이션이다. Flurry 회사에 따르면, 미국의 ios와 안드로이드를 탑재한 단말 기 보유자들은 하루에 약 2시간 30분을 스마트폰과 태블 릿PC 등을 이용하고 있고, 가장 많이 이용하는 애플리케 이션은 그림 2와 같이 게임이 32%이고, 그 다음으로는 Facebook (18%)인 것으로 나타났다. - 43 -
컴퓨터정보통신연구 제22권 제1호 2014.5.(43-48) 이와 비교하면 한국 스마트 단말기 사용자들의 게임 이 용률은 상대적으로 더 높은 것으로 나타났다. 최근 발표 된 Flurry 회사의 조사에 따르면, 한국의 안드로이드 단 말기와 ios 단말기 이용자들의 게임 이용률은 그림 3과 같이 각각 51% 와 49%인 것으로 나타났다.[1] 이와 같이 스마트폰 게임은 누구나 쉽게 접할 수 있고 이미 스마트폰에서 중요한 목록 중 하나를 차지하고 있다 는 것을 알 수 있다. 이러한 스마트폰 게임의 사용으로 암기 능력을 향상시키는 이미지 기억 게임 어플리케이션 개발에 대해 살퍼본다 2. 게임 엔진 그림 1 스마트폰 보급률 상위 10국 과거의 게임 개발은 대부분 게임에 필요한 모든 시스템 을 직접 개발하였지만, 최근에는 게임 엔진의 발전으로 인해 필요한 특정 게임 시스템 부분들만 개발을 하면 되 기 때문에 개발에 필요한 시간이 절반이하로 줄어들었다. 최근의 게임 개발 동향은 거의 대부분이 게임 엔진을 사 용하여 만든다고 해도 과언이 아닐 정도로 게임 엔진은 많이 사용되고 있다. 현재 현업에서 주로 사용되는 게임 엔진들은 언리얼 엔진, 크라이 엔진, 소스 엔진, 오우거 엔진, 유니티3d 엔진 등이 주로 사용되고 있다. 이러한 엔진 중 최근에는 다른 게임 엔진보다 가볍고 사용하기 편리한 유니티3d(Unity3d) 엔진이 많이 사용되고 있다. 유니티3d 엔진은 빠른 프로그램 제작과 멀티 플랫폼을 제 공하고 있어서 스마트폰 게임 개발 툴로 많은 개발자들이 사용하고 있다. 또한 다른 엔진에 비하여 그래픽적 요소 와 시스템 개발 측면서 제공되는 사양이 타 엔진보다 우 수하기 때문에 많은 스마트폰 게임 개발에 있어서 유니티 3d 엔진을 많이 사용하고 있는 추세이다. 그림 4은 언리 얼 엔진과 유니티3d 엔진을 보여주고 있다. 그림 2 미국 ios와 안드로이드 단말기 사용자의 애플리케이션 이용 시간 비중 그림 3 한국 ios와 안드로이드 단말기 사용자의 애플리케이션 이용 시간 비중 - 44 -
Unity3D를 이용한 안드로이드 3D 게임 제작 애니메이션 등을 제작하는 데에도 많이 사용되고 있다. 또한 제작자들이 직접 제작한 매니저 및 플러그인 등을 유니티 자체에서 지원해주는 스토어에서 판매하거나 개발 자들이 포털등을 통해 무료로 배포하고 있기 때문에 이러 한 플러그인을 이용할 경우 개발이 빨라지고 관리가 간편 하다는 장점이 있다[2]. 3. 게임제작 3.1 게임 요구사항 유니티3d 엔진을 이용하여 개발된 첫 번째 게임은 이 미지 기억 게임으로 게임의 요구사항은 다음과 같다. 1) 카드는 같은 이미지의 카드가 짝을 이루어 구성된 다. 2) 터치 조작으로 카드를 클릭하면 감춰진 이미지를 보 여준다. 3) 같은 이미지의 카드를 이어서 클릭하면 두 장 모두 앞면이 나타난다. 4) 이미지가 다른 카드를 이어서 클릭하면 두 장 모두 다시 뒷면이 나타난다. 5) 모든 이미지의 짝을 찾는다면 다음 스테이지로 넘어 간다. 6) 게임은 6개의 스테이지로 구성된다. 3.2 Title 화면 그림 4 언리얼 엔진과 유니티3d 엔진 유니티3d 엔진은 애니메이션, 쉐이더(shader), 라이 팅, 네트워크, 렌더링(rendering)등 여러 가지 기능들을 지원하는데, 필요에 따라 개발자에 맞게 기능들을 수정할 수 있도록 되어있어 게임 뿐만 아니라 콘텐츠, 실시간 3D 그림 5은 게임을 실행하면 처음 보게 되는 타이틀(title) 화 면이다. 총 4가지의 버튼이 있는데 이중 3개의 버튼을 클릭하 게 되면 각 버튼에 배정된 게임이 실행된다. 제일 하단의 "QUIT GAME" 버튼을 클릭하면 게임이 종료된다. 3.3 게임 방법 본 논문에서 다룰 게임은 GAME1" 버튼을 클릭하면 실행된다. 그림 6는 이미지 기억 게임을 실행하면 처음 그림 5 게임 Title 화면 - 45 -
컴퓨터정보통신연구 제22권 제1호 2014.5.(43-48) 볼 수 있는 화면이다. 카드가 모두 뒷면이 보여지고 있음 을 확인 할 수 있다. 카드를 만들고 애니메이션 기능을 이용하여 카드를 클 릭했을 때 180도 회전하는 동작을 만든다. 그림 6 이미지 기억 게임 화면_1 그림 9 카드회전 애니메이션 카드의 뒷면을 클릭하면 카드가 뒤집히는 애니메이션이 적용되어 카드가 앞면으로 전환된다. 같은 이미지의 카드 를 이어서 클릭하면 두 개의 카드는 그림 7과 같이 뒷면 이미지를 유지한다. 그림 7 이미지 기억 게임 화면_2 3.4 애니메이션 이벤트 카드가 뒤집히는 애니메이션을 만들기 위해서는 우선 Cube를 하나 설치하여 카드 모양을 만들어준다. 그림 8 은 큐브로 카드 모양을 만든 것이다. 애니메이션 이벤트는 애니메이션이 플레이 되는 중간에 특정한 일을 처리하는 것이다. 애니메이션 이벤트는 스크 립트로 만들 수 있다. 여기서는 카드가 회전할 때 앞면과 뒷면을 표시하기 위해 사용된다. 카드가 회전할 때 수직 이 되는 순간 카드의 텍스쳐를 앞면 이미지로 바꾸면 (-90도) ~ (-180도) 회전 할 때는 앞면이 보이게 된다. 카드를 덮는 것도 마찬가지로 앞면이 보이는 상태에서 회 전하다 수직이 될 때 다시 뒷면 텍스쳐로 바꿔 준다. 카 드의 이미지를 바꾸는 것은 오브젝트에 설정된 텍스쳐를 바꾸는 것이다 오브젝트의 텍스쳐를 프로그램으로 바꾸는 경우에는 다음과 같은 형식을 사용한다. <오브젝트>.renderer.material.mainTexture = Resources.Load("텍스처" [, Texture2D]); // 동적 할당 <오브젝트>.renderer.material.SetTexture( 텍스처, 텍스처 종류); // 정적 할당 애니메이션 이벤트는 이벤트를 처리할 스크립트를 먼저 작성한 후 그것을 애니메이션에 연결한다. 위와 같은 방 법으로 카드오픈 애니메이션과 카드 클로우즈 애니메이션 을 만들어 프리팹에 저장한다. 프리팹이란 일종의 인스턴 트 객체 그룹이다. 3.5 카드 이미지 번호 이 게임은 짝수개의 카드로 구성되고 두 장의 카드를 한 조로 해서 같은 이미지를 할당한다. 각각의 카드에 카 드 번호를 할당하고 순서대로 2장씩 짝을 만든다. 아래의 스크립트는 카드번호를 할당하고 2장씩 짝을 만드는 부분 이다. int cnum = int.parse(transform.tag.substring(4)); // 카드 번호 img num = (cnum + 1) / 2; // 이미지 번호 그림 8 카드모양 제작 - 46 -
Unity3D를 이용한 안드로이드 3D 게임 제작 3.6 게임 매니저 이 게임은 스테이지를 만들고, 클릭한 카드를 판정하는 등의 게임 전체를 관리하는 별도의 통합된 프로그램이 필 요하다. 게임 매니저는 게임 전반에 걸쳐 영향력을 행사 하는 오브젝트나 프로그램을 의미하는 용어이다. 게임 매 니저는 게임에서 사용하고 있는 모듈의 상황을 판단하고, 리소스 관리와 게임 전체를 조율하는 역할을 한다. 그림 10 은 게임진행 순서도를 나타내고 있다. 그림 11 플랫폼 변환 Build 화면 V. 결론 그림 10 게임 진행 순서도 4. 플랫폼 변환 및 실행화면 4.1 플랫폼 변환 유니티(Unity3d)에서는 제작된 게임 파일을 간단하게 플랫폼 변환이 가능하다. Java와 Android SDK가 설치 되어 있어야 하며, 그림 11에서 처럼 유니티(Unity3d) 에서 File - Build Setting, Android 플랫폼을 선택 후 Build 하고자 하는 Scene들을 선택하고 Build를 클릭하 면 변환이 된다. 그림 12은 Build 과정을 보여주고 있다. 아케이드 게임은 단순하고, 사전지식이 없이 짧은 플레 이시간으로 즐길 수 있는 게임이다. 본 논문에서는 아케 이드적 특징을 세습하고 유니티(Unity3d) 게임 엔진환경 에서 게임을 구현 하였으며 여기에 모든 과정을 담진 못 하였지만 비교적 간단하게 게임을 제작할 수 있음을 확인 하였다. 유니티(Unity3d)엔진의 가장 큰 장점은 다양한 플랫폼을 지원한다는 것이다. 윈도우와 매킨토시 OS X에 서 구동되며, Windows, Mac, 아이폰, 안드로이드 등 다 양한 플랫폼에서 폭넓은 개발이 가능하다. 유니티 웹 플 레이어(Unity Web Player) 플러그인을 이용하면 3D 웹게임을 만들 수 있다. 사용자는 새로운 플랫폼을 위해 전혀 새로운 작업을 할 필요가 없으며, 유니티3d 엔진에 서 제공하는 게임 소스코드를 이용하여, 다양한 플랫폼 결과를 생산해 낼 수 있다. 에디터의 화면을 구성하는 GUI는 처음 시작하는 개발자도 쉽게 접근할 수 있도록 도와주며, 프로그래머가 만든 스크립트와 컴포넌트를 간 단한 마우스 드래그로 적용 및 설정이 가능하다. 또한 모 든 개발 시스템을 한눈에 관리할 수 있도록 구성함으로써, 알지 못하는 기능과 복잡한 자료로 인하여 게임 개발 중 그림 12 Build 과정 - 47 -
컴퓨터정보통신연구 제22권 제1호 2014.5.(43-48) 발생하는 문제들을 최소화할 수 있도록 지원한다. 이러한 개발 시스템 위에서 사용자는 마우스로 선택한 컴포넌트 들을 조합하여 새로운 개체를 정의하는 한편, 실시간으로 카메라, 지형, 캐릭터 등 다양한 새로운 형식의 개체들을 제작해 낼 수 있게 된다. 이렇게 제작된 새로운 형식의 개체들은 게임 내에 배치되고, 에디터를 통해서 값을 설 정받게 된다. 이런 작업은 역시 마우스 클릭과 드래그를 통하여 가능하다. 또한 각 개체 간의 통신, 게임 이벤트 처리와 같은 실제 게임의 기능 구현에 있어서는 에디터 상에서 각 컴포넌트와 연결된 스크립트를 불러와서 작성 하는 것이 가능하다. 수정된 내용은 바로 컴포넌트에 적 용이 되어, 에디터 상에서 편집이 가능하도록 처리된다. 이처럼 유니티3d 엔진에서는 엔진 내부의 정보를 전혀 모 르는 상태에서도 에디터에서 데이터의 간단한 조작만으로 도 빠른 시간 내에 게임을 만들어 낼 수 있으며, 이 결과 는 바로 실행하여 확인해볼 수도 있다. 향후 연구 계획은 좀더 UI(User Interface)적인 요소를 가미하고, 서버와 의 연동을 통하여 실시간으로 기록을 대전할 수 있도록 수정. 발전시키는 것이다. 감사의 글 저 자 약 력 박영민(Park, Yeongmin) 충북대학교 전자정보대학 정보통신공학부 졸업(2014. 2) 충북대학교 전자정보대학 정보통신공학부(석사과정) pym8716@naver.com 박종민(Park, Jongmin) 충북대학교 전자정보대학 정보통신공학부(학사) 졸업예정 (2014. 8) 교내서클 CyverDB 정보처리기능사, 컴퓨터활용능력 3급 작성가능 SW: C, JAVA, C#, Exel, 한글, PPT cjm8812@naver.com 신병철(Byung Cheol Shinn) 한국과학기술대학 석사 및 박사 졸업 1977~1980 한국전자통신연구원 연구원 1984~1987 한국과학기술대학 전자전산학부 조교수 1988~1991 한국과학기술원 jsrl 및 전자공학과 부교수 1998~ 현재 충북대학교 정보통신공학부 교수 bcshin@cbu.ac.kr 이 논문은 2012년도 충북대학교 학술연구지원사업의 연구비 지원에 의하여 연구되었음 (This works was supported by the research grant of the Chungbuk National University in 2012). 참 고 문 헌 [1] 유선실, 세계 모바일게임 최근 현황, 방송통신정책, 제 25권 20호 통권565호, pp. 58-64, 2013년 11월 01일 [2] 이주형, 전재홍, 홍민, 유니티 게임 엔진을 활용한 멀티 플랫폼 게임 제작, 한국인터넷정보학회 추계학술발표 대회 논문집, 제13권 2호, pp. 133-134, 2013년 [3] 박중수, Unity 왕초보 따라하여 게임 만들기, 무지개터, 2012 [4] 수 블랙먼, 시작하세요 Unity3D 게임 프로그래밍, 위키 북스, 2012 [5] 게임콘텐츠및 기술개발동향, 한국콘텐츠진흥원, http://www.kocca.kr/knowledge/publication/indu/ icsf iles/afieldfile/2012/10/12/8iso0xju4ngq.pdf. - 48 -