저는 게임 엔진 (플레이어 이동 등을 계산하는)이 서버에서 실행되는 작은 축구 게임을 디자인하고 있으며 렌더링 및 키보드/마우스 처리는 클라이언트에 의해 수행됩니다. 서버 (하스켈)를 들어 나는 게임 엔진 하스켈에서 게임 엔진과 네트워크 서버를 가장 잘 동기화하는 방법은 무엇입니까?
20ms마다 정도에 대한
- Happstack를 사용하려면, 클라이언트는 키보드와 마우스를 보내야합니다 HTTP GET을 통해 서버에 이벤트를 보내고 현재 게임 상태 (JSON으로 인코딩 된 볼 및 플레이어 위치)를 받아 렌더링합니다. SDL 인프라를 게임 루프, 입력 처리 및 렌더링에 사용하려고 생각하고 있습니다.
서버는 기본적으로 두 개의 스레드를 실행합니다. 대기열 서버는 HTTP GET을 수신하고 대기열에 키보드/마우스 명령을 넣고 두 번째 대기열에서 현재 게임 상태를 읽고 HTTP GET 요청에 응답합니다.
두 번째 스레드는 Yampa Arcade paper에서 설명한대로 Yampa 게임 엔진을 실행합니다. 게임 엔진은 가능한 한 빨리 새 라운드를 계산하고 (틱 없음) 결과를 렌더링 대기열에 넣습니다.
일반 질문 :이 실현 가능한 아키텍처처럼 보입니까?
특정 질문 : 서버 측 렌더링 대기열을 어떻게 디자인 할 것입니까? Chan을 사용하려면 어떻게해야합니까? 게임 엔진이 클라이언트 측의 "똑딱 거리는 것"보다 평균적으로 빠르면 대기열이 길어지고 길어집니다. 이것이 Chan과 어떻게 다룰 수 있습니까?
귀하의 의견은 대단히 환영합니다!
고마워요. 내가 찾고 있던 입력과 비슷합니다. 서버 사이드 렌더링에 관해서 : 저는 게임 엔진이 플레이어와 공의 위치 (단지 X, Y, Z 좌표)를 계산하고 이것을 렌더링 큐와 HTTP를 통해 클라이언트로 보내고 싶었습니다. 나는 여전히 당신의 링크를 통해 모든 방법을 사용해야 만하지만, 이미 이것이 막 다른 골목이 이미 여행 한 것처럼 내게 나타납니다 ... – martingw