2010-01-17 5 views
2

Travian과 같은 (또는 Ikariam과 같은) 웹 기반 게임을 만들고 싶습니다. 게임은 PHP 기반 &입니다. 게임 속성의 실시간 업데이트를 어떻게 얻을 수 있을지 궁금합니다.Travian 게임의 4 리소스와 같은 브라우저 게임 속성을 실시간으로 업데이트하는 방법은 무엇입니까?

프론트 엔드의 경우 AJAX 호출 (데이터베이스에서 최신 값 가져 오기)을 사용하거나 가짜 업데이트 (서버와 통신하지 않음)를 사용하여 수행 할 수 있습니다.

백엔드의 경우 PHP cron 작업 (몇 초마다 실행)으로 수행합니까? 그렇다면 누군가 샘플 코드를 제공 할 수 있습니까?

그런데 IIS + FastCGI를 사용하면 문제가 될 수 있습니다.

=== 버전 정보 ===

PHP : 5.2.3

IIS : FastCGI를 6.0

OS : Windows Server 2003의 표준 R2

+2

에서 XMLSocket에 키트 I 등, 트라 비안 확신 당신이 "가짜 갱신과 가치"를 부르는 사용을 사용합니다. 페이지를로드 할 때 현재 리소스 수준 (x)과 증가율 (y)의 두 가지 데이터가있을 수 있습니다. 그렇다면 순수한 자바 스크립트 일뿐입니다. 몇 초에 한 번씩 x에 y를 더합니다. 서버 등을 점검 할 필요가 없습니다. 두 개의 탭을 열어이를 확인할 수 있습니다. 당신의 자원을 하나로 모으고, 다른 자원을 구입하십시오. 두 번째 탭의 구매는 첫 번째 탭에서 공제되지 않습니다. 이 기법의 명백한 단점은 그 부정확성이다. 이점은 단순하다는 것입니다. –

답변

6

정답은 정확한 필요에 따라 다릅니다.

누구나 항상 동일한 속도로 리소스를 사용합니까? 그렇다면 간단한 해결책은 사용자가 얼마나 오래 있었는지를 추적하고 그들이 얻는 비율에 따라 리소스의 양을 계산하고 총 지출 한 리소스의 수를 빼는 것입니다. 속도가 변할 수 있다면 문제가 될 것입니다. 그렇다면이 솔루션을 사용하는 경우 핸들링을 완전히 다시 작성하지 않으면 (예를 들어 아래에있는 것처럼) .

사람이 리소스를 얻을 수있는 속도가 다른 경우 주기적으로 데이터를 업데이트해야합니다. cronjob/예약 된 작업은 모든 사람이 업데이트되었는지 확인하는 데는 효과가 있지만 상황에 따라 각 사용자의 리소스를 업데이트 한 이후의 기간을 측정 한 다음 모든 페이지로드에서 업데이트하는 것이 더 나을 수도 있습니다 자리를 비 웠던 시간에 자원을 얻는 비율을 곱하여 로그인하면 실제적으로 새로운 가치가 필요할 때까지 업데이트를 피할 수 있습니다.

1

당신을 또한 페이지 또는 자바 스크립트가 요청할 때마다 ressources를 계산할 수 있습니다. 마지막으로 업데이트 된 시간을 저장해야합니다.

0

리소스 관리와 같은 Travian의 경우 사용자 리소스를 마지막으로 업데이트 할 때 추적해야합니다. 리소스 값 (페이지 새로 고치기 등)을 읽는 경우 '마지막 업데이트 시간'이후에 얻은 리소스의 양을 추가해야하며 (리소스 필드 및 사용자가 얻는 보니에 따라 다름) 해당 값을 브라우저. 브라우저 스크립트가이 양을 계산하도록 할 수도 있습니다.

이 값은 이 필요하므로 데이터베이스와의 통신이 향상되므로 모든 리소스 양을 어떻게 든 캐싱하는 것이 좋습니다.

사용자가 리소스 필드를 작성하고 마켓을 사용하고 구조체 등을 빌드하면 이러한 종류의 이벤트를 추적 할 수 없기 때문에 리소스의 양 (그리고 '마지막 업데이트 시간')을 업데이트해야합니다. 간단히.

사용자가 브라우저 페이지를 새로 고칠 때마다 새 값을 쓸 필요가 없기 때문에 리소스를 계산하여 데이터베이스로드가 줄어 듭니다. 반올림 오류가 적기 때문에 더 정확합니다.

페이지 새로 고침 사이에 리소스를 늘리려면 Frank Farmer가 설명한 방법이 필요합니다. 리소스 양과 '이득 빈도'를 자바 스크립트에 포함시키고 리소스 양을 늘리십시오.

0

오래된 게시물 일 수도 있지만 바로 Google에서 제공되므로 여기 개발 된 게임의 또 다른 옵션이 있습니다.

플래시 소켓을 사용하여 호스트에서 실행되는 전용 게임 서버에서 실시간 업데이트를받는 클라이언트 측 JavaScript를 사용합니다.

나는 http://devpro.it/xmlsocket/

+0

이 솔루션은 모바일 브라우저에서 Flash가 지원되지 않으므로 제대로 작동하지 않습니다. 또한 최신 브라우저에는 웹 소켓이 있습니다. – Raptor

+0

대답 당시에 XP가 IE 8에서 돌아갈 수 없기 때문에 웹 소켓에 대한 지원이 제한되어 있던 Windows XP를 여전히 실행하는 컴퓨터가 많이 있었기 때문에 3 년 전 모바일 HTML5 지원은 물론 게시를 한 이유는 무엇입니까? 비스타도 IE를 지원할 수있는 IE의 가장 낮은 버전 인 IE 10을 실행할 수 없다는 것은 말할 것도없이, 여전히 여드름이었다. –