자동전투와 자동퀘스트를 구분한 사례
자동퀘스트를 개발하다 보면 퀘스트가 전투시스템에 영향을 주는 상황이 생깁니다. 여느 규모가 큰 개발팀에서 전투를 담당하는 부서와 시스템을 담당하는 부서를 구분해 놓았다면 이 부서들은 서로의 업무에 관여하고 싶지 않아 합니다. 이전 같으면 그렇게 일해도 아무런 문제가 없었지만 모바일 게임에서 자동퀘스트를 개발하다 보면 그럴 수가 없습니다. 자동퀘스트에서 몬스터를 처치하는 목표를 수행하려면 전투를 담당하는 부서가 만들어 놓은 규칙을 건드려야 합니다. 물론 이를 안 건드리거나 최소한으로만 건드리고도 자동퀘스트를 개발할 수는 있습니다. 자동퀘스트 전투 스텝을 자동전투에 의존하는 사례가 그런 결과인데 자동퀘스트는 오직 캐릭터를 퀘스트 지점까지 이동시키기만 하고 이동이 끝나면 자동전투를 켜 퀘스트의 제어를 중단하고 자동전투에 모든 진행을 맡깁니다. 몬스터를 처치함에 따라 ‘우연히’ 퀘스트가 진행됩니다. 다만 자동퀘스트 입장에서는 제어를 다시 가져오지 않으므로 퀘스트 목표를 달성하고 나서도 자동전투를 계속하게 됩니다.
플레이어에게 HUD를 통해 현재 상태를 전달할 때도 자동퀘스트와 자동전투는 자잘한 문제를 만듭니다. 자동전투를 지원하는 모바일 게임의 전투 제어 인터페이스에는 자동전투를 켜는 버튼이 있습니다. 이를 누르면 켜지고 주변의 적을 탐색해 전투를 하고 다시 누르면 꺼집니다. 게임에 따라 즉시 동작을 멈추기도 하고 마지막으로 전투하던 대상을 처치하고 나서 멈추는 경우도 있습니다. 그런데 자동퀘스트에 의해 사냥터까지 이동한 다음 자동전투를 시작하면 표면적으로는 자동전투를 진행중이지만 실은 자동퀘스트에 의해 자동전투가 켜져 자동퀘스트를 수행하고 있는 상태입니다. 하지만 자동전투 인터페이스 입장에서는 퀘스트를 진행 중인지는 잘 모르겠고 그냥 자동전투를 진행 중일 뿐입니다. 그래서 플레이어에게도 자동전투 버튼에 이 기능이 켜진 상태임을 나타낼 뿐입니다.
오딘은 이 상태를 깔끔하게 해결했습니다. 자동전투 버튼을 자동전투가 켜지거나 꺼지는 두 가지 상태를 두는 대신 세 가지 상태를 뒀습니다.
- 꺼짐: 터치하면 ‘자동전투’ 상태가 됨.
- 자동전투: 터치하면 ‘꺼짐’ 상태가 됨.
- 자동퀘스트: 터치하면 ‘꺼짐’ 상태가 됨. 이 상태로 오려면 퀘스트가이드를 터치해야 함.
‘꺼짐’과 ‘자동전투’는 다른 게임과 똑같습니다. 자동전투 버튼을 버치하면 이 두 상태를 오갑니다. 그런데 퀘스트가이드 인터페이스를 터치해 자동퀘스트가 시작되면 자동전투 버튼이 ‘자동퀘스트’ 상태로 바뀝니다. 이 상태에서 이동을 하든 전투를 하든 모두 퀘스트 진행을 위한 것이고 퀘스트시스템에 의해 제어됩니다. 플레이어는 HUD로부터 현재 캐릭터의 움직임이 ‘자동퀘스트’에 의한 것임을 알 수 있습니다. 이 상태에서 퀘스트가이드를 터치하거나 ‘자동퀘스트’ 상태인 자동전투 버튼을 터치하면 자동퀘스트를 멈춥니다. 그리고 자동전투 버튼은 터치할 때마다 꺼짐과 자동전투 상태롤 오가는데 자동퀘스트 상태로 만들려면 자동전투 버튼이 아니라 퀘스트가이드 인터페이스를 터치해야 합니다.
자동전투 버튼에 상태를 추가해 현재 캐릭터가 어떤 시스템에 의해 제어되고 있는지 깔끔하게 표시했습니다. 수많은 시행착오 끝에 이전에 참여했던 한 프로젝트에서 결국 이 동작을 그대로 따라했는데 지금도 그 상태일지는 모르겠습니다.