컴퓨터 과학 과정을위한 실시간 전략 게임을 개발 중입니다. 가장 어려운 측면 중 하나는 클라이언트-서버 네트워킹 및 동기화 인 것 같습니다. 이 주제에 대해 읽었 지만 ( 1500 궁수 포함 ) 다른 모델 (LAN 등)과 달리 클라이언트-서버 방식을 사용하기로 결정했습니다.
이 실시간 전략 게임에는 몇 가지 문제가 있습니다. 고맙게도 플레이어가 취하는 모든 행동은 결정적입니다. 그러나 예약 된 간격으로 발생하는 이벤트가 있습니다. 예를 들어 게임은 타일로 구성되어 있으며 플레이어가 타일을 사용할 때 해당 타일의 값인 '에너지 수준'은 촬영 후 1 초마다 증가해야합니다. 이것은 내 유스 케이스를 정당화 해야하는 매우 빠른 설명입니다.
지금은 서버에 패킷을 보내고 응답을 기다리는 씬 클라이언트를 수행하고 있습니다. 그러나 몇 가지 문제가 있습니다.
플레이어 간의 게임이 최종 게임으로 발전 할 때, (예약 된 이벤트, 앞서 설명한, 말뚝 박기 때문에) 초당 50 개가 넘는 이벤트가 종종 발생하며 동기화 오류가 표시되기 시작합니다. 저의 가장 큰 문제는 고객들 사이의 작은 상태 편차조차도 고객이 결정하는 다른 결정을 의미 할 수 있다는 것입니다. 또 다른 문제 (현재 중요하지 않은)는 대기 시간이 있으며 결과를보기 위해 몇 초, 심지어 몇 초를 기다려야한다는 것입니다.
최종 사용자에게 더 쉽고 빠르며 즐거운 방법으로 사용할 수있는 전략과 알고리즘이 무엇인지 궁금합니다. 이것은 게임당 몇 명의 플레이어와 함께 초당 많은 양의 이벤트를 고려할 때 특히 흥미 롭습니다.
TL; DR이 초당 50 개 이상의 이벤트로 RTS를 작성하는 경우 클라이언트를 어떻게 동기화합니까?