Crush&Rush 피드백 - 시스템 디자인
서론
처음에 게임 기획이 무엇인지 상상했을 땐, 유닛 간 상성을 구현하는 일(밸런싱)이 주가 되지 않나 싶었다. 가위, 바위, 보의 상관관계(상성)를 구현하는 것. 이것이 콘텐츠 디자인의 일부라 한다면, 나는 완성 시점까지 콘텐츠 디자인에 충분 시간을 투자할 수 없었다.
VR 게임 Crush&Rush를 개발할 때 가장 공을 들인 부분은 시스템 디자인과 그것을 구현하는 일이었다. 총 개발 시간의 80% 가까이를 게임의 전반적인 시스템을 구현하는 데 사용했다. 내게 시스템 디자인은 마치 기계의 작동 원리를 하나하나 묘사하는 설명서처럼 다가왔다. 어처구니없는 것은 그 설명서의 어느 한 군데가 잘못되면 기계가 움직이지 않는다는 점이다!
본론
벤치마킹
내가 가장 먼저 한 일은 벤치마킹한 게임의 유닛이 어떻게 움직이는지 파악하는 것이었다. 대상은 리그 오브 레전드(LOL)의 미니언, 클래시 로얄의 영웅, 타워였다. LOL은 플레이 경험이 비교적 많았기 때문에, 클래시 로얄을 꾸준히 플레이했다. 교육 과정 수료 시까지 4000트로피 가까이 획득했는데, 일설에 따르면 아직 게임을 시작도 안 한 단계라고 한다. 이런 고인물들 같으니라고
소목표 설정
많이 플레이하고 고민해 본 결과, 이제 유닛의 행동 대부분을 글로 묘사할 수 있게 되었다. 그 다음에는 어떤 행동에 어떤 기능을 적용할 것인지 정해야 했다. 이것은 내가 두 달 간 배웠던 Unity 예제들뿐 아니라, 멘토님의 조언을 통해서도 많은 도움을 받았다.
약 2주 남짓, 나는 총 10페이즈에 걸쳐 유닛의 행동들을 테스트했다. 그중 일부를 소개한다.
유닛은 어떻게 움직이는가?(Move)
유닛은 어떻게 타겟을 식별하는가?(Search)
유닛은 어떻게 타겟을 향해 공격하는가?(Attack)
유닛이 데미지를 입으면 어떻게 되는가?(HP)
유닛은 어떻게 소환되는가?(Instantiate)
이와 같은 질문들은 타워와 투사체에도 해당되었다. 단, 유닛을 먼저 제대로 설계한 다음 그것을 조금씩 수정하는 방향으로 나아갔다.
타워의 행동방식(이동 기능은 없고 공격 기능만을 갖는 유닛의 일종)
투사체의 행동방식(생성, 이동, 소멸 기능만 있는 유닛의 일종)
구현 퀄리티의 조정
다음으로는 구현 퀄리티의 상한선을 정해야 했다. 어떤 기능을 간단하게라도 구현했다면, 그것을 보완할 것인지 새로운 과제로 넘어갈 것인지의 문제였다. 하지만 나는 상한선을 제대로 못 정했다. 아니, 못 지켰다. 나는 프로토타입 발표 시한 내 주어진 목표의 70%밖에 완수하지 못했는데, 기능 구현에 대한 본인의 기대치가 굉장히 높았기 때문이다. "아, 내껀 LOL처럼 매끄럽게 움직이지 않는데... 좀만 더 좀만 더." 이 경험을 통해 나는 스스로 얼마나 고집이 센지 알게 되었다. 또, 주어진 기간 안에 러프하더라도 일단 결과물을 내는 것이 더 중요하다는 걸 배웠다.
피드백
마지막으로 자체 피드백이 있다. 내가 디자인한 초기 시스템에는 (어떤 작은 기능 테스트라도) 빠져 있거나 간과된 부분이 있을수밖에 없었다. 한 가지 예로, 유닛의 투사체 문제가 있었다. 화살과 파이어볼은 같이 취급하더라도 전사의 근접공격은 어떻게 처리할 것인가? 이 경우 전사가 공격할 때 투명한 투사체를 날리는 것으로 해결했다. 즉, 모든 유닛은 Arrow라는 하나의 스크립트를 공유하도록 했다. 이렇듯 개발과 기획의 병행 작업은 이미 디자인된 설계도 초안에 꾸준한 피드백을 주었다.
결론
시스템 디자인과 개발을 함께 해 본 것을 바탕으로, 나는 앞으로 게임 기획과 관련된 일을 할 때 개발자와 어떻게 소통해야 하는지 어렴풋이 알 수 있었다. '이거랑 똑같이 만들어 주세요' 라고 말하는 것은 정말 쉽지만, 어떻게how를 설명하지 못한다면 높은 확률로 개발자와 마찰을 빚을 수 있다. 시스템 디자인은 콘텐츠의 틀을 만드는 일이라 할 수 있다. 내가 만약 어떤 게임 기획의 일획을 맡는다면, 가장 조악한 틀이라도 직접 만들어본 다음 개발자와 대면해야 안심할 것 같다.기획자가 개발의 모든 지식을 알아야 하는 것은 아니나, 개발자의 사고에 가까워지는 노력을 한다면 이상적인 협업 환경을 구현할 수 있을 것이다.
Last updated
Was this helpful?