2013-05-21 3 views
0

Node.js/Socket.IO에서 작은 게임을 만들고 AI 생성에 대한 조언이 필요합니다. 제가 가지고있는 코드는 제가 생각해 낸 진정한 예입니다 만, 너무 빨라서 플레이어가 클라이언트 쪽에서 적을 움직이는 것을 보지 못합니다. 이 방법으로 올바른 방향으로 가고 있습니까? 그렇지 않으면 더 나은 방법이 있습니까?Node.js/Socket.IO의 기본 AI

감사합니다.

var random; 

setInterval(function() { 
    random = Math.round(Math.random() * 200); 
    move(random, random); 
    console.log("Moving player"); 
}, 10000) 

var move = function(targetX, targetY) { 
    if (x < targetX) { 
     while (x < targetX) { 
      x++; 
      sendNewCoordinates(x, y); 
     } 
    } else if (x > targetX) { 
     while (x > targetX) { 
      x--; 
      sendNewCoordinates(x, y); 
     } 
    } else if (y < targetY) { 
     while (y < targetX) { 
      y++; 
      sendNewCoordinates(x, y); 
     } 
    } else if (y > targetY) { 
     while (y > targetX) { 
      y--; 
      sendNewCoordinates(x, y); 
     } 
    } 
}; 

var sendNewCoordinates = function(newX, newY) { 
    socket.sockets.emit("move enemy", {x: newX, y: newY}); 
}; 
+1

애니메이션은 서버가 아니라 클라이언트에서 발생해야합니다. – SLaks

+0

@SLaks 그래, 고마워, 이것을 게시 한 후 클라이언트에서 바로 수행하는 방법을 생각해 냈다 : P – jskidd3

+0

@SLaks 그러나 약간의 문제는 다음과 같이 가정 해 보겠습니다. 적 측면의 적 - 서버가 적을 이동 좌표로 보냅니다. - 클라이언트 애니메이션 이동합니다. 그러면 충돌을 어떻게 감지합니까? 서버는 최종 목적지가 어디인지 알 수 없으며 현재 위치는 정확히 – jskidd3

답변

1

사실 꽤 좋은 인공 지능입니다. 움직임 사이의 간격을 무작위로 추출하는 것은 이와 같은 일에 매우 쉽고 일반적입니다. 임씨는 호기심이 많으며 무엇이든 시도해보고 싶습니다! 그래도 알아야 할 것은 AI가 TOO이 아닌지 확인하는 것입니다.

코드에서 구현할 수있는 또 다른 한 가지는 목표에서 약간 떨어진 지점에 대해 AI 목표를 설정하는 것입니다. 예를 들면 : 그것이 향하고 위치를 예측하기 위해 이동하기 전에

var move = function(targetX + randomX, targetY + randomY) 

또한 대상의 위치를 ​​사용할 수 있습니다. timeInterval1가 목표 위치의 두 timeInterval2과의 시간 간격 인

var xChange = (targetX2 - targetX1)/(timeInterval1); 
var yChange = (targetY2 - targetY1)/(timeInterval1); 
var move = function(targetX + xChange * timeInterval2, targetY + yChange * timeInterval2) 

현재 위치와 다음의 위치 사이의 시간 간격이다.

키가 AI를 플레이어에게 너무 어렵게 만들지는 않습니다. ;)