[기획] 축구 모바일 게임제작, 불가능은 없다

2005년 4월 본격적으로 개발을 시작했지만, 그래픽 디자이너와 기획자가 투입되지 않은 시점이어서 개발자인 필자가 직접 선수를 그려서 만들고 있었다.


그러던 5월 드디어 기다리고 기다리던 그래픽 디자이너가 투입되었다. 만세를 불렀으나 이게 웬일인가, 지금까지 축구에 대해 별로 관심이 없어서인지, 축구가 몇 명이 하는 경기인지도 모르는 분이었다. 필자에겐 5월에 팀으로 합류한 기획자와 함께 잠시 던전에 내동댕이 쳐진 기분을 느꼈던 거 같다. 하지만 디자인 실력만큼은 최고여서 기획자가 온몸을 던져가며 동작을 설명해주면 정말 멋지게 그려주었다. 그녀의 대활약 덕분에 게임은 현재와 같은 훌륭한 모습이 되었다.

[여기서 그녀의 에피소드 하나]

선수동작 디자인을 위해 수많은 축구 동영상을 보던 디자이너가 정말 재밌는 거라면서 동영상을 던져주었다. 동영상 내용은 골키퍼가 어이없는 실수를 해서 골을 먹는 장면이었다.

- 이하 메신저 대화 내용 -

[필자] 휴가가고싶다 님의 말:

정말 웃긴데요.

♥사커 디자이너 님의 말:

그렇죠? '가지존'이라는 골키퍼가 했다고 하니깐 실제상황이겠죠?

[필자] 휴가가고싶다 님의 말:

네?????

- 메신저 대화 끝 -


'가지존'? 영상만 보고 골키퍼 이름까지 알다니 정말 많이 늘었다고 생각하던 중, 동영상 제목을 보니 '골키퍼가지존'이었다. '골키퍼가 지존(풋~)'등으로 해석 할 제목을 골키퍼 '가지존'으로 읽어주는 센스… 그 동영상의 골키퍼보다 더 웃긴 '디자이너가지존'해프닝이었다.

사실적인 축구 게임을 만들 때 가장 신경 써야 할 부분 중 하나가 공의 움직임이 얼마나 사실적이고 물리적이냐 하는 부분일 것이다. 학교를 졸업한지 오래되어 기본적인 물리 공식이 하나도 생각나지 않아 인터넷을 뒤져가며 열심히 공의 궤적을 만들었다.


열심히 공식을 만들어서 적용하다 보니 몇 가지 문제가 생겼다. 지수, 로그 등 복잡한 계산을 모바일 플랫폼에서 구현하기가 어렵고 소수점 계산이 안되다 보니 계산을 거듭할수록 오차가 눈덩이처럼 커졌다. 또한 숫자가 커지다 보니 overflow 가 수시로 발생했다. 4byte 정수를 사용하는 GNEX 에서도 overflow를 피해가기가 이렇게 어려운데 2byte 정수를 쓰는 GVM에선 도저히 계산이 되질 않았다.

며칠을 고생하며 문제를 피해 그럴듯한 공식을 만들어 내어 '패스'에 적용을 하려고 보니 이번엔 공식을 역으로 계산을 할 수가 없었다. 즉, '패스'를 하려면 '패스'를 받을 상대를 찾고 움직임을 예상해 적절한 위치에 적절한 힘으로 공을 차야 하는데 거리로부터 힘을 구할 수가 없었다. 복잡한 계산이 불가능한 환경 때문이었다.

다시 며칠을 고민하다가 '포춘골프' 개발팀의 조언을 얻어서 간단하면서도 멋진 포물선을 만들어 낼 수 있었다. 개발자인 필자는 스스로 만족하고 있으나 작은 휴대폰 LCD를 통해서 얼마나 게이머들이 리얼하다고 느끼는지는 알 수 없다.

선수 크기를 정하는 것도 상당히 어려운 일이었다. 선수 크기에 따라 구장 크기가 틀려지고 한 화면에 보이는 선수의 숫자가 결정되는데 의견이 제각각이었다. 선수가 작아지면 한눈에 들어오는 선수 수가 많아져서 게임이 편해지지만 캐릭터에 대한 몰입감이 떨어진다.

결국 선수 이미지를 크기 별로 제작하고 그에 맞춰 구장 크기를 바꾸는 어플리케이션을 만들어서 테스트에 들어갔다. 결국 열흘 정도 여러 사람들의 테스트를 거쳐 현재의 크기로 결정되었다. 막상 출시하고 나니 작다는 의견도 있지만 원활한 패스 플레이를 위해 화면에 어느 정도 수의 선수가 표시되어야 했기 때문이므로 이해해 주시길 바랄 뿐이다.

어느 정도 개발이 진행되어 화면에 원근감을 주어야 하는 단계에 접어들었다. 2D 화면에서 원근감을 주기 위해 경기장을 바라보는 카메라의 각도, 경기장 위쪽과 아래쪽의 길이 비율 등 테스트가 진행되었다. 선수가 뛰는 거리나 공이 날아가는 거리도 경기장의 어느 위치에 있는지 여부와 카메라의 위치에 따라서 각각 바뀌어야 했다.

약간은 복잡한 일이었지만 여러 테스트를 하면서 이렇게 저렇게 구현해 보는 것은 개발자에겐 상당한 즐거운 작업이었다. 정확하게 원근감을 구현하려면 한 화면 내에 오브젝트들이 사다리꼴로 배치되어야 한다. 카메라가 X축으로 움직인다면 화면 아래쪽의 오브젝트는 빠르게 움직이고 위쪽의 오브젝트는 천천히 움직여야 한다. Y축도 비슷하다.

경기장 바닥과 벽면을 각각 바둑판 모양의 선으로 구성하여 경기장을 3D 느낌으로 구현하여 게임을 테스트 할 때는 정말 신이 나서 이사람 저사람 불러모아 보여주기도 했다. 하지만 그런 신나는 느낌이 오래가지 못했으니, 선으로 구성된 화면을 이미지로 채울 방법이 없었던 것이다. 폴리곤에 이미지를 채우는 것은 3D 엔진이 할 일이지 개발자가 만들어 낼 순 없었다. 결국 단순화 시켜 게임에 적용하게 되었다.

모바일 게임을 만들다 보면 정말 시간 걸리고 귀찮은 작업 중 하나가 제각각인 LCD 사이즈에 맞춰 게임화면을 구성하는 화면 대응일 것이다. 하지만 여러 가지 물리적인 움직임의 구현이나 각 선수의 AI 구현 등 난제가 많은 축구 게임 개발의 유일한 장점 하나가 있었으니 바로 이 화면 대응이었다.

이미 게임은 정해진 크기의 축구장에서 이루어 지고 있으니 카메라가 있는 위치에서 LCD 크기만큼만 화면에 그려주면 되었던 것이다. 실제로 개발 중에는 전체적인 움직임을 보기 위해 700 * 400 사이즈의 화면에서 테스트를 하곤 했다. 간혹 지나가던 직원들이 큰 화면에 놀라서 뭘 만들고 있냐고 물어오면 PSP 용 게임을 개발하고 있다고 재미없는 농담을 하곤 했다.


2005년 3월 말에 작성된 초기 기획 문서를 게임이 출시된 지금 다시 한번 돌이켜 보니 실제로 구현된 부분도 있고 그렇지 못한 것도 있다. 다양한 슛 동작을 넣고 싶었지만 '용량'의 벽을 넘지 못했고, 각 선수의 구별도 피부색 정도에 그치고 말았다.

특히, 축구 자체의 구현에 매달리다 보니 팀 관리에 관련된 부분에 시간과 용량을 충분히 할애하지 못해 아쉬움이 남는다. 또, 개발 초기부터 게임 속도에 많은 신경을 쓰고 속도 개선을 위한 수많은 테스트를 진행했지만 만족하게 해결 못한 점도 아쉽다. 축구 게임의 특성상 매 프레임마다 전체 화면 갱신이 필요하기 때문에 초당 화면 갱신 속도가 떨어지는 휴대폰에서는 만족스러울 속도를 내기 어려웠다.

출시 후 '모바일에선 괜찮은 축구 게임이다'라는 평이 많았다. 개인적으로 개발하면서 '모바일 게임이니까 이 정도로 구현하면 되겠지'라는 생각은 해본 적이 없다. 실제로 유저가 직접적으로 체감할 수 있는 부분이 아니라도 최대한 사실적으로 구현하려는 노력이 쌓여서 전체 게임의 완성도를 높인다고 생각했기 때문이다.

아직까지는 '모바일에서'는 괜찮은 게임이지만, 다음엔 '모바일에서'라는 테그 없이 최고의 게임이라는 평을 듣기 위해서 더욱 노력해야겠다.

취재협조 : 김진호

KTF 행복한책방 개발, 컴투스사커2006 개발, 현재 컴투스 게임연구팀 개발업무담당


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