본문 바로가기
게임/게임 기획 이야기

[GDStudy] 대난투 스매시 브라더즈 DX 전투시스템 분석 (그리고 역기획에 대한 생각..)

by 알 수 없는 사용자 2009. 2. 22.

 작년 가을 발표를 위해 준비했던 문서와 액셀로 시뮬레이션해본 자료다. 머리가 점점 굳어가고 있어서 뒤적뒤적
꺼내서 공유해 본다. 스터디 한 지도 몇 달이 지났는지 모르겠는 요즘..시간을 꽤나 들여 쓴 것인데도 내용을 20%
도 기억하지 못하고 있었고, 다시 되돌리고 나서야 한 70%쯤을 회복했다. 기획 공부하시는 분들께 도움이 되길
바라며..

 

081028_대난투스매시브라더즈DX_전투시스템분석.pdf




 기획자 지망생들에게 '역기획을 먼저 해보세요!'라고 충고하는 것도 보았고, 실제로 나도 그렇게 충고한 적이
몇 번 있는데, 정작 나는 역기획을 한 적이 없어서 한번 도전해 본 결과물. 게임 시스템 모두를 정리하다가 도저
히 감당이 안 됐다. 다음은 '게임 전체를 하려들지 말고 부분을 자세하게 하라'는 말을 몸으로 느끼게 해 준 두 
가지 사례.

 1. 이동방식은 아날로그 스틱 입력에 따라 매우느림, 느림, 보통, 빠름의 4가지가 있고,이 4가지는 각각 다른 캐
릭터와의 충돌판정이 다르게 처리되기 때문에 일반화했는데, 좀 더 조사하니 캐릭터마다 이동방식의 종류가 4가
지인 캐릭터도 있고 아닌 캐릭터도 있었다. 모든 캐릭터의 것을 테이블화할 수도 있겠지만...GG;

 2. 기본적으로 2단 점프가 가능하고 특정 캐릭터(카비와 푸링)는 5번까지 가능하다. 한 번 점프를 한 상태에서
일반 공격을 하면 다시 한 번 점프할 수 있지만, 회피를 사용하면 더이상 점프할 수 없기 때문에 '최대 점프횟수'
를 파라미터로 정리하려고 하는데, 어떤 캐릭터는 공격을 하고 나면 점프가 불가능하고, 어떤 캐릭터는 공격 후
에도 점프할 수 있었다. 역시나 모든 캐릭터를 조사할 엄두가 나지 않아서 GG..

 초심으로 돌아와서, 이 게임을 역기획하려고 했던 이유가 '누적 데미지에 따른 비거리 증가'시스템이었던 것을
기억해내고 그 쪽을 파기 시작했다. 기본적인 공방을 정리하고 그럴싸한데? 라고 생각했는데 매뉴얼에 다 있는
내용이었다. 아무래도 좀 더 심층적으로 파지 않으면 스터디라고 부를만한 물건이 못 될 듯 싶었다.

 기술마다 데미지를 부여하고, 피격당하는 캐릭터의 누적 데미지를 가중치로 사용하여 날리므로 파라미터는 쉽게 
정리할 수 있었다. 문제는 그래서 '어떻게' 날아가느냐인데, 캐릭터가 포물선으로 날아가는 것을 보면 그냥 포트리
스니까 대략 고각과 장약(포탄을 날리는 화약) 개념을 활용하면 되겠지...하고 생각했는데, 중력은 어떻게 하나? 
뜬구름 잡는 식으로는 생각할 수 있었지만 만들어 본 적이 없으니 참 어려웠다.

 주변에 물어물어 삼각함수를 사용해서 벡터를 분해하는 법을 배우고, 마침 액션게임 알고리즘 매니악스를 루아로 
짜 보던 중이라서, 겨우겨우 X축과 Y축 이동, 그리고 중력(-가속도)를 활용해서 캐릭터가 날아가는 모습을 만들어
볼 수 있었다. 처음에는 날아가는 위치를 기준으로 벡터를 잡고, 거기에 시간을 매겨 속도를 만들었는데, 그냥 속도
벡터를 사용하면 될 일이었다..-_-;

 실제로 기획서를 쓰기 위해서는 만들어 보기 전에 어떻게 동작할 지 시뮬레이션을 할 수 있어야 하는데, 코딩을 하
는 것과 예측값을 잡는 것은 전혀 다른 일이었다. 프레임 당 업데이트 값을 잡으면 포물선으로 날리고, 떨어진 지점
에서의 좌표를 찾으면 얼마나 날아갔는지 알 수 있지만, 코딩하지 않고 알려면 n초 후 속도를 구하는 공식을 사용해
야 했다. (공통과학 물리 시간에 배우는 Vt = V0 + at 어쩌구 하는 그 공식..)

 몇 개의 사이트와 고등학교 물리 문제집을 찾아서야 비로소 아주아주 기초적인 벡터와, 계속 애매하던 속도와 가
속도 개념도 어느정도 잡혔다. 그리고 대략 문서정리. 굉장히 복잡하게 썼지만 기초적인 포트리스를 분해한 수준
밖에 안 되었다. 아, 역시 갈 길은 멀다. (고등학교 때 물리 열심히 공부했으면 알 것을..) 

 장약과 중력 개념은 만들어놓을 수 있었지만, 대체 몇 도로 쏘는지는 알 수가 없었다. 다행히, 대난투는 게임 내
에 에디트 시스템이 잘 갖춰져 있어서, 누적 데미지를 999%로 한 상태에서 맞으면 정확히 45도로 날아가는 것을
확인할 수 있었다. 각도는 가장 멀리 날아가는 것으로 해 두고, 다른 힘들로만 구성되어 있는 것이다. 만세!!!
 (다만, 45도는 횡방향 타격을 입었을 때고, 종방향 타격은 확실치 않다. 약간의 포물선을 그리는 것을 보면 90도 
수직은 아닐 테고, 여튼 더 이상은 파기 힘들어서 발표를 위해 이 쯤에서 접었다.)

 역기획을 하라 역기획을 하라 이야기를 했지만 대체 무엇을, 어떻게 역기획해야 하는가..? 하는 의문을 항상 갖
고 있었는데, 해 보고 나서야 역기획을 하는 방식을 정의할 수 있었다.


 '그 게임을 전혀 해 보지 않은 프로그래머가 문서만 보고 똑같이 만들 수 있는 문서'


라는 거다. 물론 완전히 다 같다는 거야 말이 안 되고, 최대한 근접하게 써야 하며, 애매한 말의 설명보다는 수식
이나 로직 정의가 있어야 한다. (말로만 정의하면 그건 그냥 공략집) 

 아, 근데 또 무언가를 하려니 엄두가 나지 않는다....그래도 또 다시 해야지! 과정이 대단한 것처럼 써 놓았지만 
사실 너무너무 기초적인 내용이기도 하니...다음엔 뭘 해볼까?


아참, 기초물리 자료를 찾다가 발견한 (여러가지 의미로)굉장한 블로그! 앞으로도 자주 들를 생각이다.