왜 몬스터 이름 위에 지역 이름이 표시되나요?

제2의나라를 플레이 하다 문득 필드에 있는 몬스터 머리 위 네임플레이트에 몬스터 이름 뿐 아니라 필드 이름이 함께 표시되고 있는 것을 봤습니다. 게임에 따라 몬스터 네임플레이트에 여러 정보를 표시합니다. 몬스터 이름, 남은 체력, 플레이어와 등급 차이, 퀘스트몬스터인지 여부, 칭호 등입니다. 여기에 제2의나라에서는 체력 색상을 통해 몬스터의 속성 정보와 지역 이름을 함께 표시하고 있습니다.

몬스터 네임플레이트에 지역 정보를 표시하는 이유는 같은 몬스터가 여러 지역에 나올 것을 가정했기 때문입니다. 참고로 퀘스트를 자동으로 플레이 하고 있어 실제로 이름이 같은 몬스터가 여러 지역에 나오는지 확인하지는 않았습니다. 퀘스트를 수동으로 플레이 할 때는 이름이 같은 몬스터가 여러 지역에 배치되어 있어도 문제가 없었습니다. 아무데나 가서 이름이 같은 몬스터를 처치하면 됩니다. 반면 자동퀘스트에서는 같은 상황에 생각할 거리가 더 많습니다.

자동퀘스트를 시작하면 여러 지역에 배치된 같은 몬스터 중 어느 몬스터에게 가야 할 지 결정해야 합니다. 이상적인 동작은 플레이어의 현 위치로부터 가장 가까운 몬스터에게 이동하는 것입니다. 하지만 자동퀘스트 및 자동이동이 기본인 세계에서는 가장 가까운 몬스터의 정의가 간단하지 않습니다. 가장 쉬운 방법은 직선 거리 상 가장 가까운 몬스터를 찾는 겁니다. 하지만 지형에 따라 직선 거리는 잘못된 정보일 가능성이 높습니다. 또 존 로딩 방식일 때 다른 존에 있는 몬스터 까지 직선거리를 구할 수 없습니다. 여러 존을 건너 가야 할 경우 존 크기, 존 갯수 등을 함께 고려해야 해서 복잡해집니다.

가까운 순간이동 포인트까지 순간이동 한 다음 걸어갈 거리만 고려할 수도 있습니다. 하지만 대상 몬스터까지 가장 가까운 순간이동 포인트는 게임 진행 상 아직 사용할 수 없을 수 있습니다. (리니지2M의 자리체에 자동이동 할 수 없는 사례) 또 대상 몬스터까지 가장 가까운 순간이동 포인트는 이용 비용이 다른 순간이동 포인트에 비해 높을 수 있어 이를 무작정 자동으로 수행하면 안됩니다. 또 가장 가까운 대상 몬스터가 유저가 원하지 않는 PvP 지역 위에 있을 수도 있습니다. 또 클라이언트가 현재 플레이어 주변 외에는 아무 스폰 정보도 안 가지고 있을 수도 있는데 이 경우 모든 계산을 서버에 요청해야 해서 성능문제가 생길 여지가 큽니다.

이런 복잡한 상황을 꽤 단순하게 만드는 방법은 같은 몬스터를 여러 지역에 배치할 때 몬스터 템플릿 데이터를 지역 별로 복사해 다른 몬스터로 취급하는 것입니다. 이들은 인게임에서 겉보기에는 같은 몬스터 처럼 보입니다. 이들은 데이터 상으로는 완전히 다른 몬스터입니다. 강함, 보상, AI 등을 모두 별도 설정할 수 있습니다. 레벨에 몬스터를 배치할 때 이 레벨 전용 몬스터만 배치합니다. 그 다음 퀘스트가 몬스터를 가리킬 때 지역 전용 몬스터를 가리킵니다. 자동퀘스트가 몬스터를 찾을 때 몬스터는 항상 지정된 지역에 있습니다. 위에서 이야기한 복잡한 고려를 할 필요 없이 항상 지정된 존으로 이동하면 됩니다. 일단 몬스터와 같은 존에 도착하기만 하면 나머지는 단순해집니다.

대신 같은 몬스터가 지역 별로 다름을 알리기 위해 몬스터 네임플레이트에 지역 이름을 함께 표시합니다. 수동으로 플레이 할 때 같은 몬스터를 잡으며 퀘스트 진행이 안 된다고 오인할 수 있는데 이 때 지역 이름을 보고 정상 동작 여부를 판단할 수 있게 됩니다.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s