2010-02-26 9 views
3

카운터 스 트라이크 (Counter Sstrike), 와우 (WoW) 등의 메소드 게임과 같이 생각합니다. CS에서 당신은 종종 50 핑과 같은 것을 가지고 있습니다, 그 속도로 온라인 MySQL 데이터베이스에 정보를 보낼 방법이 있습니까?많은 게임처럼 빨리 정보를 보내는 방법은 무엇입니까?

현재 내 프로그램에서 요청하는 온라인 PHP 스크립트를 사용하고 있습니다. 그러나 프로그램이 헤더와 정보를 보내고 그 결과를 일반 웹 페이지로 가져와야하기 때문에 이것은 매우 느립니다.

정말 쉽고 빠른 방법이 필요합니까? TCP/IP에 대해 들었습니다. 여기서 사용해야 할 것은 무엇입니까? 그것은 PHP 스크립트를 통해 간접적으로보다 빠른 방법으로 데이터베이스에 연결할 수 있습니까?

+1

태그가 C#이지만 PHP를 사용하고 있습니까? – jvenema

+0

내 응용 프로그램에서 C#을 사용 중입니다. – Phoexo

답변

3

TCP/IP는 세 개의 프로토콜로 구성되어 있습니다 :

  1. TCP
  2. UDP
  3. ICMP

ICMP를 사용하면 네트워크의 다른 컴퓨터에 ping 명령을 사용할 때 사용하는 것입니다.

게임은 CounterStrike와 마찬가지로 이전에 수행 한 작업에 신경 쓰지 않습니다. 그래서 당신이 한 일을 재구성 할 수있는 완벽성에 대한 요구 사항은 없습니다 (경쟁사가하는 일을 테이프로 기록해야하는 이유입니다). 이것은 UDP가 사용되는 것입니다. 데이터가 전달되거나 수신된다는 보장이 없습니다. 그래서 래그가 그런 문제가 될 수 있습니다 - 당신은 이미 죽었고, 당신은 그것을 모르고있었습니다.

TCP는 데이터를 보내고 받도록 보장합니다. UDP보다 느립니다.

빠른 연결을 가지고주의해야 할 많은 일들이있다 - 등 적은 홉,

+0

+1 멋지게 넣는다 - 나는 UDP가 "비 연결형"이며 배달 보장이 없다는 것을 안다.하지만 성능 향상을위한 잠재력을 결코 생각한 적이 없다 .... 훌륭하다! (당신도 역시 kyoryu +1) – NTDLS

+1

일반적으로 게임은받을 필요가 있고 만료되지 않는 메시지에 대해 UDP 위에 신뢰 레이어를 만듭니다. 따라서 이동 업데이트는 신뢰할 수 없게 보내지 만 사망 메시지 나 채팅 같은 메시지는 안정적으로 전송됩니다. – kyoryu

2
이를 위해 UDP를 사용하는 인용 것과 같은

대부분의 게임 (프로토콜 TCP/IP 제품군의 하나.) UDP는 가벼운 무게로 성능이 향상되고 TCP의 신뢰성 기능이 필요 없기 때문에이 애플리케이션에서 TCP를 통해 선택됩니다.

이러한 게임에는 독립 실행 형 클라이언트와 서버가 있으며 일반적으로 C 또는 C++로 작성됩니다. 응용 프로그램이 브라우저 기반이고 HTTP를 통해이 작업을 수행하려는 경우 수명이 긴 연결을 사용하고 쿠키를 포함하여 최대한 헤더를 제거하십시오. Tornado 프레임 워크가 관심의 대상 일 수 있습니다. HTML5 WebSockets을 살펴볼 수도 있지만 광범위한 지원은 여전히 ​​공정한 방법입니다.

Flash, Java, SilverLight와 같은 브라우저 기반 플러그인을 타겟팅하는 경우 UDP를 사용할 수는 있지만 확인해야 할 플랫폼에 대해 충분히 알지 못합니다.

편집 : 또한

언급 할만큼 가치 : 당신의 네트워킹 코드 및 프로토콜이 충분히 there are still things you can do을 최적화되면 높은 핑과 선수들에 대한 경험을 향상시킬 수 있습니다.

3

대기 시간이 중요한 항목에 대한 클라이언트 대 서버? 비 차단 UDP를 사용하십시오.

믿을만한 것들에 대해서는 TCP를 사용하는 경우 비 차단 방식 (select(), non-blocking send 등)으로해야합니다.

UDP를 사용하는 주된 이유는 시간에 민감한 데이터가있는 경우입니다. 즉, 동물의 위치가 떨어지면 무시하고 다음 위치 패킷을 보내면됩니다.

그리고 어떤 고성능 게임도 각각의 모든 호출이 데이터베이스 호출을 해결할 것이라고 생각하지 않습니다. 데이터베이스가 사용되는 경우에도 가끔씩 또는 중요한 이벤트에 데이터를 유지하는 것이 더 일반적입니다.

당신은 Counterstrike 나 비슷한 것을 http의 위에 구현하지 않을 것입니다.

관련 문제