2010-06-19 8 views
5

Unreal Tournament (1999 또는 2004 버전) CTF 게임 유형의 행동 룰을 테스트하려면 Java로 완벽하게 제어 할 수있는 봇을 만들고 싶습니다.Unreal Tournament 용 봇

인공 지능은 없지만 점프,이 지점으로 이동 등 일련의 명령이 있습니다. 실시간으로 진화 알고리즘을 사용하여 상대방의 깃발로 돌아가 일련의 동작을 전개합니다. 촬영과 같은 복잡한 작업은 없지만 충돌은 피하십시오. 주요 행동은 점프, 달리기, 회전, 이동해야합니다.

게임 보이 API를 사용하여 실제로 봇을 쓰고 Watchmaker와 같은 유전 알고리즘 프레임 워크에 연결하는 방법에 대한 자습서/지침을 찾습니다. 피트 니스 기능에 대한 조건이 거의없고 봇 경로로 진행되었습니다. 나에게 도움이 될만한 튜토리얼을 알고 있습니까?

답변

2

힌트 : 주변을 둘러보기 aigamedev.com 아직 누군가 UT 1 엔진을 사용하고 있는지 확실하지 않습니다.

실제 게임 엔진에 신경 쓰지 않는다면 Quake 3와 같은 오픈 소스 ID 엔진과 관련된 자습서를 찾을 수 있습니다.

+0

사이트 tweber에 감사드립니다. 훌륭한 정보원 인 것으로 나타났습니다. 내 솔루션의 작은 부분이 동작 시퀀스가 ​​전개되어야하는 네비게이션 메쉬와 연결되어 있다고 느낍니다. 나는 모든 FPS 유형의 게임을위한 기능적 봇을 작성하는 단계에 대해 아래에서 위로 설명하는 좋은 자습서를 사냥하고 싶습니다. –

2

실시간 유전자 알고리즘을 적용하려면 일반적으로 상대방 전략의 일관된 교육 집합 (다른 사람들의 경우 더 낫다)을 모으고이 집합을 사용하여 백그라운드에서 적합성을 평가하고 시뮬레이트하는 것이 더 좋습니다 빠른 속도로 게임을 시작하여 합리적인 시간에 적절한 전략을 구할 수 있습니다 (사람이 무작위 전략의 적합성을 평가하는 것은 상상도 할 수 없습니다 - 너무 오래 걸릴 가능성이 큽니다). 이와 같이 구현 된 고전적인 예는 체커 게임이지만 더 복잡한 게임에서도 동일한 전략을 활용할 수 있습니다 (GA 지원 전략이 인간 상대를 물리 치는 미래의 해전의 유명한 예가 있습니다. 세부 사항을 기억할 수는 없지만 그것 위로 및 편집). 일단 당신이 적절한 전략들을 발전 시키면, 당신은 실시간 GA를 발사하여 인간으로부터 배우기를 계속할 수 있습니다.

또한 매우 느린 과정 일 수 있으며 실시간 유전자 알고리즘 사용에있어 가치가 없을 수도 있습니다. 즉, 인간의 상대방으로부터 전략을 수집하고 백그라운드에서 진화를 수행하는 것이 좋습니다. 같은 상대방이 당신을 플레이하는 다음 번에 그를 물리 칠 수있는 전략을 발전 시켰을 것입니다. 많은 사람들이 놀지 않는다면 - 그럴 경우 이해가 될지 모르겠지만 목표가 점점 더 봇을 좋아하는 사람들에게 도전한다면 그것은 내가하는 일일 것입니다. 잠정적 인 전략의 적합성을 평가하는 사람들은 1) 천천히 2) 지루할 수 있습니다. (당신이 관심이 있다면 추상을 통해 대충 훑어 볼 가치) 실시간 유전자 알고리즘을 처리

몇 가지 서류 :

언급할만한 가치가있는 somethi 유사하게 neuroevolution (GAs와 함께 신경 네트워크 진화, NEAT 좋은 예제이며 FPS afaik에 사용되었습니다)를 사용하여 이전에 수행되었지만 훈련 세트 측면에서 고려 사항은 여전히 ​​유효합니다.

+1

와우,이 답변과 링크에 감사드립니다. 제가 GA에 처음 왔음을 이해해주십시오.하지만 이렇게하고 싶은 방식은 무작위로 생성 된 벡터 ei를 갖는 것입니다. 봇 위치를 인코딩하는 문자열 이 벡터로 봇을 시작하고 피트니스를 평가하고 다시 실행하십시오. 봇이 상대방의 깃발을 들고 돌아 오는 순서가 발견 될 때까지 반복하십시오. 내가 달성하려고하는 것을 보여주는 가장 좋은 방법은 원래의 종이를 가리키는 것입니다 [http : //citeseerx.ist.psu. edu/viewdoc/download? doi = 10.1.1.131.5094 & rep = rep1 & type = pdf]. 읽고 생각을 말하십시오. –

+1

이것은 매우 흥미로운 논문이며 마음에 들었던 인코딩은 좋다고 들지만,이 논문에서는 더 나은 게임 전략을 창출하기위한 실시간 기계 학습이 아니라 버그를 발견하기위한 테스트 케이스를 생성하는 것에 대해 이야기합니다. 나는 여전히 훈련 세트를 수집하고 그 훈련 세트에 대해 "오프라인"전략을 발전시켜야한다고 생각합니다. 적어도 내가 선택한 것입니다. – JohnIdol

+0

당신은 실시간 학습의 측면에서 절대적으로 옳습니다. 저의 실수입니다. 처음 시도했을 때 봇 동작의 몇 가지 측면을 측정하는 피트니스 기능 덕택에 무작위 순서를 고려했습니다. 나는 최적의 해결책을 찾기 위해 많은 해결책을 모색하고 싶었다. 그러나 나는 당신의 제안을 받아들이고 게임을하고 진화를위한 몇 가지 시퀀스를 기록하려고 노력할 것 같아요. 더 이상 의견이나 제안이 있으시면 게시하십시오. 다시 답변에 대한 환호. –