멀티 플레이 게임을 만들기 시작했지만 만기가 없어서 여러 가지 방법을 시도했지만 나에게 맞는 느낌이 들지 않습니다. 그래서, 내가 가장 잘 사용해야하는 플랫폼/도구/언어/기술에 대한 조언이 필요합니다. 나는 Photon, AppWrap, Skiller, Gamooga 및 다른 것들을 믿지 않는다고 말해야한다. 나는 그들이 큰 규모가 될 것이라고 믿지 않으며 너무 비싸지도 않을 것이다. 또는 나는 너무 커다 (나는 크기를 의미하지 않는다. 내가 필요로하지 않는 것이 얼마나 많은지를 의미한다). 나의 필요를 위해.빌딩 턴 기반 멀티 플레이 게임 서버
먼저 게임 세션 진행 과정을 간략하게 설명합니다.
- 세 선수.
- 플레이어가 대답하면 다른 플레이어 (있는 경우)가 이미받은 답변을 볼 수 있어야하며 주어진 즉시 답변을 볼 수 있어야합니다. 기본적으로 모든 답변은 실시간으로 다른 고객이 받아야하지만 (부정 행위를 피하기 위해) 우리가 답변 한 후에 만 받아야합니다. 시간이 초과되면 응답하지 않은 사람은 점수를받지 못하고 다음 질문이 실행됩니다.
- 승자를 결정하고 다음 질문으로갑니다. N 라운드 후에 게임 세션을 마칩니다.
둘째, 고려한 몇 가지 요구 사항에 대해 설명하겠습니다.
- 게임은 iOS/Android/Web에서 실행해야합니다. 이렇게하면 HTTP를 기반으로 만들 수 밖에 없습니다.
- Google Cloud Endpoints에 대한 정보를 얻었습니다. iOS/Android/JS SDK, Google Cloud Platform, Google BigQuery 등 다양한 기능을 제공합니다. 그러나 내가 실시간 응답 전달이 필요하기 때문에 적합하지 않은지 (채널 API는 있지만 iOS 용 클라이언트 SDK는없고, 사람들은 그다지 좋지 않다고 말함).
- 그런 다음 Node.js와 긴 폴링 (클라이언트 측 AFNetworking)을 찾았지만 관리하기가 어렵습니다. 클라이언트에게 게임 상태 업데이트를 제공해야합니다 (델타를 보내야합니다). 그렇게하면 각 플레이어마다 모든 변경 사항을 개별적으로 추적해야합니다. 그리고 플레이어가 연결되면 이미 변경 사항이 있는지 확인해야합니다. 그러면 즉시 전송됩니다. 그렇지 않은 경우 '변경'이벤트를 수신 한 다음 전송하십시오. 최종 코드에서는 이해하기가 너무 어색하고 어려워 보이며 올바른 방법을 모릅니다. socket.io는 서버 측에서 더 나은 것을 만들어야하지만 클라이언트 용 iOS SDK는 없습니다.
여기에서 어디로 가야할지 모르겠다. 어떤 도움을 주시면 감사하겠습니다.
> 클라이언트에서 예측을위한 타이머를 사용할 수는 있지만, 부정 행위를 피하기 위해 서버가 타이머에 대한 권한이어야합니다. 하지만 한 클라이언트의 대기 시간이 70ms이고 다른 클라이언트의 대기 시간은 500ms입니다. 그것은 첫째로 불이익을 당할 것임을 의미합니다. 부정 행위를 허용 할 수있는 방법이 있습니까? – bobby
예측을 사용하지 않으면 게임 UI가 세션이 끝났음을 나타 내기 위해 약간 시간이 걸릴 수 있지만 타이머가 끝나면 서버에서 응답을 무시합니다. 인터넷이 너무 느려 타이머가 다 떨어지기 전에 응답을 얻지 못할 수도 있지만 어딘가에 지연을 설명해야합니다. 타이머가 클라이언트에 있으면 해킹하기가 너무 쉽습니다. –
아, 미안, 나는 그 말을 깜빡했다. 질문에 대한 대답은 숫자입니다. 3 명의 선수가 있고 그들의 대답에 따라 각각 1, 2, 3 등을 받게됩니다. 아무도 옳지 않다면, 첫 번째 장소는 그 대답이 가장 가까운 플레이어를 받게됩니다. 가까운 대답이 거의 없다면 첫 번째 장소는 가장 먼저 대답 한 플레이어를 받게됩니다. 따라서, 이런 종류의 상황에서는 레이턴시가 작은 플레이어가 유리할 것입니다. – bobby