2010-01-19 4 views
3

플레이어를 동시에 사용하여 많은 웹 브라우저 기반 게임을 보았습니다. 일반적으로 잠시 기다린 후 모든 사람이 게임을하고있는 방에 참여하거나 다른 플레이어와 게임을 할 수 있습니다. 모든 게임에서 Flash를 사용합니다.동시 플레이어가있는 웹 게임

어떻게 달성할까요? 플래시 없이는 매우 복잡할까요?

이 기능을 제공하는 툴킷 (레일 등) 또는 플러그인이 있습니까? 아니면 세션을 저장하고 믹스하는 것일까 요?

그냥 빨리 편집

: I 플래시 나 실버 라이트 솔루션

+0

내가하고있는 게임의 유형에 대해 언급하지 않으려 죄송합니다. 그것은 방대한 게임이 아닙니다. 글쎄, 나는 그것이 대중적으로 인기가 있다고 기대하지 않습니다. 그리고 나는 같은 게임을 동시에 2 명에서 4 명이해야합니다. – Jordi

답변

3

JavaScript 전용 솔루션에는 몇 가지 옵션이 있습니다. 그것들은 모두 AJAX와 관련이 있습니다. (자세한 내용은 AJAX and Client-Server Architecture with JavaScript의 내 대답을 참조하십시오.)

AJAX 폴링, 롱 폴링, COMET 또는 향후 웹 소켓 중 하나를 선택할 수 있습니다. 첫 번째 단계는 AJAX를 이해하는 것입니다. 안락하다면 n 밀리 초마다 새 데이터를 서버에 폴링하도록 폴링 시스템 (setInterval 포함)을 설정할 수 있습니다.

0

에 관심이 아니에요 당신이 사용하고자하는 어떤 기술을 따라 다릅니다. Flash를 사용하면 이와 같은 게임을 만들 수 있으므로 Silverlight를 사용할 수 있습니다. 둘 다 자바 스크립트를 사용하여 마우스 동작과 다른 사용자 입력을 서버에 비동기 적으로 보내 서버의 게임 상태를 업데이트 할 수 있습니다.

플래시 게임 개발의 기사 : http://www.brighthub.com/internet/web-development/articles/11010.aspx

실버 : http://www.brighthub.com/internet/web-development/articles/14494.aspx

1

그것은 당신이 아약스 편안하고있어 게임은 사용자 간의 신속한 상호 작용을 필요로하지 않는 경우 플래시없이 그것을 할 가능 . 그러나 어느 경우 든 서버를 폴링해야한다고 생각합니다. 혜성 http://en.wikipedia.org/wiki/Comet_(programming)에 대해 읽어보십시오.

0

자바 애플릿은 자바 스크립트와 통신 할 수 있습니다 (예 : UI가 HTML & CSS가되도록하려는 경우). 그러므로 이론에서는으로 서명 된 Java 애플릿으로 네트워크 코드를 구현할 수 있습니다. 이 경우 일반 클라이언트 - 서버 모델에 국한되지 않습니다.

+0

저는 RIA 기술에 의존하고 싶지 않다는 점을 생각합니다. – EndangeredMassa

1

어떤 게임을 만들고 싶습니까? 턴 기반 또는 실시간?

소켓을 사용할 수 있고 수천 명의 사용자가 사용할 수있는 플래시 또는 실버 라이트 솔루션에 관심이 없으므로 자바 스크립트를 사용하고 아약스를 사용하여 데이터를 보내고받을 수 있습니다.

본질적으로 소켓과 같은 ajax를 사용하여 보낼 데이터가있을 때까지 서버가 서버에 응답하도록하여 "긴 폴링"하도록 서버에 입력을 보내면됩니다. 유일한 문제는 제한 시간 (~ 30 초)이 지나기 전에 만 연결을 열어 둘 수 있다는 것입니다. 데이터를 자주 앞뒤로 전달하기 때문에 일반적으로 문제는 아닙니다.

fastCGI를 연구하면 게임 서버 데몬이 직접 요청에 응답하도록 할 수 있습니다. 그렇게하면 단일 데이터베이스 연결을 열어 모든 클라이언트를 신속하게 처리 할 수 ​​있습니다. 이것이 필수적은 아니지만 올바르게 구현된다면 실제로 확장 될 수 있습니다.

지금은 개념의 증거가 순진하다고합니다. (덜 순진한 상태로 데이터베이스를 사용하여 PHP 스크립트를 사용하여 데이터베이스 상태를 업데이트 및 수신하는 것보다 순진합니다. 소수의 사용자와 자신의 데이터베이스에 대해서는이 방법이 효과적입니다. 나는 20 명의 클라이언트가 100 ms 업데이트. 물론 그것은 잘 확장되지 않으며 클라이언트 당 초당 10 개의 연결로 데이터베이스를 종료하지만 "작동"합니다.) 기본적으로 자바 스크립트에서 패킷을 생성하고 PHP 스크립트로 보냅니다. 이 PHP 스크립트는 유닉스 도메인 소켓을 열고 데이터를 C++ 데몬에 전달합니다.벤치마킹을하지 않았으므로 규모가 얼마나되는지 말할 수는 없습니다.

편안함을 느낄 경우 플래시 및 소켓 네트워킹을 배우는 것이 좋습니다. Epoll을 Linux에서 사용하거나 IOCP를 사용하여 수백 대의 클라이언트를 호스팅 할 수 있습니다. 과거에 C# 소켓 서버에서 100 개의 클라이언트에 대한 테스트를 수행했으며 작은 패킷의 상수 스트림을 처리하는 CPU가 5 % 미만이었습니다.

관련 문제