유니티 2D 게임, '왕초보'도 만든다

나진희 najin@itdonga.com

스마트폰 게임, 즐길 줄만 알았지 만들어 보게 될 줄은 꿈도 못 꿨다. 그런 기자가 게임 개발 엔진 '유니티'를 이용해 스마트폰용 2D 게임 만들기에 도전했다. 참고로 접해본 프로그래밍 언어라곤 대학교 2학년 때 교양 과목으로 들은 '자바스크립트(Java script)'가 전부이고 그마저도 지금은 가물가물하다.

주변에서 '유니티는 초보자도 쉽게 할 수 있다', '몇 시간이면 소위 악마의 게임 '플래피버드(Flappy bird)'를 만든다'고 바람을 불어넣었기에 더 혹했다. 게임 하나로 큰돈을 간단히 벌게 해 준 플래피버드를 손쉽게 만든다니. 그 누가 끌리지 않을까?

이 기사는 동아닷컴 평생교육원 스킬트리랩의 '왕초보를 위한 유니티 2D C# 스크립팅'을 수강한 후 솔직히 써내려간 체험기다. 해당 강좌는 초보 프로그래머를 대상으로 진행한다. 게임 개발 과정상 '코딩'인 C# 스크립팅이 빠질 수는 없지만 그것만 중점적으로 다루진 않아 쉽게 들을 수 있었다.

수업은 토요일 6시간씩 2주간, 총 12시간이었다. 평소 평일 저녁은 시간을 빼기 어려워 주말반을 택했다. 사실 수강 신청할 때 '6시간'의 강의는 조금 부담스러웠다. 하지만 막상 수업을 들어보니 게임 만드는 재미에 시간이 빠르게 흘렀다. 참고로 추후 강의는 3~4시간씩 3주 과정으로 진행될 예정이다. 기자는 이번 강좌를 통해 게임의 캐릭터이미지를 바꿔봤고, 새가 동전을 먹는 2D 게임 제작법도 배웠다.

유니티란?

유니티에 대해 먼저 소개하고 넘어가자. 유니티는 유니티 테크놀로지스(Unity Technologies)가 제작한 게임 개발 엔진으로 쉬운 사용법과 호환성 등으로 최근 각광받고 있다.

스킬트리랩 송영주 강사가 설명한 바에 따르면, 유니티는 물리, UI, 애니메이션 엔진이며 통합 솔루션이다. 지난 2001년 게임 개발 스튜디오로 시작해 2005년 1.0 버전이 출시됐다. 모바일 게임 붐에 힘 입어 애플리케이션 마켓 시장과 동반 성장할 수 있었다. 지난해만 약 200만 명의 개발자가 유니티를 이용해 게임을 개발했다고 추산된다.

유니티
유니티

유니티는 '유니티 에디터'를 통해 모든 기능을 관리한다. 프로젝트를 '빌드(Build, 최종본을 apk 파일 등 실행 가능한 파일로 만들어내는 것)'하지 않아도 결과를 미리 보면서 작업할 수 있고, 작업하던 파일들을 폴더 단위로 복사하고 이동해서 다른 PC에서도 프로젝트를 이어갈 수 있다. 상대적으로 엔진 가격도 저렴한 수준이다. 무엇보다 게임에서 나온 수익을 엔진 제작사와 나누지 않고 개발자가 전부 가져갈 수 있다.

만약 이전의 프로그래밍이 얼마나 복잡하고 힘들었는지 알았다면 유니티에 대한 설명을 듣고 '아... 대단하다' 했으리라. 하지만 아무것도 모르는 상태였기에 '그건 당연한 거 아닌가?'하는 느낌이었다. 마치 초등학생에게 '예전에는 스마트폰이 없었는데 세상 참 좋아졌다'하면 나오는 반응과 비슷하겠다.

게임 캐릭터를 마음대로 바꿔보자

수업은 정말 기초적인 부분부터 시작한다. 프로그램 각 부분의 이름과 용도, 창을 배치하는 법, 주요 기능 등을 하나씩 짚어가며 설명한다. 프로그램이 전부 영어로 되어 있어 괜히 겁먹기 쉬운데 차근차근 설명을 들으니 자신감이 생겼다.

유니티는 '드래그 앤 드롭(Drag and Drop)'으로 파일이든 폴더든 편하게 불러올 수 있다. 개발에 쓰이는 이미지, 사운드, C# 스크립트 등을 통틀어 '에셋(Assets)'이라 부르는데 프로그램 내의 에셋 창에 원하는 파일을 끌어다 놓으면 알아서 추가된다.

'Scene' 뷰에서 이것저것 기능을 추가하고 오브젝트를 이동했다면, 'Game' 뷰에서 재생 버튼을 눌러 실행 상태를 미리 볼 수 있다. 앞서 설명한 빌드 없이 결과물을 볼 수 있다는 것이 이걸 말한다. 중간중간 '내가 만든 게임은 어떤 모습일까' 상상하며 게임 모드를 확인하는 것은 분명 큰 재미였다.

처음부터 게임을 만들면 수강생들이 어려워할 수 있기에 예제 게임의 캐릭터만 바꿔보는 것으로 대략적인 기능을 훑고 넘어갔다. 플래피버드 게임의 캐릭터를 수강생이 원하는 이미지로 바꿔 보았다.

우선 구글 등 이미지 검색 엔진을 활용해 원하는 캐릭터를 찾았다. 이때 배경이 투명한 파일이면 더 게임이 예쁘게 나온다. 기자는 '슈퍼배드'의 '미니언' 이미지를 택했다. 내려받은 이미지에 흰 배경이 있었기에 따로 작업을 해서 배경을 없앴다.

참고로 사용 중인 PC에 어도비 포토샵이 설치되어 있지 않아 웹 기반 이미지 편집 툴인 '포토 에디터 온라인(http://pixlr.com/editor/)'에 접속해 배경을 처리했다. 포토 에디터 온라인은 따로 프로그램을 설치하지 않아도 간단히 이미지를 편집할 수 있어 유용하다.

유니티
유니티

기존 게임의 캐릭터에 에셋에 추가한 이미지를 연결하니 허무하리만치 쉽게 캐릭터가 바뀌었다. 게임의 디자인적인 면을 중시한다면 간단히 이미지를 바꾸고 그 결과물을 가늠해볼 수 있는 것은 큰 장점으로 다가올 듯싶다.

C# 스크립팅으로 캐릭터를 움직이자

캐릭터를 움직여 동전을 먹으면 점수가 올라가는 2D 게임 만들기를 시도했다. 사실 정확히 표현하자면 캐릭터가 동전을 '먹는' 것은 아니다. 그동안은 그저 게임을 하는 사람 입장이었기에 캐릭터가 정말 동전을 먹는 것처럼 보였다. 하지만 사실 먹는 게 아니고 캐릭터가 움직이다 동전과 '부딪히면' 동전이 '사라지는' 것이다. 그리고 그 순간 이 행동을 인식한 점수가 숫자를 올린다(조건문). 이러한 과정을 구현하려면 C# 스크립팅이 필요하다.

캐릭터를 움직이기 전 캐릭터가 GIF 이미지처럼 움직이게 만들었다. 가만히 정지해 있는 캐릭터보다는 날개를 퍼덕이는 등 움직이고 있는 편이 더 자연스럽고 생동감 넘친다.

유니티
유니티

스프라이트(Sprite) 이미지로 애니메이션 에셋을 만들 수 있다. 역시 구글 등에서 'sprite image' 등 적절한 검색어를 입력해 찾으면 캐릭터의 움직임을 순서대로 그려놓은 이미지가 뜬다. 유니티 에셋 스토어 등에서 유료로 스프라이트 이미지를 구할 수도 있고, 능력만 좋다면 개발자가 스스로 그려도 된다.

스프라이트 이미지를 불러와 스프라이트 에디터로 자르면 조각조각 이미지가 쪼개진다. 자동으로 프로그램이 경계선을 인식해 나누도록 할 수도 있고, 사용자 스스로 일일이 구역을 정해 자를 수도 있다.

잘라놓은 몇 장의 이미지를 Ctrl 키를 누른 채 한 번에 선택한 후 다시 Scene 뷰로 끌어다 놓으면 애니메이션이 생성된다. 재생 버튼을 누르면 game 뷰에서 캐릭터가 움직이는 것을 확인할 수 있다. 처음 날개를 파닥이는 새 캐릭터를 만들었을 때의 그 기쁨이란. 직접 스프라이트 이미지를 제작해 만든다면 그 애착은 더 커질 듯싶다.

그 후 게임의 완성도를 높이기 위해 배경 이미지를 끌어다 놓아 무대를 만들고, 코인 이미지도 늘어놓고, 캐릭터가 부딪혔을 때 이를 인식하도록 'Component'의 'Circle Collider 2D' 기능 등을 추가해 게임 제작을 계속했다.

유니티
유니티

가장 큰 난관은 C# 스크립팅이었다. 유니티가 아무리 쉬운 게임 개발 엔진이라 하더라도 C# 스크립팅을 완전히 피할 수는 없다. 이는 게임의 질을 높이기 위해 감내해야 하는 과정이다. 이왕 해야 한다면 부담은 덜어두고 열심히 배워보자.

키보드 키나 화살표 등 특정 이미지를 눌렀을 때 캐릭터가 움직이는 코드 등을 넣어 C# 스크립트를 작성했다. 그 후 이를 캐릭터에 연결하니 바로 적용됐다. 여기저기로 움직이는 캐릭터를 보니 뿌듯한 마음마저 들었다.

마무리 작업을 끝낸 후 빌드해 안드로이드 스마트폰에 넣었다. '알 수 없는 출처'를 해제하면 구글 플레이스토어 등에서 받지 않은 apk 파일도 설치할 수 있다. 물론 자신이 제작한 것은 상관 없지만 출처가 불분명한 파일은 해킹 툴이 들어있을지도 모르니 조심해야 한다.

모방이 창조의 어머니라 하지 않는가. '뻔한' 기본 게임을 하나하나 만들어보는 과정을 통해 나만의 게임에 대한 아이디어를 얻고 독특한 게임 제작을 위한 기본기를 쌓을 수 있다. 그렇기에 게임 개발의 기초를 배우는 이번 과정은 무척 유익한 시간이었다.

스킬트리랩은 오는 6월 7일부터 6월 강좌 접수를 시작한다. 유니티 2D C# 스크립팅 외에도 '유니티 3D', '언리얼4', '노드JS', '유니티 게임 페이스북 연결' 등 다양한 강좌가 개설되어 있으니 게임 개발에 관심있는 사람은 수강안내 페이지(http://www.skilltreelab.com/class/class01.php)를 참고하자.

글 / IT동아 나진희(najin@itdonga.com)

IT동아의 모든 콘텐츠(기사)는 Creative commons 저작자표시-비영리-변경금지 라이선스에 따라 이용할 수 있습니다.
의견은 IT동아(게임동아) 페이스북에서 덧글 또는 메신저로 남겨주세요.