2015-01-26 2 views
0

포인트 및 순위를 실시간으로 계산하는 가장 빠르고 효율적인 방법을 알고 싶습니다.실시간 게임에서 순위를 계산하는 가장 효율적인 방법

나는 축구 경기 (사용자가 전에 게임의 결과를 예측하려고하는 게임)를하고 있습니다. 우리 나라에서는 "키니 엘라"라고 불립니다.

플레이어는 경기가 시작되기 직전에 "예언"을합니다. 내 질문은 : 게임이 시작된 순간부터 게임의 실제 결과에 대한 예측으로 플레이어의 "실시간"순위를 계산하는 가장 효율적인 방법 (코드 수준이 아니라 데이터베이스와 서버) .

예를 들어 :

만약 사의 Team2 심박 측정기가 재생을 대 Team1이 사용자 U1이 게임은 0-0, U2는 게임이 1-0으로 끝날 것 예상 끝날 것이라고 예측, U3는 게임을 할 것이라고 예측 1-1.

경기가 시작될 때 U1은 경기가 끝나면 그의 예측이 정확하거나 적어도 가장 정확하기 때문에 순위에서 1 위가됩니다.

점수가 1-0로 바뀌고 사용자 U1이 (그의 예측이 더 이상 가능하지 않으므로) 순위의 마지막 일 것입니다. U2는 첫 번째 U3 초입니다.

점수가 1-1로 변경되면 U2가 먼저 가고 U3은 결과의 일부를 추측 했으므로 U3가되고 U3가 마지막입니다.

점수를 변경하고 "일시적으로"순위를 변경하면 한 수준 (0-0 첫 번째 노드, 첫 번째 노드는 0-0, 자식 노드는 0-1)의 가능성이있는 나무를 만들려고했습니다. 캐시에.

게임이 끝나면 데이터베이스의 최신 순위를 유지합니다.

이 문제를 해결하는 더 좋은 방법이 있습니까? 이전에 제안되었지만 이미 해결 되었습니까? 데이터베이스 용 MySQL, 서버용 PHP (Cake Php) 및 한 동안 순위를 요구하는 많은 모바일을 사용하고 있습니다. 대한

미안 내 절름발이 영어 = (

+0

비록 질문이 꽤 열려 있긴하지만 이미 할 수있는 알고리즘 (내가 대학에서 보지 못했던 알고리즘)이 있다면 그렇게 할 수 있습니다. 숫자 정렬에 가장 적합한 알고리즘을 묻는 것과 같습니다. 이름이 있다면 (정렬 알고리즘과 같은 경우), 누군가 나에게 말해주십시오. – Fingolricks

답변

1

나는 다음과 같은 접근 방식 사용합니다 :..

는 각 게임 데이 후 현재 순위를 저장할 순위 테이블을 유지를 임시 순위 테이블에 대한 테이블을 복제 할 때마다 gameday가 시작되면 플레이어의 현재 순위를 임시 순위 테이블에 복사합니다 (임시 순위 열을 원래 순위 테이블에 도입하여 두 번째 관계와 복사를 피할 수 있습니다).

게임 점수가 변경 될 때마다 모든 점수를 다시 계산하십시오 게임이 끝나면 일시적으로 다시 순위 테이블에 순위를 매기는 것입니다.

+0

문제는 약 10,000 명의 사용자가 데이터베이스에 과부하가 걸릴 수있는 경우 모든 이벤트에 대해 "임시 열 점수"를 업데이트하는 것입니다. – Fingolricks

+1

행을 10000 개 업데이트해도 문제가되지 않습니다.SQL 및 저장 프로 시저를 사용하여 이러한 "이벤트 업데이트"를 완전히 수행 할 수 있다고 생각합니다. – moo

+0

글쎄, 나는 그것을 시도 할 것이고, 모두 폭발하면 다시 물어볼 것이다. Thx 남자. – Fingolricks

관련 문제