뱀 AI 디자인


9

나는이 gamedev stackechange를 처음 사용했지만 이전에 math 및 cs 사이트를 사용했습니다.

그래서 5 분 동안 5 개의 뱀이 있고 보드가 30x30이고 보드가 30x30이라는 점을 제외하고는 기존 Nokia 뱀 게임과 매우 유사한 5 분 동안 4 개의 다른 뱀과 경쟁 할 뱀에 대한 AI를 만들기 위해 경쟁하고 있습니다. 현장의 여러 가지 작은 장애물.

노키아 게임과 마찬가지로 뱀은 과일에 닿을 때 자라며, 자신이나 다른 뱀이나 벽에 부딪 치면 자랍니다. 게임은 이동 사이에 30ms 지연으로 실행되며 서버는 코드가 분석해야 할 다음 50ms마다 새로운 게임 상태를 보내 다음 이동을 출력합니다.

승자는 게임의 어느 시점에서든 가장 긴 길이를 가진 뱀입니다. 타이 브레이커는 킬로 결정됩니다.

지금까지 내가 한 일은 각 뱀에서 A * 그래프 검색을 구현하여 내 뱀이 사과에 가장 가까운 지 확인하고 사과가 있으면 사과로갑니다. 그렇지 않으면, 나는 다음 사과를 예상하기 위해 뱀이 갈 보드의 빈 영역을 결정하기 위해 깔끔한 작은 알고리즘을 만들었습니다.

이 외에는 뱀이 빠져 나올 수없는 함정에 들어 가지 않도록하기 위해 약간의 생존 가능성 검사가 있으며, 막히면 빠져 나올 수있는 더 좋은 기회가 있습니다.

...

어쨌든, 나는 테스트 서버에서 뱀을 테스트했으며 꽤 잘합니다. 일반적으로 사과가 확실한 경우에만 가고 다른 뱀보다 빨리 자라지 않을 때 공간을 찾는 전략 (일부 뱀은 비슷한 일을하지만 종종 중간 또는 모서리로 이동) 때로는 승리합니다. 이 시련 게임은 생존 가능성에있어 우위를 차지하는 것으로 보이는 동일한 뱀에 의해 때려지지 않는 경우가 많습니다.

그래서 나는 누군가가 내 뱀을 시도하고 향상시켜야 할 아이디어가 궁금했습니다. 아니면 새로운 접근 방식의 아이디어 일 수도 있습니다. 내 기능과 클래스는 훌륭하므로 과감하게 보일 수있는 변경 사항은 그렇게 나쁘지 않아야합니다. 모든 아이디어를 장려합니다.

이견있는 사람?

답변:


5

좋은 방어 전략은 완벽한 모양을 만드는 것입니다 (따라서 머리와 뒷면은 항상 1 간격 떨어져 있고 정사각형 또는 주어진 길이로 형성 할 수있는 모든 것을 만듭니다), 이것은 당신을 꽤 많이 만들 것입니다 뱀이 닫힌 지역에 들어갈 수 없기 때문에 불멸의 존재입니다. 어쨌든 사과가 입에 튀어 나오지 않는 한 절대로 자신을 만날 수는 없지만 공간이 없으면 불가능하다는 것을 상상할 수 있습니다.

사과가 실제로 닫힌 지역에 나타나면 사과하지 말라고 프로그래밍 할 수 있고 다른 뱀은 아마도 그것을 얻으려고 죽을 것입니다. 몇 시간이 지나면 전환하는 방법으로 얻을 수 있습니다 가능한 한 최선을 다해 다시 돌아 오십시오 (약간 까다로운 알고리즘 일 수 있지만 가능한 것 같습니다)

사과를 갈 때 사과가 얼마나 멀리 있는지에 달려있을 것입니다. 어쩌면 당신이 좋은 마진으로 가장 가까운 사람이라면 갈 수 있지만 보수적이지 않으면 시행 착오를 바탕으로 사과를 조정해야 할 것입니다. 좋은 전략이라고 생각합니다.


1
기본적으로 그의 "뱀"은 "거북이"입니다. xD +1 좋은 생각입니다.
Cypher

좋아요 그러나 보드에는 장애물이 있습니다. 따라서 다른 뱀 프로그래머는 장애물이 있는지 확인하기 위해 뱀을 만들었어야합니다 (애플을 둘러싸고있는 벽이나 다른 뱀). 그들은 오지 않고 죽을 수도 있습니다. 이 문제를 피하기 위해 할 수있는 한 가지는 머리와 꼬리 사이에 상당한 간격을 두는 것입니다.
Shashwat

흠 흥미로운 아이디어, 나는 내 뱀이 다음 사과가 스폰되기를 기다리는 동안 매달려있을 때 이와 같은 것을 구현할 수 있다고 생각합니다. haha, 나는 내 입에서 사과가 산란되는 것에 대해 약간 걱정하고 있습니다. 죽음과이 게임들은 종종
한때의

@Ronald 실제로 입안에서 사과가 산란하는 것을 감지하면 안쪽으로 돌아갔다가 바깥쪽으로 돌리고 계속할 수 있습니다 .AI에는 완벽한 반사 기능이 있기 때문에 실제로 구현 방법에 따라 쉽게 고칠 수 있습니다.
Kevin DiTraglia

0

뱀은 전략을 현재 길이에 맞게 조정해야합니다.

매우 긴 뱀은 몸을 사용하여 상대방을 방어 할 수 있습니다. 이것은 벽으로 밀봉해야한다는 것을 의미합니다.

뱀이 북동쪽으로 사과를 가지고 동쪽으로 여행하는 경우 북쪽으로 돌기 전에 벽까지 먼 길을 여행해야하므로 다른 뱀의 가능한 경로는 심각하게 제한됩니다.

  0123456789
a ··········
b ··········
c ········A·
d ··········
e ooooooC···
f o·········
g o·········
h oooooooo··
i ··········
j ··········

머리가 C 인이 뱀은 e8이 아니라 e9에서 북쪽으로 향해야합니다. 따라서 그 아래의 어떤 적도 갇히게되고 'e'줄 위로 스폰되는 사과를 먹을 수 없습니다.

잘릴 수있는 영역이 클수록 길게 붙을 수있을수록 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.