Daily e-sports

[기자가간다] 유니티엔진으로 무작정 게임 만들기

'현장르뽀, 기자가간다'가 신설됐습니다. 이슈가 있는 현장이나 특이한 업무를 직접 해보고 그 감정을 솔직하고 담백하게 담아내는 코너입니다. 이번 시간에는 유명 게임엔진 유니티 엔진을 통해 직접 게임 개발을 시도해 봤습니다. 이를통해 직관적이면서도 간편한 유니티 엔진의 성능을 몸소 체험할 수 있었습니다.<편집자주>

게임 개발. 일반인에게는 너무나 난해한 느낌으로 다가올 수 밖에 없는 말이다. 게임 개발을 위해서는 고도의 프로그래밍 실력과 그래픽 디자인이 요구되기 때문. 어릴 때 다닌 컴퓨터 학원에서 베이식(basic) 조금 만져본게 전부인 기자에게 있어 게임 개발은 너무나 막연한 영역이 아닐 수 없었다.

이런 상식을 뒤집는 존재가 나타났다. 바로 유니티코리아다. 누구나 쉽고 재미있게 게임을 개발할 수 있단다. 딱 일주일만 배우면 누구나 간단한 게임 정도는 가볍게 만들 수 있다고. 이같은 확신의 중심에는 바로 요즘 장안의 화제인 유니티 엔진이 자리잡고 있었다. 유니티 엔진의 편의성과 간결함은 어렸을 적 잊어먹었던 게임 개발의 꿈을 다시 되살려준다는 것.

유니티 측은 "하루 8시간씩 사흘만 배우면 게임 개발의 기본적 개념을 익히고, 유니티의 물리 효과 및 랜더링 두 가지를 다 배우는데 역시 사흘이면 된다"며 "유니티에 대한 기본 개념을 확실히 깨우치면 적어도 프로토타입은 누구나 하나씩 만들 수 있다"고 자신했다.

믿기지 않았다. 호기심도 생겼다. 정말 일주일만 배우면 게임을 만들 수 있을까. 그래서 도전했다. FPS 게임을 함께 만들어보기로.

[기자가간다] 유니티엔진으로 무작정 게임 만들기

◆유니티 엔진으로 개발 도전

참고로 FPS(First Person Shooting) 게임이란 직역하면 1인칭 슈팅 게임이라는 뜻이다. 이용자가 캐릭터의 시점에서 플레이 하게 되며 조작에 따라 배경과 환경이 시시각각 바뀌기 때문에 게임 세계에 실제 들어가있는 듯한 재미를 주는 점이 특징이다. 전세계적으로 가장 인기 있는 장르 중 하나로 수많은 마니아를 양산하고 있다.

FPS 게임 개발은 일반인이 보기에는 매우 복잡해 보이지만 실제 개발 자체는 그리 어렵지 않은 수준이라고 한다. 1인칭 시점이라 이용자가 조작하는 캐릭터의 모습이 게임 화면에 보이지 않는데다 화면에 노출되는 오브젝트(사물)의 숫자도 많지 않아 비교적 손쉽게 구현할 수 있다는 이유에서다.

그렇게 유니티 측과 단 15분 만에 FPS게임 개발하기에 본격 돌입했다. 준비물은 노트북과 노트북에 설치된 유니티4.0. 유니티4.0은 애니메이션 구현과 모바일게임 개발에 특화된 최신 통합 게임 개발 엔진이다.

유니티4.0 실행화면을 보자마자 머릿 속에 떠올린 이미지는 다름아닌 포토샵이었다. 이제는 대중화된 포토샵은 누구나 손쉽게 이미지를 편집하고 변형할 수 있는 인기 그래픽 프로그램이다. 특히 인터페이스가 간편해 접근성도 높다. 그만큼 유니티4.0의 첫 인상은 간편했다는 얘기다. 모니터 화면 안에는 드넓은 하얀 대지가 펼쳐져 있었다.

먼저 유니티4.0의 배경 제작툴을 실행시키고 마우스를 누른 채 움직여 봤다. 그러자 마치 포토샵으로 색을 칠하듯 마우스 포인터가 가는 방향에 봉우리가 솟아났다. 여러번 마우스 버튼을 눌러 줄수록 봉우리가 높게 생성됐다. 처음에는 평면이던 게임속 세계에 굴곡이 생기기 시작한 것이다.
[기자가간다] 유니티엔진으로 무작정 게임 만들기


그렇게 몇 초만에 하나의 거대한 땅덩어리가 생겨났다. 무에서 유가 생성되는 순간이었다. 하지만 밋밋했다. 회색빛깔의 덩어리가 생겨났을 뿐이다. 썰렁한 하늘을 좀 더 '있어보이게' 바꿔보기로 했다.

유니티4.0의 '스카이박스'를 실행시키자 다양한 예제 샘플이 등장하는게 아닌가. 이중 하나를 골라 적용시키자 순식간에 변화가 일어났다. 시커멓던 하늘은 어느새 새하얀 구름이 떠 있는 맑은 푸른 하늘로 바뀌어 있었다. 하늘이 바뀌자 앞서 창조했던 땅덩어리도 달라져 보였다. 내 손으로 천지창조를 하는 것인가.

이제 지형을 색칠할 차례였다. 회색빛깔의 땅덩어리에 생명력을 덧입히는 순간이었다. 유니티에 내장된 지형 텍스처중 하나를 지정한 후 마우스로 해당 지형에 클릭하자 그 지형은 방금 선택한 텍스처로 덧입혀졌다. 마치 윈도우에 기본 내장된 '그림판'으로 간단한 그림을 그리는 것과 크게 다르지 않다고 느껴졌다.

우선 사막 텍스처를 모두 덧씌운 뒤 초원 텍스처를 부분부분 입히자 그럴듯한 산악 지형이 만들어졌다. 회색빛 땅덩어리가 순식간에 바뀌었다. 여기에 물 효과까지 가미하자 완벽한 섬이 만들어졌다. 물의 높낮이는 임의로 자유자재로 변환할 수 있었다.

참고로 유니티가 운영하는 오픈마켓 에셋스토어에는 예쁜 텍스처가 많단다 50여 종의 텍스처를 무료로 제공하고 있다. 애플 앱스토어나 구글 플레이와 유사하며 판매되는 상품은 개발자들이 개발한 프로그램들이다. 기존 유니티 엔진이 제공하지 않는 기능도 에셋스토어를 통해 판매되기 때문에 이를 잘 활용하면 개발 시간을 대폭 줄일 수 있다고.

[기자가간다] 유니티엔진으로 무작정 게임 만들기

◆설정 하나면 OK

배경 제작은 끝났고 이제 본격적인 FPS게임 개발에 돌입하기로 했다.

FPS 게임에서 빠질 수 없는 주인공 캐릭터를 만들어야 했다. 카메라가 달린 오브젝트를 앞서 만든 게임 세계에 배치했다. 이 오브젝트는 개발자의 조작에 따라 움직이면서 전방의 화면에 출력해 준다. 앞서 3인칭 전지적 시점으로 창조한 세계에 두 발을 내딛은 캐릭터가 등장한 것. 신기했다. 상하좌우 버튼을 누르자마자 정말 FPS게임을 하는 것처럼 배경이 시시각각 바뀌었다.

하지만 아직 부족했다. FPS게임의 기본인 총기도 없었고 물리쳐야할 적도 없었다. 이제 겨우 내가 조작할 수 있는 주인공 하나가 등장했을 뿐이다. FPS의 뼈대를 제대로 갖추려면 일단 총과 탄환이 있어야 한다. 우리의 주인공 오브젝트에게 총을 들려주기로 했다. 기왕이면 큼지막한 로켓포로.

먼저 직사각형 박스를 하나 꺼내 주인공 오브젝트 옆에 붙여줬다. 물론 멋들어진 로켓포와 이 직사각형 박스는 거리가 멀었지만 문제 없었다. 일단 기본 얼개를 다 짠 후, 이 직사각형 박스를 로켓포 그래픽으로 교체만 해주면 되기 때문. 이후 화면을 이리저리 옮겨보니 마치 FPS 게임 하단에 총기 그래픽이 노출되 듯, 하얀 직사각형 박스가 마치 총기처럼 늠름하게 적을 겨냥하고 있었다. 이제 포탄을 만들 차례였다.


앞서 만든 직사각형만큼이나 투박한 원형구를 생성시켰다. 여기부터는 약간 복잡해졌다. 말로만 듣던 스크립트를 짜야 했기 때문이다. 마우스 왼쪽 버튼을 누를 때마다 원형구가 발사되는 스크립트를 입력한 후(이 부분은 도움을 받았다) 앞서 생성한 직사각형 박스(로켓포)에 붙였다. 쉽게 말하면 방아쇠를 만들었다는 얘기다.

그러자 왼쪽 마우스 버튼을 누를 때마다 직사각형 박스에서 원형구가 하나씩 생성되기 시작했다. 이를테면 로켓포에서 로켓이 발사된 셈. 하지만 이렇게 발사된 로켓(원형구)는 공중에 붕 떠 있기만 할 뿐이었다. 발사된 원형구가 앞으로 전진하는 스크립트를 추가해야 했다.
[기자가간다] 유니티엔진으로 무작정 게임 만들기


여기서 두 가지 선택을 할 수 있었다. 원형구에 일정 강도의 힘을 가해 튕겨져 나가게 하거나, X축에 놓여 있던 원형구를 Y축으로 임의로 옮겨놓는 방법이 그것이었다. 기왕이면 실제처럼 만들기 위해 첫 번째 방법으로 진행하기로 했다. 관련 스크립트를 수정했다. 그러자 달라졌다. 확실히 달라졌다. 마우스 왼쪽 버튼을 누르자 정말 로켓을 쏘듯 원형구가 빠르게 튕겨져 나갔다. FPS 게임 다운 면모가 조금씩 드러나고 있었다.

이번에는 포탄이 목표물에 명중했을 시 발생하는 폭발 효과를 도입할 차례였다. 에셋스토어에 무료로 제공된 폭파 이펙트를 불러온 후 간단한 스크립트를 통해 원형구에 대입시켰다. 그러자 원형구(포탄)가 닿은 지면에는 엄청난 폭발 효과가 발생했다. 이건 완전 블록버스터 영화인데.

[기자가간다] 유니티엔진으로 무작정 게임 만들기

◆FPS에는 적이 있어야지

이제는 적을 만들 차례였다. 잠시 고민한 끝에 외계인들이 타고다니는 UFO를 등장시키기로 했다. UFO를 연상시키는 원형 접시를 하나 게임 세계에 끌어온 뒤 간단한 스크립트를 입력했다. 이 접시가 공중에 떠 있을 수 있도록 중력 효과를 삭제하고 주인공 주변을 느린 속도로 천천히 돌게 했다. 주인공과 총기, 물리쳐야할 적 등 FPS가 갖춰야할 3박자가 고루 완성된 순간이었다.

하지만 아쉬웠다. 여전히 총과 로켓은 투박한 직사각형과 원형구의 모습이었기 때문. 장난감총을 가지고 노는 듯 했다. 장난은 끝내고 이제 진정한 FPS 게임의 모습을 덧입힐 차례였다.

다시 한번 에셋스토어에서 랜더링을 끝 마친 여러 총기 디자인을 불러왔다. 이중 큼지막한 검은 색 로켓포를 골라 그동안 총기라고 생각해 왔던 투박한 직사각형에 삽입시켰다. 또 미사일 이미지를 불러와 원형구 대신 미사일 이미지로 교체했다. 그리고 게임을 실행시켰다. 눈 앞에는 드디어 완벽한 FPS 게임의 면모가 펼쳐지고 있었다.

화면에는 방금 골랐던 로켓포가 적을 정조준하고 있었다. 마우스 왼쪽 버튼을 누르자 위압적인 로켓이 UFO를 향해 날아가 굉음과 함께 UFO를 폭발시키는게 아닌가. 찰진 타격감이 느껴졌다. 내 손으로 FPS 게임을 만들다니.

유니티엔진으로 게임 만들기. 정말 쉬웠다. FPS 게임 개발 완료까지 걸린 시간은 불과 15분 가량. 앞서 유니티 측이 자신했던 대로 정말 단시간에 게임 하나를 뚝딱 만들어낸 것이다.

이는 유니티엔진만의 독특한 개발 방식에 힘입은 결과다. 작은 오브젝트부터 시작해 점진적으로 발전시켜 나가는 유니티엔진의 개발 방식은 실제로 매우 효율적인 것으로 입증되고 있다고. 에셋스토어를 통해 전세계 수많은 개발자들이 자신의 개발 노하우를 공유하고 있다는 점도 누구나 쉽게 게임 개발에 도전할 수 있는 요인이란다.
[기자가간다] 유니티엔진으로 무작정 게임 만들기


쉽고 간편하게 구성된 유니티엔진은 기획자와 개발자와의 미스 커뮤니케이션을 대폭 줄여준다. 지금까지의 게임 개발의 경우 기획자가 낸 아이디어가 온전히 프로그래밍되기 어려웠다. 기획자의 의도가 개발자에게 제대로 전달되지 않는 경우가 대부분이라서다.

하지만 유니티엔진은 프로그래밍에 조예가 깊지 않은 기획자도 쉽게 자신의 기획 의도를 유니티엔진으로 표현해 개발자에게 전달하면 된다. 개발자는 이를 바탕으로 보완, 수정해 완성품을 만들어낸다. 또 수정사항이 생길 경우 개발자가 개발 중인 게임을 그대로 기획자에게 제공, 수정 변경이 용이하게 구성돼 있다. 왜 유니티엔진이 현재 가장 널리 쓰이는 엔진 중 하나인지 직접 체감한 순간이었다.


[데일리게임 문영수 기자 mj@dailygame.co.kr]
<Copyright ⓒ Dailygame co, Ltd. 무단 전재 및 재배포 금지>

데일리랭킹