길찾기질문입니다.
471
작성한 질문수 6
안녕하세요 알고리즘 강의를 다듣고 질문을 드립니다.
이 강의의 방향성이 mmorpg니깐 차후에 관련된 강좌가 올라오겠지만 아직 강의 업데이트 할날이 먼거 같아 미리 질문을 드립니다. a* 길찾기가 많이 쓰이는 알고리즘인건 잘 알고 있는데 mmo같이 광활한 맵(노드수가 엄청 많겠죠)에서는 부하가 상당할 것으로 보입니다. 이부분을 어떤식으로 해결 하는지요? 짧은 거리일 경우는 검사범위를 제한할거 같은데 만약 아주 먼거리를 자동이동 하게 하면 그 광할한 경로를 어떻게 검사를 할까요?
답변 2
3
안녕하세요,
우선 길찾기를 할 대상은 크게 플레이어와 몬스터(NPC, 펫 포함)로 구분할 수가 있습니다.
몬스터의 경우 서버에서 조작하는 개체들이니 길찾기 AI 또한 서버에서 연산을 해야 하는데,
대부분 몬스터들은 어마어마하게 먼 거리를 이동하지는 않기 때문에 depth 제한을 두는 방식으로 부하를 해결할 수 있습니다.
플레이어의 경우 각자 유저의 PC에서 조작하는 개체이기 때문에,
서버에서 굳이 플레이어의 길찾기를 대신 해주지 않고 클라에서 길찾기 연산을 담당하게 됩니다.
실제로 클라가 서버에 전송하는 것은 전체 경로가 아니라,
다음에 이동할 '근시적인' 목적 좌표만 주기적으로 서버에 전송하게 됩니다.
게임에 따라서 자동 이동을 지원하는 경우가 있는데 (특히 오픈필드 모바일 mmo에서 그렇죠)
이 때도 좌표 계산을 서버에 위임하지 않고 클라에서 직접하게 됩니다.
그러나 말씀주신대로 광활한 경로를 노드 기반으로 하나씩 계산하게 되면
길찾기를 할때마다 클라에 렉 걸리는 현상이 일어나겠죠.
따라서 아주 먼 거리 자동이동이 들어가는 게임 (마을 간 자동 이동이라거나)의 경우,
모든 경로를 한 번에 계산하지 않고 다양한 최적화가 들어가게 됩니다.
예를 들면 [검은사X] 같은 게임에서 다른 마을로 길찾기를 찍어놓으면,
일단 큰 길로 이동을 한 다음, 그 큰 길의 경로를 따라가는 것을 볼 수 있는데요.
큰 길로 이동하는 부분은 길찾기를 이용한 다음,
큰 길에서 찍힌 좌표대로 이동을 하는 방식이라고 유추할 수 있겠습니다.
따라서 아주 먼거리를 자동이동 할 때는 실제 최단 거리로 이동하는 경우는 거의 없다고 보면 됩니다.
[러프하게 찍어놓은 좌표로 이동하고 특정 범위 이내가 되면 세부적인 길찾기를 하는] 등의 다양한 방법이 있으며,
사실 정해진 정답은 없다고 보시면 되겠습니다.
참고로 이런 자동 길찾기와 관련된 부분은 프로젝트 초반에 한 명이 담당해서 몇 달 동안 그것만 파는 경우가 많습니다.
이번 시리즈에서의 최종 목표는 바람의 나라 스타일의 간단한 2D 로그라이크 MMO이기 때문에
특별히 그런 장거리 길찾기에 관련된 내용은 다루지 않을 예정입니다.
감사합니다.
게임개발에서 주로 어느부분에 알고리즘들이 쓰이는지 궁금합니다
0
173
2
글꼴 바꿔도 자간이 좁아 찌그러져보이시는 분들
0
88
1
NullReferenceException 예외) 같은 실수하시는분 계실까봐 남겨요
0
66
1
parent를 Pos타입으로 만든 이유
0
74
1
콘솔창에 격자가 안나옴 미로 생성 X
0
133
1
격자 생성 안됨 무한루프
0
114
1
BFS 질문
0
143
2
격자 무한 출력
0
167
2
A* 의 PriorityQueue 관련 질문입니다
0
156
2
vscode에서 원그리기
0
180
1
환결설정 강의 원 그리기
0
122
1
15-17분
0
87
1
3:16초에 근데 이렇게 해가지고 부분에 "{}"를 만들어서 자식 node들을 생성하던데 왜 중괄호로 감싸게 만드는 건가요?
0
141
2
동적 배열 관련 질문입니다!
0
209
1
Big-o 표기법에서 시간 복잡도
0
167
1
7:40에서 언급하신 색상이 날아가는 문제 이해를 못하겠습니다
0
151
1
트리구현연습 강의 질문있어요
0
143
1
창은 뜨는데 맵이 나타나지 않아요.
0
175
1
Ctrl F5 하면 나오는 창은 어디서 설정할까요??
0
271
1
void CalcPathFromParent(Pos[,] parent)에 대해서
0
202
2
NullReferenceException예외가 발생했을때 어떻게 해야하나요?
0
229
1
[해결] 환경설정 강의에서 원이 이상하게 그려지는 문제
3
311
2
오른손 법칙에서 플레이어 점이 안 움직입니다
0
245
2
맵 만들기 오류
0
179
1





