S Project 개발 로그(P1)

Pied Pipers에서 진행된 두번째 프로토타입은 일반적인 플랫포머(Platformer) 타입의 시스템에 레이싱 요소를 가미한 게임을 개발하는 것이 목표였다. 때문에 속도감을 어떻게 주는가? 가 관건이 된다. 예컨대, 소닉과 마리오 그리고 열혈 운동회의 합작 같은 분위기?

맵은 텍스트 스크립트로 제작

최초 기획서 검토 후,  프로토타입의 스펙은 기본 이동, 기본 액션(점프, 슬라이딩), 고정 장애물 2종을 개발 하기로 결정 하였다. 소요 시간은 약 1주 2일 정도. 멥 에디터 등을 별도로 만들기엔 시간이 빠듯한 고로 JSON 형식을 사용한 스크립트 파일에 직접 작성 하기로 하고, 실 게임 프로그램에 맵 뷰(Map View) 모드를 만들기로 하였다(이후 개발이 진행되면서 이 맵 뷰 모드에서 충돌 관련 코드를 작성하거나 테스트하는데 여러가지 도움이 되었다). 기본적으로 프로그램은 프로그램 종료 할 필요 없이 ‘스크립트 다시 읽기 기능’을 지원 하였기 때문에 작업자는 텍스트 에디터에서 스크립트를 수정한 결과를 바로 프로그램에서 확인 할 수 있다.

개인적으로 학창시절 플랫포머를 몇 번 만들어 본적이 있었고, 하이텔 공모전(아마 그 존재를 아는 사람도 별로 없을것이다)에도 당시 제작한 프로젝트를 발표를 해 보았기 때문에 이번 프로젝트에 대해서는 자신이 있었다. 처음에는 Y 값이 뒤집힌(3D와 같은) 좌표계로 제작 할 생각이었다. 일반적인 데카르트 좌표계의 형식을 쓸 경우, 멥의 최 상단 위로 뛰어 오른다면 사용하는 값이 음수가 되어야 하고, 게다가 멥에디터가 없어 무언가 좌표값을 넣을때도 Y 값을 일일이 확인하여 넣는 것이 싫었기 때문. 하지만, 실제 스크린 좌표와 다르기 때문에 변환을 일일이 해야 했고, 손이 가는 부분이 많아 2일 만에 포기. 평생 알던 좌표계를 하루아침에 다르게 생각하기는 쉽지 않은 일인가 싶었다.

이후, 화면의 확대 축소를 지원하기 위해 카메라 시스템을 추가 하였고 모든 오브젝트는 랜더링 시 좌표를 변환해서 찍도록 하였다. 액터(Actor)를 따라다니는 모드와 고정 모드를 제작 하였고, SF 드라마인 베틀스타 갤럭티카(Battlestar Galactica)의 우주 전투 신에서 보여주는 핸드헬드 카메라 스타일의 카메라 움직임을 보여주고 싶었지만, 1일 작업 후 바로 포기(역시 프로토타이핑의 생명은 빠른 포기다).

대신, 카메라 사용 시 랜더 타겟을 쓰면 화면 분할이 바로 될 것이기 때문에 나중에 이를 추가한다면 좋을 것 같다. 과거 작업했던 2d 프로젝트에서는 바로 찍는 것이 아니라 렌더링 해야할 대상을 리스트 업해두고 한꺼번에 그리는 방식을 채택 했던 적이 있는데, 그것과 함께 좌표를 바로바로 변환하는 것이 아니라 아에 ortho모드 옵션을 손대서 그대로 찍는 방식은 어떨까 하는 생각이다.

게임에서 기대하는 움직임은 실제 물리와 다르다-게임에서의 물리는 마리오로도 충분! © Nintendo

과거에 게임을 제작하던 때와는 환경이 다르기 때문에 기본적인 물리 시스템을 우선 작성하기 시작했다. 처음에는 모든 물리 법칙을 게임 내에 구현하기 위하여 중력, 가속도, 탄성, 마찰 등등… 순서대로 하나씩 넣어가며 작업을 하면 할 수록 원하는 움직임과는 달라 보였고, 때문에 또 쿨하게 2일만에 포기(역시 프로토타이핑의 미덕은 빠른 포기다).  x 와 y의 동작 방식을 별도로 하고, 충돌 방향 및 대상에 따라 어떤때는 값을 깎고 어떤때는 튕겨내고 하는 식의 케이스 바이 케이스(Case by case)로 제작하였다.

버그가 가장 빈번하게 나온 곳은 역시 충돌 처리 부분이었다. 일반적인 3D 공간 에서 충돌 처리를 미리 만들어 둔다는 생각으로 실 계산식을 사용하여 선끼리 충돌하면 충돌점을 구해서 빼주고 하는 작업을 진행 하였는데 이때 멥 뷰어에서 직접 시작점 끝점을 이동 시킬수 있도록 작성한 후 개발하였다.

테스트 할 방법을 준비하고 개발한다. 충분히 테스트 되지 않은 기능은 프로젝트 내내 발목을 잡는다.

개발 전 아무리 기획서 검토를 철저히 하여도, 막상 만들다 보면 다른 부분이 존재 하곤 한다. 결국 다시 기획팀과 논의를 하고, 액션은 점프만, 장애물은 1종만 작성 하기로 결정. 하지만 너무 개발 편의적으로 모든 기능을 처낸것이 문제가 되어 우리가 만들고자 하는 게임의 특성을 적용한 프로토타입이 나오질 못했고, 결국 이후 개발 기간을 추가로 들여 AI 기능을 넣기로 결정하였다.

AI 처리를 하기 위해 기존에 있던 엑터 오브젝트에 캐릭터를 조정하는 컨트롤러를 붙일 수 있게 코드를 수정 하였고, 플레이어용 컨트롤러(입력을 직접 받는)와 AI 컨트롤러 중 필요한 것을 붙이면 되는 방식으로 변경 하였다.

현재 캐릭터는 계속 달리기, 점프, 이중 점프, 부스터의 4가지 액션을 선택할 수 있는데 부스터는 맵에서 별도로 호출하도록 하는 방식이라 AI 처리에서 제외하고 작업을 진행하였다. 땅위에 서있을 때만 AI 를 계산 하였고, 이중 점프를 할 것인가? 에 대한 유무도 미리 결정하도록 하였다. 이중 점프는 가장 높은 지점에서 점프와 내려오기 직전의 위치에서 점프 2종류로 나누었다. 처음에는 앞으로 몇 초간의 지형 정보를 분석해서 처리할 수 있을꺼란 생각이 있었는데, 속도의 증감이 있기 때문에 정확히 어느 위치에 갈 수 있을지에 대한 예측이 힘들기 때문에 구현에 실패하였다.

물론 실제와 동일한 속도 식을 짜면 되겠지만, 추후 코드가 변경 될 경우 양측 다 수정을 해야하는 문제가 있기때문에 코드를 수정하여 시뮬레이션 더미를 만들고 실제로 3개 종류의 점프에 대한 시뮬레이팅을 하였다. 실 개발 버전에서는 시뮬레이션을 하는 횟수를 줄이고, 화면 밖에 있는 캐릭터들은 임의 처리하는 등의 방법을 사용할 예정이다.

AI가 도착할 위치를 표시한다. 가장 좋은 디버깅은 결과를 눈으로 확인하게 하는 것이다.

본 프로토타입은 최초 2주를 예상했던 개발 기간보다 좀 더 지난 2주 4일이 소요 되었다. 배경 및 빌딩 이미지는 디자이너 K가 작업해 주었고, 개발용 샘플 케릭터의 이미지들은 구글링을 통한 임시 작업, 그리고 이펙트 이미지들은 본인이 스스로 제작하였다. AI의 과도한 시뮬레이션으로 인한 최적화 문제가 있고, 특정 상황에 AI가 벽을 넘지 못하고 걸려있는 문제가 최종 P1 릴리즈 버전에서 발견되었다.

주석과 공백을 제외한 순수 프로토타입의 코드는 4794라인, 외부 프로그래머와 프로토 타이핑 및 엔진 개발을 병행하며 약 1.5달 간 작업했던 Moderato 엔진을 사용하였다. 개인적으로는 제작 기간 동안 비주얼 스튜디오에 포함된 프로파일러 사용법을 익혔으며, 엔진의 맥 버전을 지원 하기 위해 맥북 에어를 추가 구매 하였다.

프로토타이핑의 목표

팀과 개발 환경이 꾸려지고 본격적으로 게임에 대한 개발이 시작 된 것은 2011년 2월 중순 부터였으니 벌써 한달여가 지나고 있는 셈이다. 그간 약 35 + α개의 게임 아이디어들, 17개의 구체적인 게임 개발 사양서 그리고 4편의 세부 개발 기획서를 작성하였다. 이 중 프로토타입(Prototype) 제작을 통해 시스템 검증에 들어간 작품이 지난 2월 말 경에 릴리즈 되었고, 곧 두 번째 작품에 대한 프로토타입 제작이 현재 완료 예정에 있다.

프로토타이핑(Prototyping)은 제품 개발시 제품에 대한 실제 사용성을 테스트하기 위해 수행 되는 기법이다. 게임에서의 프로토타이핑은 게임 시스템에 대한 검증을 위해서 수행하거나, 제시된 기획안이 목표한 대로 게임 시스템이 구성되었는 지 확인하기 위한 용도로 쓰일 수 있으며, 세부적으로는 그래픽 디자인의 검증, 연출 등에 대한 검증 등을 위하여 사용 될 수 있다.

Card Game Prototyping
카드를 이용한 프로토타이핑

게임에 대한 프로토타이핑을 만들기 위한 재료나 도구는 꼭 컴퓨터와 프로그래밍 언어를 이용하여 만들 필요는 없다. 단순한 전투 시스템의 검증 정도는 종이와 펜, 그리고 주사위 정도를 이용해서도 가능하다. 실제로 우리의 첫번째 프로토타입의 경우 기존의 카드 게임을 이용한 게임 시스템을 검증하기 위하여 서양식 카드 패와 코인을 이용하여 간단히 게임을 구성하였다. 프로토타이핑을 할 때는 핵심 시스템에 대하여 빠르게 적용 해 볼 수 있는 환경을 구축하고 이를 시연해 보는 것이 중요하기 때문에 재료와 도구에 얽매여서는 안된다.

첫번째 프로젝트 프로토타이핑

카드를 이용한 첫번째 프로토타이핑의 목적은 잘 알려진 카드 게임의 룰이 전투 시스템으로 적당한지에 대한 검증이 주 목적이었다. 카드 게임 룰을 턴제 전투 시스템에 맞게 변형을 하거나 여러가지 실험을 해 보면서 룰을 하나 하나 정의해 나갔고 이 작업이 종료 된 이후 이를 프로그램으로 구현하는 계획을 수립하였다.

약 2주간의 기간동안 진행 된 2차 프로토타이핑은 기본적인 전투 시스템에 대한 구현 및 이에 대한 게임 플레이에 대한 검증을 목표로 하고 있었다. 게임은 단순한 입력을 받고, 카드 게임을 진행하며 이후 판정에 따라서 게임 결과를 보여주는 형태로 구성되었으며, 추가적으로 전투 전/후에 간단한 이벤트 스크립트도 출력되었다.

Project B Ver P2
B 프로젝트 Ver P2

첫번째 프로토타이핑 버전인 P1 버전과 개선 버전인 P2 버전의 제작은 무난히 진행되었다. 하지만 제작 과정과는 다르게 이후 프로토타입 평가에서 문제가 발생하였다. 프로토타이핑의 목표에 대하여 지나치게 뭉뚱그려 잡은 나머지, 정작 프로토타입이 나온 이후 해당 프로토타입을 평가하는 데 있어서 평가 기준이 흔들리는 문제가 발생한 것이다.

단순히 ‘카드 게임을 이용한 전투 시스템을 구현하고 평가한다’라는 프로토타이핑 목표는 단순 명료하여 ‘보기에 좋을 뿐’, 프로토타입 결과를 평가하기 위한 항목을 도출하기에 좋은 목표가 아니었다. 이런 이유로 완성된 P1 버전을 평가하는 데 있어서 기본적으로 ‘이것이 옳은 것인가?’에 대한 판단 조차도 기준이 명확하게 서 있지 않은 상태로 각 개인별로 주관적인 호/불호가 작용하였고, 이는 프로젝트 추가 진행과 관련한 의사결정에 필요한 정보를 적절하게 제공하지 못하는 결과로 나타났다.

구체적인 목표의 명시

프로젝트를 진행함에 있어서 구체적이고 객관적인 목표를 명시하는 것은 단순히 프로젝트의 멋을 위해서가 아니라 그 프로젝트의 진행과 결과를 평가 할 수 있는 척도가 되기 때문이다. 프로토타이핑 역시 마찬가지로 프로토타이핑을 진행하기 전에 먼저 프로토타이핑의 목적을 구체적이고 객관적으로 평가 할 수 있는 형태로 정리해야 한다. 이를 바탕으로 ‘카드 게임을 이용한 전투 시스템을 구현하고 평가한다’라는 프로토타이핑 목표는 다음과 같이 정리 되었어야 했다.

  • 카드 게임의 단순한 룰을 이용한 전투 시스템의 구현
  • 전투 시스템은 최대한 단순하게 구성
  • 전투 중 전략적 행동 선택의 다양화
  • 카드 게임 특성 상 지나치게 운에 의존하는 경향이 있는지 여부 확인
  • 핵심 시스템의 재미 여부와 이를 즐길 대상 층의 판별

구체적이지 못한 목표는 혼란을 야기한다. 프로토타이핑을 진행함에 있어서도 이러한 목표 제시가 정확하지 못하면 최악의 경우 프로토타이핑에 쏟은 시간을 낭비하는 결과를 초래 할 수 있다. 구체적인 목표를 설정하고 그 목표를 바탕으로 진행 과정과 결과를 평가하는 것은 효과적인 프로토타이핑을 위한 기본적인 요소인 것이다.

 

안녕하세요 여러분들?

안녕하세요.

파이드 파이퍼스 엔터테인먼트(Pied Pipers Entertainment) 공식 홈페이지에 오신 것을 환영 합니다.

Hello World

파이드 파이퍼스는 대한민국의 인디 게임 개발 팀으로, 다양한 장르와 플랫폼의 게임들을 제작하고 있습니다.

앞으로 공식 홈페이지를 통하여 게임 개발 관련 소식 및, 게임 개발에 관련한 이야기들을 지속적으로 업데이트 할 예정이니, 많은 관심 바랍니다.

감사합니다.

Pied Pipers Entertainment is an indie game development team.

%d 블로거가 이것을 좋아합니다: