2017-10-01 1 views
0

나는 게임을 만들고있어. 두 사람이 함께 노는 것을 동의하면, 나는 준비하고 시작하기 위해 5 초 동안 화면을 보여주고 싶다.SignalR에서 함께 클라이언트를 시작하는 방법

public class GameHub : Hub 
{ 
    public void AcceptRequest() 
    { 
     Clients.Group("players").GetReadyToPlay(); 
    } 
} 

나는 그 A가 준비 신호를받을 보내,하지만 같은 시간에 시작하도록 그 이후 어떻게 해야할지 모르겠어요.

나는 두 가지 문제를했습니다 :

  • 내가 악의적 인 플레이어가 시작 프로세스를 중단 방지하기 위해 클라이언트 측에서 타이머를 사용하지 않습니다.
  • UTC ( )로 시작 시간을 전달할 수 있지만 클라이언트 시계가 올바르게 설정되지 않았을 수 있습니다. 정확히 을 시작하는 방법 (몇 초가 문제가되지 않음).

내 위의 방법 AcceptRequest, 나는 다음, 준비 5 초 동안 스레드를 잠, 다음 클라이언트에 시작 신호를 보내달라고 신호를 할 수 있습니다. 이것이 어떻게 행해져 야 하는가?

+0

닫기를 결정한 사람은 어떻게 너무 광범위합니까? – Blendester

답변

1

2 명의 플레이어가이 게임 인스턴스에 대해 자신의 그룹에 속해 있는지 확인하십시오.

해당 그룹으로 보내지는 카운트 다운을 시작하고 UI에서 카운트 다운의 값을 표시합니다. 스레드를 자고 카운트 다운하여 클라이언트에게 "5", "4", "3", "2", "1", "Go"를 브로드 캐스트합니다. 최신 정보.

"이동!" 실제로 일치를 시작하는 별도의 브로드 캐스트 방법에있을 수 있습니다.

결국 연결 해제/다시 연결 이벤트와이 이벤트가 어떻게 일치에 영향을 미치는지 처리해야합니다.

관련 문제