저는 최근에 빠르게 진행되는 실시간 게임을위한 네트워킹에 대해 생각해 봤습니다. 만약 당신이 올바르게 보간하면 히트 (hit) 계산은 player2 (p2)의 점에서 (p1.interp + p2.interp + p1.ping/2 + p2.ping/2) 전 이상 일어난 상태에서 이루어집니다. 범인이 player1 일 때 봅니다 (p1).게임용 실시간 네트워킹, 보간 문제
패킷은 먼저 p1.ping/2를 취하는 서버로 이동 한 다음 서버는 p1.interp + p1.ping/2 전에 발생한 게임 상태에서이를 계산합니다. 그 계산의 결과는 player2에게 보내지 만, 단지 나중에 보게됩니다. 그것은 3면 모두가 사물을 처리하는 데 걸리는 시간 때문에 더해졌습니다. 불쌍한 내 ASCII 아트 기술을 그러나 나는 저항 할 수 없었다
player1 server player2
| | |
.------|_1.............actual.....|.....game state......|
| | |^ |
|intrp |_2 | | |
| | | | |
`----->|_3----ping/2 | | |
`------|_4----ping/2 |
`------5_|-------.
| |
6_| intrp|
| |
7_|<------‘
변명.
(나는 윈도우가 설치되어 어디 집에 도착하고 나는 여기 보이는 똥 방법을 볼 수 있지만 사람은 아이디어를 얻을 희망) 100ms의 보간 더 이상은 250ms가 요약 우리에게 제공, 50ms의 핑을 가정
. 즉, player2는 player1에 의해 과거에 약 250ms 가량 보였지만, 클라이언트의 prediciton을 가정하면 실시간으로 보게됩니다. 내 논리에 결함이 있느냐, 아니면 큰 문제가 아닌가?
글쎄, 나는 그 ASCII를 고치려고 노력했다. :) –