사용자가 개인 채팅방을 만들고 비공개 게임을 시작할 수있는 멀티 플레이어 게임 로비가 있습니다. 각 사용자는 게임에서 초당 x 포인트를 천천히 재생하는 건강 바를 가지고 있습니다.Node.js 비동기 setInterval 게임 루프?
는 내가 그런 일 각 게임의 시작 부분에서 서버 측 게임 루프를 시작해야한다고 가정
setInterval(update('gameID'),1000);
경우 갱신 ('게임 ID')의 모든 선수를위한 건강 변수를 증가 1000 ms = 1 초의 특정한 게임.
질문 : 비동기식이라고 가정하는 것이 맞습니까? 나는 50 개의 게임과 50 개의 게임을 진행할 수 있습니다. 주요 프로세스가 제대로 차단되지 않을까요?
서버 쪽 "updateHealth()"함수를 호출하는 setInterval 클라이언트 측을 갖는 것이 효과적입니까? 또는 헬스 포인트를 수정하는 모든 가능한 동작 (공격, 치료 등)을 계산하고 사용해야 할 때마다 updateHealth()를 호출해야합니다. 그런 다음 동일한 활성 게임에서 모든 플레이어의 모든 건강 값 (최대 4)에 대한 클라이언트 측 예측을합니다. – Legendre
나는 당신이 클라이언트 측 setInterval을 해고해야한다고 생각한다. 클라이언트가 상태를 계산할 수있게하고, 진정한 상태 (및 다른 값)를 평가하고 데이터를 업데이트하는 클라이언트로 다시 전송하는 서버 측의 '동기화'기능이라고 부르는 5 초 (또는 그 이하) 초마다 만들 수 있습니다. 그것이 내가하는 방법이지만, 다른 방법이 더 좋은 방법 일 수 있습니다. – freakish
다른 플레이어를 치유하고 공격하는 것과 같은 작업에서 동기화 기능을 호출해야합니까? 서버는 상태를 업데이트 한 다음 변경 사항을 적용해야합니다. 나는 그 동안 서버로드를 줄이기 위해 재생 간격을 5 초로 변경해야한다고 생각합니다. : p – Legendre