[artificial-intelligence] 팩맨 : 눈은 어떻게 몬스터 홀로 돌아가는가?

나는 팩맨에서 귀신의 인공 지능에 대한 많은 언급을 찾았지만, 팩맨이 귀신을 먹은 후 어떻게 눈이 어떻게 중심 귀신 구멍으로 돌아가는지 언급하지 않았습니다.

내 구현에서 간단하지만 끔찍한 솔루션을 구현했습니다. 나는 어느 방향으로 가야할지 구석 구석에 하드 코딩했다.

더 나은 / 또는 최고의 솔루션이 있습니까? 다른 수준의 디자인에서 작동하는 일반적인 것일 수도 있습니다.



답변

실제로, 나는 당신의 접근 방식이 어떤 길 찾기와 비교하여 거의 제로 실행 시간 비용을 가진 매우 멋진 솔루션이라고 말하고 싶습니다.

임의의 맵으로 일반화 해야하는 경우 경로 탐색 알고리즘을 사용할 수 있습니다-예를 들어 너비 우선 검색은 구현하기 간단합니다.이를 사용하여 게임을 실행하기 전에 각 모서리에서 인코딩 할 방향을 계산하십시오.

편집 (2010 년 8 월 11 일) : 나는 Pacman 시스템 : Pac-Man Dossier 에 대한 매우 자세한 페이지를 방금 언급했으며 여기에 허용 된 답변이 있으므로 업데이트해야한다고 생각했습니다. 이 기사는 괴물 집으로 돌아가는 행위를 명시 적으로 다루지 않는 것으로 보이지만 Pac-Man의 직접적인 길 찾기는 다음과 같은 경우입니다.

  • 다음 교차로로 계속 이동하십시오 (이것은 본질적으로 ‘선택이 주어지면 다음 단계에서 볼 수 있듯이 방향을 바꾸지 않는 방향을 선택하십시오);
  • 교차로에서 방금 나간 출구를 제외하고 인접한 출구 광장을보십시오.
  • 목표에 가장 가까운 것을 고릅니다. 둘 이상의 목표에 동일하게 근접한 경우 첫 번째 유효한 방향을 위, 왼쪽, 아래, 오른쪽 순서로 선택하십시오.

답변

나는 이런 식으로 일반적인 레벨에 대해이 문제를 해결했다. 레벨이 시작되기 전에 몬스터 홀에서 일종의 “홍수 채우기”를한다. 벽이 아닌 미로의 모든 타일은 구멍에서 얼마나 멀리 떨어져 있는지를 나타내는 숫자를 얻습니다. 따라서 눈이 68 거리 인 타일 위에있을 때, 이웃 타일 중 67 거리가있는 타일을 찾습니다. 그렇게하는 방법입니다.


답변

보다 전통적인 경로 찾기 알고리즘에 대한 대안으로 Pac-Man Scent Antiobject 패턴을 살펴볼 수 있습니다 (적절하게 명명 된!) .

스타트 업시 미로 주변의 괴물 구멍 냄새를 확산시켜 눈으로 집을 따라갈 수 있습니다.

냄새가 설정되면 런타임 비용이 매우 낮습니다.


편집 : 슬프게도 wikipedia 기사가 삭제되었으므로 WayBack Machine이 구조되었습니다


답변

Dijsktra ‘s Algorithm 또는 A * algorithm 과 같은 경로 찾기 알고리즘을 살펴보십시오 . 이것이 당신의 문제입니다 : 그래프 / 경로 문제.


답변

작동하는 간단한 솔루션은 유지 관리 가능하고 신뢰할 수 있으며 성능이 우수합니다. 이미 좋은 해결책을 찾은 것처럼 들립니다 …

경로 찾기 솔루션은 현재 솔루션보다 복잡 할 가능성이 높으므로 디버깅이 필요할 수 있습니다. 아마 느려질 것입니다.

IMO가 고장 나지 않았다면 고치지 마십시오.

편집하다

IMO, 미로가 고정되면 현재 솔루션 훌륭하고 우아한 코드입니다. “좋은”또는 “우아한”을 “영리한”과 동일시하는 실수를하지 마십시오. 간단한 코드는 “좋고”우아 할 수 있습니다.

구성 가능한 미로 레벨이있는 ​​경우 처음 미로를 구성 할 때 경로 찾기 만 수행하면됩니다. 가장 간단한 방법은 미로 디자이너가 직접 할 수 있도록하는 것입니다. 나는 당신이 bazillion 미로를 가지고 있거나 사용자가 디자인 할 수 있다면 이것을 자동화하는 것을 귀찮게 할 것입니다.

(외부 : 경로가 수동으로 구성되면 미로 디자이너는 차선의 경로를 사용하여 레벨을 더 흥미롭게 만들 수 있습니다 …)


답변

원래 팩맨에서 유령은 자신의 “냄새”에 의해 노란 알약 먹는 사람을 발견했습니다. 그는지도에 흔적을 남길 것입니다. 유령은 냄새를 발견 할 때까지 무작위로 돌아 다니다가 냄새 경로를 따라 가서 플레이어. 팩맨이 움직일 때마다 “냄새 값”이 1 씩 감소합니다.

이제 전체 과정을 뒤집는 간단한 방법은지도 중앙에 가장 높은 지점을 가진 “유령 냄새의 피라미드”를 갖는 것입니다. 그러면 유령은이 냄새의 방향으로 움직입니다.


답변

팩맨을 쫓는 데 필요한 논리가 이미 있다고 가정하면 왜 재사용하지 않습니까? 대상을 변경하십시오. 동일한 논리를 사용하여 완전히 새로운 루틴을 작성하는 것보다 훨씬 적은 작업 인 것 같습니다.