2010-05-14 2 views
3

저는 asp.net에서 작은 브라우저 기반 게임을 개발 중입니다. 플레이어 22 명과 플레이어가 버튼을 클릭하여 방에 들어간 게임 룸을 생각해보십시오. (방에있는 플레이어의 수를 데이터베이스에 저장하고 있습니다.) 방에있는 플레이어의 수가 22 명일 때 메서드를 호출해야합니다. 문제는 방에있는 플레이어의 수를 제어하는 ​​방법을 모른다는 것입니다. 나는 서버에서 항상 실행해야하는 배경 코드가 필요하고 코드가 숫자를 제어하고 함수를 호출해야한다고 생각한다. 그것은 나의 첫 번째 웹 프로젝트 (학교 프로젝트)이고 모두가 나를 도울 수 있기를 바랍니다.브라우저 기반 온라인 게임 질문

답변

0

방에있는 플레이어의 수를 최종 사용자에게 보여 주시겠습니까? AJAX를 사용하여 플레이어의 수를 온라인으로 반환하는 서버의 파일을 쿼리하여 <div> 등을 업데이트 할 수 있습니다. jQuery는 클라이언트 측 코드를 단순화하는 데 도움이 될 수 있습니다.

+0

AJAX '타이머'컨트롤이 여기에 적합 할 수 있습니다. 아마'UpdatePanel'도 사용하십시오. – Brian

+0

실제로 방에있는 플레이어의 수를 최종 사용자에게 보여줄 수 있습니다. 내가하고 싶은 일은 방안에있는 사람들의 숫자가 22 일 때입니다. matchStart()와 같은 함수 (또는 메서드)를 호출하고 싶습니다.그리고이 기능은 2 개 팀 (11x2 명)을 생성하고이 2 개 팀에 선수를 배치하는 식으로 진행됩니다. 그래서 제가하고 싶은 것은 고객 측의 행동이 아닙니다. 최종 사용자에게는 아무 것도 보여줄 필요가 없습니다. 나는 당신이 이번에 바로 얻길 바란다. 나는 그것이 너무 복잡하다고 설명하지만 나는 그것을 쉬운 방법으로 설명하는 방법을 모른다. – Emre

+1

그러나 사용자가 서버 쪽 플레이어 수를 확인해야 할 때 : 사용자가 게임에 입장 할 때를 알 수 있습니다. 모든 사람은 서버의 중앙 기능을 거쳐 현재 번호를 확인한 다음 matchStart() 함수를 호출합니다. html 모델 때문에 최종 사용자에게 메시지를받는 것이 더 까다로운 일일 수 있습니다. – Blindy

0

사용자가 방에 들어가려고 할 때 매우 높은 수준에서 방이 이미 가득 차 있는지 확인해야합니다.

아직 누가 방에 있는지 묻는 질문에 대답하기 시작하면 복잡해집니다. 한 사람이 방에서 떨어질 수있는 모든 사례를 이미 알고 있습니까?

+0

ummm ... 방에 들어가는 사용자는 방에서 나갈 수 없습니다. 그가 방에 합류 할 때 그는 방에서 빠져 나가는 것이 너무 중요하지 않지만 너무 어쨌든 = 감사합니다.) 방의 플레이어 수가 최대인지 아닌지 확인합니다. – Emre

1

아마도 사용자가 방에 들어가거나 퇴실 할 때마다 웹 메소드를 호출 할 것입니다. 맞습니까? 따라서 방의 사용자 수를 업데이트하면됩니다 (적절한 잠금을 설정했는지 확인하십시오). 22 일 경우 원하는 코드를 호출하십시오 (서버에 이미 있으므로). 또한 사용자가 정기적으로 서버를 핑 (ping)하여 서버가 여전히 활성 상태임을 알려야하므로 연결이 끊어 지거나 다른 것이 있으면 방에서 제거 할 수 있습니다.

0

나를 위해 가장 분명하게 드러나는 사실은 게임을 현재 게임과 인라인으로 만드는 것입니다.

서버 (asp.net)와 클라이언트 (silverlight/flash)가 있어야합니다.

응용 프로그램 상태 또는 세션 상태 개체에 저장하여 진행 상황을 관리 할 수 ​​있습니다.

데이터베이스 (SQL 서버 어쩌면)를 사용하여 세션간에 플레이어 진행 상황을 추적 할 수 있습니다. 당신은 애플리케이션 라이프 사이클 같은 것들에주의해야합니다

... http://msdn.microsoft.com/en-us/library/ms178473.aspx

나는 당신이 당신의 서버 기반의 요구 사항 중 하나 ASHX (웹 핸들러) 또는 WCF를 사용하는 것이 좋습니다 것입니다.

클라이언트에서 (여전히 C#을 사용할 수 있기 때문에 Silverlight를 사용한다고 가정) 서버에 연결하여 데이터를 요청할 수 있습니다.

이렇게하면 멀티 플레이어 게임이 온라인에서 작동하는 방식을 시각화하는 데 도움이됩니다.

위에서 제안한 바와 같이 AJAX는 사용자의 요구에 잘 작동하며, 일반적으로 AJAX 요청은 가볍지 만 클라이언트가 각 플레이어에게 효과적으로 제공되므로 전체 해킹을 할 수 있습니다.

이것은 간단한 학교 프로젝트이기 때문에 나는 괜찮을 것이라고 확신하지만.

+0

내 대답에 대한 기타 : global.asax에서 "세션 시작"이벤트를 사용하여 카운터에 추가 할 것을 제안합니다. 응용 프로그램 [ "UserCount"] = 응용 프로그램 [ "UserCount"] ++; 그러면 세션이 끝날 때 반대 방향으로 ... 응용 [ "UserCount"] = 응용 [ "UserCount"] -; 페이지로드 이벤트에서 ... this.Controls.Add (새 LiteralControl ("사용자 개수 :"+ 응용 프로그램 [ "UserCount"]. ToString())); 시작하기 전에 더 많은 기능을 추가하여 복잡하게 만들 수 있습니다. – War