2012-02-27 5 views
1

C/Linux 서버에 연결하는 TCP 소켓을 사용하는 플래시 게임이 있습니다. 게임은 매우 기본입니다. 게임이 대부분 그래픽을 사용하는 텍스트 기반 게임이기 때문에 클라이언트가 속일 수있는 방법은 거의 없습니다.클라이언트 타이머 동기화 - TCP

동기화 타이머 문제 :

게임은 각 클라이언트에 대해 동일 할 필요가 타이머가 (이 전 60초에서 시작하여 0으로 카운트 다운.). 서버가 매 초마다 각 클라이언트에 서버 시간을 보내는 것과 같은 각 클라이언트의 타이머를 시행하는 몇 가지 기본 기술을 생각해 보았습니다.하지만이 작업은 서버 및 많은 대역폭 사용량에 큰 손실이 될 수 있습니다. 누군가 대역폭과 서버 처리 시간을 최소화 할 수있는 동기화 기술에 대한 조언을 해 줄 수 있기를 바랍니다.

이 솔루션은 클라이언트의 시계 사용과 관련이 있다고 생각합니다. 지연 시계가 사용자 시계에 영향을 미칠 것이라고 생각하지 않지만 여기에서 간과 할 수있는 부분이있어 게임의 무결성을 위태롭게 할 수 있습니다.

도움을 주시면 감사하겠습니다.

답변

0

NTP을 고려해 보셨나요? 이것이 바로 "Windows, Network Time"과 Linux가 사용하는 것입니다.

+0

NTP는 새로운 개념입니다. 나는 그것을 조사 할 것이다. 팁 고마워! –

+0

내가 읽고있는 것에서 NTP는 나에게 과잉 공격일지도 모른다. 그것은 UDP로만 보이고 자신의 서버가 필요합니다. 모든 사용자가 자신의 시계로 카운트 다운을 시작하고 두 번째 이상 동기화되지 않는지 확인하는 구현이 필요합니다. –

+0

사실 플래시는 TCP 전용이므로 NTP가 가능한지 확실하지 않습니다. –

0

Netwalk 지연과 같은 모니터 결과에 어떤 영향이 있는지 생각해야합니다. 일반적으로 클라이언트와 서버 모두에서 시뮬레이션이 필요합니다. 클라이언트를 클라이언트 측 예측이라고하며 서버의 시뮬레이션을 클라이언트와 동기화합니다. 입력과 충돌에 의한 게임 개체의 상태를 기록해야합니다. 게임 로직을 실행하기 위해이 메시지를 보내고 지연 시간을 추가하면 "지연 시간"은 다른 플레이어의 동기화가 게임 논리를 실행하여 시뮬레이션 시간에 보장 될 수 있습니다.

TCP를 통해 box2d의 동기화에 도달하는 것은 어렵습니다. P2P를 사용하는 것이 좋습니다.