2012-05-21 4 views
3

기술적 인 문제보다 더 많은 조언을 구하기를 바랍니다.html5 멀티 플레이 조언

나는 html5 + js를 사용하여 게임을 개발해 왔으며, 목표는 멀티 플레이어로 만드는 것이 었습니다. 그것은 지하 감옥 크롤링 게임이고 내 의도는 온라인과 마을의 모든 플레이어가 서로를 보면서 이야기하고 파티를 열어 볼 수 있지만 플레이어가 던전에 들어가면 자신과 파티를위한 별도의 인스턴스 인 메인 마을을 갖는 것입니다. 파티의 최대 크기는 4입니다.

제 의도는 웹 소켓을 사용하고 C#으로 서버를 작성하는 것입니다. 문제는 방금 IE가 웹 소켓을 지원하지 않고 브라우저 시장 점유율의 약 25 %를 차지하고 있다는 사실을 알게되었습니다.

내 옵션은 어쨌든 websockets를 사용하고 IE 군중을 잘라내거나 멀티 플레이어 지원을 중단하는 것 같습니다. 다른 사람들은 제가 세계 데이터를 데이터베이스에 작성하고 모든 프레임을 플레이어가 모든 프레임을 읽고 그런 식으로 업데이트하도록 제안했습니다. 그것은 무시 무시한 것처럼 들립니다.

웹 소켓을 사용할 수있는 것처럼 보이거나 다른 방식으로 동일한 처리를 수행하는 것으로 보이는 socket.io의 문제가 발견되었습니다.하지만 어떻게 서버 작성에 영향을 줍니까? C#을 사용하여 websocket과 socket.io를 사용하면 IE 사용자가 내 서버와 대화 할 수 있습니까?

아니면 내가 모르는 클라이언트 -> 서버 통신을하는 다른 방법이있을 수 있습니다.

완전히 솔직히 말해서 나는 멀티 플레이어 아이디어를 떨어 뜨릴 수 있습니다! 그러나 전에 나는 내가 너희들에게 충고하고 내가 이것을 어떻게 처리 할 수 ​​있는지에 대한 경험있는 제안을 찾는다. 시간 내 주셔서 감사 드리며 질문의 이런 종류가 여기에 있습니다. :)

답변

2

멀티 플레이어 아이디어를 삭제하지 마십시오! 멀티 플레이어를 사용하면 더 시원합니다. :)

Socket.io는 서버 측 JavaScript 라이브러리입니다. 즉, 서버에 Node JS 서버가 필요합니다. IE 사용자는 WebSocket을 사용할 수없는 경우 다른 프로토콜을 사용하기 때문에 Socket.io 서버와 통신 할 수 있습니다. 예 : FlashSocket 또는 XHR long-polling. 마지막 기술은 XHR을 지원하는 모든 브라우저에서 사용할 수 있지만 비효율적입니다.

socket.io의 가장 큰 장점은 대체입니다. 웹 서버와 같은 프로토콜로 시작하도록 설정할 수 있으며 클라이언트가 지원하지 않으면 다른 프로토콜을 시도합니다. WebSockets (웹 애플리케이션을 천천히 그러나 확실하게 지배 할 것입니다)을 사용할 수 있고 IE 나 Opera 또는 Safari와 같이 지원하지 않는 브라우저에서도 계속 사용할 수 있으므로 정말 좋습니다. 나는이 장점을 가진 다른 도서관이 있는지 여부를 모른다.

C#의 실시간 연결에 대한 라이브러리를 모르지만 (C# 개발자는 아닙니다) 아무 것도 없습니다 (this question 참조). 또한 실시간 연결은 일반적인 HTTP 요청과는 약간 다른 서버 아키텍처를 필요로하므로 처리를 위해 추가 서버가 필요할 것입니다.

또한 Nginx도 아파치도 WebSockets을 처리하지 못한다고 생각합니다. (노드 JS는 그렇습니다!) 나는 확실하지 않다.

+0

그것은 socket.io가 사용하는 해결책 인 것 같습니다 :) 저는 자바 스크립트에서 서버를 작성하는 것을 피하고 싶었습니다. (C#으로 더 좋고 경험이 많았으며 멀티 스레딩 등을 사용할 수있었습니다) 서버는 이미 노드를 지원하므로 점프 할 시간이되었습니다! 답변 시간을내어 주셔서 감사합니다. –

+0

오페라는 2010 년 10 월 이후 웹 소켓을 지원했습니다. 출처 : http://my.opera.com/core/blog/websockets – MetalFrog

+0

@MetalFrog 위키에 따르면 "it (...) has has 프로토콜의 새 버전이 구현 될 때까지 Opera 11에서 사용할 수 없습니다. " 실제로 그것을 쓸모 없게 만든다. 나는 현재 상황을 모른다. – freakish

0

운반과 같은 간단한 작업을 위해 플랫폼에 스스로를 고정시킬 이유가 없습니다. 이러한 일들에 대한 지원은 시간이 지남에 따라 바뀌며 가능한 한 그들과 자신을 분리하려고합니다. 결국 네트워크 기술 데모가 아니라 게임을 만드는 것입니다.

Orbited/Orbited2 TCPSocket을 살펴보십시오. 원하는 방식으로 표준 TCP로 서버를 작성할 수 있습니다. 또한 네이티브 클라이언트를 만들기로 결정하면 더 쉽게 사용할 수 있습니다.

관련 문제