JavaScript에서 멀티 플레이어를 처리하는 방법?


12

모바일 멀티 플레이어 게임에 사용하기 위해 기술에 대한 약간의 연구를하고 있습니다.

현재로서는 좀 더 실험적인 것이기 때문에 플레이어가 알아야 할 유일한 것은 다른 플레이어입니다.

이것이 일반적인 웹 애플리케이션이자 게임이 아니라면 항상 HTTP 요청이 발생하지만 이는 게임이기 때문에 성능과 정확성이 문제가 될 것입니다.

게임이 여러 전화 플랫폼을 대상으로하기 때문에 클라이언트가 JavaScript 또는 JavaScript 기반의 프레임 워크로 작성 될 것이라고 가정 해 봅시다. 서버 기술은 완전히 개방되어 있습니다.

각 플레이어는 HTTP 게시물과 동등하게 만들고 더 빠른 프로토콜 만 사용해야합니다. 멀티 플레이어가 웹을 기반으로하는 이유는 Bluetooth 또는 다른 로컬 네트워킹을 통한 멀티 플레이어가 플랫폼에 따라 너무 다양하여 문제를 일으킬 수 있기 때문입니다.

그렇다면 자바 스크립트 멀티 플레이어에 사용하기에 좋은 프로토콜 / 기술은 무엇인가에 대한 질문입니다. 서버 측에 관한 조언이나 중요한가? 이 2 계층 아키텍처를 삭제하고 전화 대 전화 연결을 직접 사용해야하는 이유는 무엇입니까?

답변:


15

HTTP보다 나은 통신 프로토콜을 원합니다. 아마도 UDP 또는 TCP를 원할 것입니다. 브라우저는 UDP 통신을 수행 할 수있는 방법이 없으므로 TCP 만 선택할 수 있습니다.

TCP의 경우 WebSocket 을 사용하려고 하지만 소켓 에서는 브라우저 지원 이 불안정합니다.

즉, COMET 기술 을 사용하여 TCP를 에뮬레이션해야하며, 가장 인기있는 에뮬레이션은 플래시 응용 프로그램에 내장 된 웹 소켓입니다.

Socket.IO 는 웹 소켓을 지원하고 비준수 웹 브라우저 (플래시 및 기타 COMET 기술을 사용)에서 적절한 폴백으로 에뮬레이트 하는 라이브러리 ( node.js 용 )입니다.

멀티 플레이어 JavaScript 게임의 경우 socket.io 및 node.js의 사용을 권장합니다


1
다음은 HTML5 & WebSockets : rawkets.com으로 만든 실시간 게임 샘플입니다 . 소스 코드는 여기에 있습니다 : github.com/robhawkes/rawkets
Elisée

1
다음은 가지 예입니다
Raynos

4

질문과 대답은 모두 2011 년에 출판되었으며 그 이후로 시간이 크게 바뀌 었습니다. :)

Websocket은 널리 보급되어 있지만 더 나은 기술은 WebRTC로 신뢰할 수없는 UDP 스트림을 허용합니다. 이것들은 게임에 훨씬 좋습니다.

의사 소통 이외에도 게임 상태 조정, 클라이언트 측 예측, 직렬화 및 기타 여러 가지와 같은 멀티 플레이어 게임을 작성할 때 극복해야 할 많은 장애물이 있습니다.

<shameless self promotion>

나는 우리가 언급 한 많은 문제 (및 다른 많은 것들)를 해결 한 node.js를 기반으로하는 멀티 플레이어 게임 서버 / 라이브러리 인 lance.gg 의 최초 개발자 중 하나입니다 . 우리의 목표는 JavasScript 게임 개발자가 멀티 플레이어 게임을보다 쉽게 ​​개발할 수 있도록하는 것입니다. 게임 제작의 출발점으로 사용하시기를 진심으로 초대합니다.

</shameless self promotion>


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.