스캔된 몬스터가 죽으면 숏컷 번호를 변경해야 할까?

지난번 트위터를 통해 공유스캔 기능이 더 유효한 게임과 그렇지 않은 게임을 읽다가 스캔 목록에 대한 질문 하나가 떠올랐습니다. 스캔은 캐릭터 주변에서 지정한 종류의 대상을 가까운 순서, 중요한 임의의 순서 등으로 정렬해 버튼으로 만들어 주는 기능입니다. 자동전투 게임에서 자동전투를 끄지 않고 일시적으로 상황에 개입해야 할 때가 있습니다. 이 때 직접 버추얼 패드를 조작할 수도 있지만 스캔된 대상 목록에서 적당한 대상을 터치하면 이 대상에 맞는 공격이나 상호작용 같은 행동을 수행하게 할 수 있습니다. 버추얼 패드를 사용하는 것 보다 훨씬 편리하고 정확하게 대상을 지정할 수 있는 방법입니다.

여기서 문득 질문. 스캔된 몬스터가 죽으면 이 몬스터에게 부여된 변호를 변경해야 할까요? 이전에 스캔 기능이 있는 어떤 게임을 개발할 때 받은 질문인데 생각하고 있지 않던 주제여서 바로 답할 수가 없었습니다. 이럴 때 좋은 대답을 할 수 있었더라면 팀에 신뢰를 줄 수 있었을 텐데 그러지 못했습니다. 나중에 가서야 답을 생각해 보게 됐고 이 과정과 제 결론을 설명하겠습니다.

스캔은 플레이어 주변의 타겟팅 가능한 대상을 미리 설정한 우선순위에 따라 늘어 놓는 것입니다. 이들을 목록으로 만들어 화면 구석에 표시하는데 목록의 어느 하나를 터치하면 그 대상을 타겟팅하고 대상에 맞는 행동을 하기 시작합니다. 스캔 목록에 주변의 여러 몬스터들이 나열된 상황을 생각해 봅시다. 몬스터 대부분과 전투시간은 그리 길지 않습니다. 이 목록에 있는 몬스터 대부분은 금새 썰려 나가고 다음 번 스캔이 일어나기 전까지는 유효하지 않은 정보가 됩니다. 전투 상황에서 스캔 목록의 정보는 시의성이 높은데 자동전투가 조금만 계속되어도 몬스터가 죽어 정보를 변경해야 합니다. 스캔을 다시 수행하기 전이더라도 스캔 목록에 현재 유효한 대상과 그렇지 않은 대상을 바로바로 업데이트 해 줘야 합니다.

이때 죽은 몬스터를 목록에서 제거하고 여기에 맞춰 몬스터에게 할당된 번호를 바꾸면 유저가 의도하지 않은 조작 실수를 하게 만들 수 있습니다. 가령 목록의 다섯 번째 항목에 있는 몬스터를 터치하려고 손가락을 가져가는 순간 두 번째 몬스터가 죽어 목록에서 사라지고 뒤쪽 목록이 한 칸 씩 당겨진다면 유저는 의도하지 않게 다섯 번째 몬스터 대신 여섯 번째 몬스터를 터치할 수 있습니다. 번호도 마찬가지인데 디스코드로 대화하며 사냥 하고 있을 때 파티에 공유된 스캔 목록에서 8번 몬스터를 공격하려는 순간 목록이 업데이트 되면서 8번에 다른 몬스터가 할당되면 엉뚱한 플레이를 하게 됩니다. 시의성이 높은 정보는 정보가 변경될 때마다 바로바로 유저에게 제공하는 정보를 업데이트 해야 합니다. 하지만 정보 업데이트에 의해 유저가 실수할 수 있다면 업데이트 자체를 미루거나 유저가 실수하지 않도록 업데이트 해야 합니다.

자동 스캔 간격이 5초일 때 이전 스캔으로부터 아직 5초가 지나기 전에 목록에 있는 몬스터가 죽어 정보를 업데이트 해야 한다면 전체 목록은 그대로 유지하되 죽은 몬스터 가 표시된 항목을 비활성 상태로 만들고 이 몬스터가 죽었음을 전달하는 편이 좋습니다. 이 때 각 몬스터에게 할당된 번호 역시 바꾸지 않아야 합니다. 스캔 간격인 5초가 되기 전에는 이제 곧 이 목록의 정보가 업데이트 될 예정임을 미리 알려 줘야 하는데 인터페이스 일부를 깜빡이는 방법을 생각할 수 있습니다. 유저가 정보 업데이트를 예상할 수 있고 정보가 업데이트 되었음을 명확하게 전달할 수 있다면 이 시점에는 죽은 몬스터를 제거하고 유효한 몬스터들을 대상으로 다시 번호를 부여해 목록을 만들어도 됩니다. 이 때는 유저가 상황을 예상하고 있기 때문에 정보를 변경해도 실수할 가능성이 현저히 줄어듭니다.

스캔된 몬스터가 죽더라도 다음 스캔 전에까지는 이 몬스터가 차지한 항목을 없애면 안됩니다. 번호를 변경해서도 안되고요. 시의성이 높아 업데이트가 필요한 정보이지만 예정된 스캔 간격 전에 정보를 변경할 때는 조작 실수를 줄이기 위해 함부로 번호나 목록이나 순서를 변경하면 안됩니다. 미리 약속한 업데이트 직전에는 정보가 곧 업데이트 됨을 예고하고 업데이트 직후에는 이 정보가 직전에 새로 업데이트 되었음을 시각적으로 전달해 유저가 새 목록에 대응하도록 해야 합니다.