[기획] 로블록스로 게임 만들기(1) 천 리 길도 점프 게임부터

기획기사 | 윤서호 기자 | 댓글: 4개 |



"너 로블록스 아냐? 그걸로 게임 만들어보지?"

부랴부랴 용두사미, 아니 사두구(蚯: 지렁이 구)미로 끝나버린 게임개발 이후, 다음엔 어떻게 해야 좀 더 쉽게 그럴싸한 걸 만들 수 있을까 생각하던 차였습니다. 아트 애셋부터 일단 갖춰볼까 생각만 하고 막상 업무 끝난 뒤엔 애플펜슬 하나 까딱 안 하던, 그냥 막막하게 머리만 굴리던 시점이었죠.

쓸 줄 아는 거라고는 유니티, 그것도 2D 관련 지식밖에 없었으니 다음에도 2D로 해야지, 이번엔 RPG로 해봐? 캐릭터 조작하고 판정을 디테일하게 짜맞추기엔 아직 지식이 부족하니 턴제로 해볼까? 이런 상상의 나래만 굴리던 차에 스톱 사인이 떨어진 겁니다.



▲ 저 2D밖에 못 만드는데...로블록스론 3D 게임 개발 가능?

애초에 로블록스에 대해서 들어보진 않았던 것도 아니고, 그냥 간단하게 플랫포머나 런 게임을 만들기엔 훨씬 간단하지 않을까 싶었습니다. 프로그램 언어가 다르다는 맹점이 있긴 하지만, 어차피 C#도 제대로 알고 쓴 게 아니라 기존 코드를 제멋대로 마개조를 거치는 방법으로 썼으니 문제될 건 없어보였죠.

더군다나 "그걸로 초등학생도 게임을 만든다더라"라는 말이 제 폐부를 찌릅니다. 뭐 초등학생을 무시하는 게 아닙니다. 게임 개발엔 나이가 없으니까요. 외국 천재 개발자들은 다 초등학생 때 게임 만들었다거나 게임 파일 다 분해해봤다 이런 전설이 하나둘씩은 내려오지 않습니까. 일론 머스크나 존 카맥이라던가, 아무튼요. 그에 반해 전 만학도에, 학과 전공도 원래는 게임과 전혀 관계 없는 거였던 터라 개발자 교육 과정을 배울 때 엄청 고생한 전력도 있습니다. 그걸 알지만, 뭔가 오기가 생기긴 하더군요.

스스로 '꼰'이 아니고 오픈마인드라고 나름(?) 자부는 합니다만, 어찌됐거나 나이부심 이런 비스무리한 건 어떻게 있긴 한가봅니다. 정신을 차려보니 그냥 보기만 하고 전혀 건드려보지도 않았던 로블록스를 설치하고, 뭘 만들어보고, 이렇게 그 과정을 적어가고 있으니까요.



▲ 뭐가 됐든 일단 만들어봅시다



■ 로블록스가 뭐죠?

지피지기 백전불태라는 말이 있죠. 제 처참한 실력이야 이미 증명됐으니 그 다음으로 적, 로블록스가 뭔지 간단히 짚고 넘어가보죠. 로블록스는 쉽게 말하자면 게임플랫폼이자, 게임 제작 시스템이라고 보면 될 겁니다. 로블록스 스튜디오라는 게임 엔진을 사용해서 게임을 만들고, 그 게임을 로블록스 서버에 올리면 다른 유저들도 즐길 수 있기 때문이죠.

로블록스는 자기가 게임을 만들면서 남들과 같이 즐길 수 있다는 점, 그리고 네모진 로우 폴리 그래픽 때문에 마인크래프트와 자주 비교되곤 합니다. 그러나 게임 안에서 캐릭터를 움직여가면서 직접 게임 내부를 설계해나가는 마인크래프트와 달리, 로블록스는 게임 엔진에 좀 더 가까운 모습입니다. 게임 빌드를 만들어가는 과정이 플레이 모드가 아니라 씬 모드에서 진행되고, 플레이 테스트를 할 때 비로소 게임으로서 즐겨볼 수 있는 그런 방식이기 때문이죠.



▲ 플레이 모드로 그냥 들어가면 감정표현이나 기본 동작밖에 못합니다. 그 전에 밖에서 만들어야하죠

그렇다고 게임 엔진처럼 아예 처음부터 아무 것도 없어서 하나하나 다 만들어야 하는 건 아니고, 플레이어 캐릭터와 땅은 기본적으로 지급됩니다. 템플릿에 따라서 자동차나, 그외 여러 오브젝트들이 기본적으로 세팅이 되어있기도 하죠. 장르도 장애물 피하기부터 런, 레이스, 캡처 더 플래그에 아레나까지 다양하고, 그 각각만 해도 생각보다 완성도가 높은 편이라 약간의 도구와 기믹만 추가해도 어엿한 게임처럼 보일 것들이 꽤 있었습니다.

이런 관점에서 로블록스를 좀 더 정확하게 말하자면, 게임 엔진에 키트가 기본으로 깔려있는 그런 느낌이었습니다. 게임 엔진 개발사에서도 게임 제작 과정 및 기능 설명을 위해서 기본적인 게임 형태의 키트를 내놓곤 하기 때문이죠. 프로그램 언어로 LUA를 쓰긴 하는데, 그 언어를 써서 작성하는 스크립트 없이 기본으로 있는 파츠나 개체만으로도 어느 정도 게임의 틀을 만들 수 있고, 무엇보다도 타 엔진의 애셋스토어와 비슷한 '도구 상자'가 접근성이 워낙 뛰어나서 그걸 이리저리 다운받아서 조립하면 구색을 갖추기도 쉬웠습니다. 그게 서로 호환이 잘 맞을지 아닐지는, 다운받아서 적용해봐야 알지만요.



▲ 이미 라인러너 템플릿은 그 자체로도 충분히 완성된 게임입니다



▲ 컴뱃 템플릿에 도구 상자에 있는 좀비만 넣어주면



▲ 좀비 슈터가 됩니다



■ 천리길도 한 걸음부터, 다운로드 후 게임 만들기까지



▲ 켜자마자 바로 보이는 템플릿, 어떤 장르의 게임을 만들고 싶냐에 따라 선택이 달라집니다

백문이 불여일견에 백견이 불여일행이라고 했으니, 우선 실물을 직접 봐야 말이 될 겁니다. 홈페이지에 가서 회원가입이나 다운로드를 마친다는, 가장 무거운 발걸음을 뗐으니 그 다음은 실행해서 찬찬히 살펴보는 단계입니다.

시작하면 우선 기본으로 제공되는 템플릿들이 눈에 띕니다. 그냥 기본 땅만 있는 베이스플레이트나 플랫 터레인부터, 마을이나 성, 도시 등 테마 템플릿과 게임 장르를 담은 게임플레이 템플릿까지 갖춰져 있는 걸 볼 수 있죠. 일단 그럴싸하게 꾸미는 것도 좋지만, 기본 구조를 모르고 있기 때문에 게임플레이 테마를 먼저 살펴봤습니다.

그렇게 한 이유는 간단합니다. 게임 엔진 구조로 되어있다면 오브젝트 아래에 스크립트가 물려있기 때문이죠. 아무래도 게임 플레이에 관련된 오브젝트는 게임플레이 템플릿에 많을 테고, 거기에 있는 걸 따서 쓰면 대강 먹히지 않을까 싶었습니다. 다른 게임 키트에서도 게임 내에 다른 스크립트의 내용을 따와서 적용하는 외부 레퍼런스가 얼기설기 엮인 게 아니면 크래시가 날 일은 딱히 없으니까요. 거기다가 한국어도 지원한다? 이거 생각보다 쉽겠네 싶었죠.



▲ 몇 개 영어로 되어있긴 하지만 대부분이 한국어라 언어의 압박에선 자유로운 편입니다

구조를 대략적으로 살펴보면 양 사이드에는 말 그대로 지형을 편집해주는 지형편집기, 남이 만든 것을 가져올 수 있는 도구 상자, 스크립트 분석하는 창, 탐색기, 속성 등이 있습니다. 위에는 홈, 모델, 테스트, 보기, 플러그인 등 여타 프로그램과 크게 다른 건 없죠.

탐색기를 살펴보니까 워크스페이스, 플레이어, 라이팅 등 여러 가지가 보입니다. 그 중에서 게임 속 오브젝트와 관련있는 건 워크스페이스라 그쪽을 우선 살펴봤습니다. 오브젝트 아래에는 속성과 스크립트가 물려있습니다.

일단은 그런 생각에 템플릿을 몇 개 돌려봤지만, 언제나 개발 과정은 생각대로 되지 않는 법입니다. 스크립트 말고도 불값을 따로 적용해주는 뭔가가 따로 있었습니다. 우선 간단하게 런 게임이나 해볼까 해서 봤는데, 다음에 이동할 플랫폼을 임의로 배치해주는 기능이 스크립트로 짜여있던 게 아니더군요. 비헤이비어 트리를 스크립트로 안 짜고, 바로 넘겨버리는 그런 기능이 따로 있었습니다.



▲ 보통 우측에 개체, 스크립트가 나오기 마련인데 일부 없는 것들이 있습니다.



▲ 구조상 여기에 뭐가 있는 거 같은데 선생님 이게 뭔지 모르겠어요...

"그런 거 상관없이 기존 트랙만 이리저리 짜맞추면 되지 않아?" 싶지만, 언제나 그렇듯 어설프게 아는 사람이 사고를 치는 법입니다. 처음부터 분해해서 다시 만드는 과정을 써보고 싶다는, 초보로서는 정말 말도 안 되는 짓거리를 생각하고 있으니까요.

그렇다고 해도 코드가 조금이라도 복잡해지는 레이싱이나 컴뱃, 캡처 더 플래그까지는 분해해서 손을 대기는 좀 어려웠습니다. 기본적으로 뭐가 필요할지는 다 알고 있는데, 그 조건 중 일부는 따로 만들어야 했기 때문이죠.



■ 구조를 몰라도 점프 게임은 만들 수 있다


제가 뭔가를 설명하면서 만들 수 있는 건 결론적으로 하나, 가장 간단한 점프 게임(Obby)뿐이었습니다. 스크립트도 그리 많이 요구하지도 않을뿐더러, 디자인만 잘 짜면 심플해도 재미있게 즐길 수 있는 게임이었으니까요. 폴가이즈를 떠올리면 아마 이해하기 쉬울 겁니다. 더군다나 그 디자인을 구현하는 로직 자체도 엄청 복잡하지 않으니, 설명하기도 쉽고요.

아마 그런 걸 엔진으로 만들어야 한다고 하면 캐릭터 움직임부터 서버 관련 기술까지, 기본적인 걸 만드는 것도 문제지만 로블록스는 기본으로 지원하고 있죠. 그래서 남은 건, 레벨 디자인을 어떻게 하고 그에 맞춰서 조건들을 어떤 식으로 구축해나갈 것인지 하는 것이죠.

거창하게 이야기하고 있지만, 사실 점프로 장애물 넘어서 어느 구간까지 가는 걸 구축하는 건 별로 어렵지 않습니다. 심지어 스타팅 포인트에 체크포인트에 함정 블록까지 예제 템플릿에 다 있어서, 그걸 고스란히 베껴서 적용만 해도 될 정도죠. 더군다나 낙사해서 나락으로 떨어지면 죽는 판정을 따로 설정 안 해줘도 자동으로 적용이 되어있어서 구현이 편합니다.






▲ 기본 제공되는 Obby 템플릿만 분해해서 살펴봐도



▲ 맨땅에서 이 정도는 바로 가능합니다

우선 베이스플레이트를 선택한 뒤, 워크스페이스에서 베이스플레이트를 지웠습니다. 그런 뒤에 필드 위에 우클릭-파트 삽입으로 발판을 만들고 우클릭-개체삽입-스폰로케이션만 해줘도 게임이 시작할 때 스타트 포인트와 밟고 가야 하는 발판이 완성되죠. 그 발판에서 벗어나서 떨어지면 바로 죽고요.

여기에 예제로 보았던 'Obby' 템플릿의 킬블록과 체크포인트를 가져오기만 하면 됩니다. 스크립트로 쓴다고 하면, 스크립트 내용을 복사해서 우클릭-파트 삽입으로 발판을 만든 뒤에 우클릭-개체 삽입-스크립트로 스크립트를 넣어서 그 내용을 고스란히 써넣으면 함정과 체크포인트가 완성됩니다. 혹은 도구 상자에 남들이 만들어둔 킬블록과 체크포인트가 있으니, 그걸 갖고 와도 무방하고요.

그거 외에 장애물 피하는 점프 게임을 만들려면 무언가 더 필요하겠지만, 그건 지금 만들고 있는 단계라서 다음에 설명할 수 있을 것 같습니다. 아, 한 가지 꼭 명심할 게 있습니다. 발판이나 함정 파트를 만든 뒤엔 무조건 앵커를 거세요. 안 그러면 떨어져서 사라집니다. 그것만으로도 충분히, 구색은 갖춘 무언가는 만들 수 있을 겁니다.

그리고 한 가지, 로블록스에서는 저장을 할 때 로컬 저장뿐만 아니라 로블록스 서버에 저장하는 기능이 있습니다. 게임을 바로 업로드하는 기능이 아니라 스팀의 클라우드 세이브 기능처럼 계정에 자기가 만든 게임의 정보를 저장해두는 거죠. 그렇게 해서 일일이 로컬 파일을 따로 저장해두지 않아도 로블록스만 있으면 언제든지 불러올 수 있습니다. 그리고 로블록스에 공개 설정을 하기 전까지, 자기가 만들고 있는 걸 남에게 보여지지 않으니 이불킥 걱정 없이 안심하고 개발에 착수해도 됩니다. 전 이미 이불킥각이 반강제로 잡혔지만요.






▲ 기껏 만들어놨는데 왜 없지? 싶으면



▲ 보통은 이 문제입니다(베이스플레이트나 지면이 없을 때 한정). 항상 조심 또 조심



▲ 로블록스에 저장해두면 개발 진도가 계정에 저장되니 다른 PC에서도 작업을 이어갈 수 있습니다

댓글

새로고침
새로고침

기사 목록

1 2 3 4 5