2011-08-02 2 views
2

작은 게임을 개발 중입니다. (Play! 프레임 워크).게임의 점수 및 기록 저장에 좋은 데이터 모델

이 게임에서 플레이어는 기술적 인 질문에 답하고 올바르게 대답하면 점수를 얻습니다. 그 외에도 몇 가지 상을 수여 할 수 있으며 추가 점수를 얻을 수 있습니다. 이것은 SO 배지와 비슷하지만 플레이어가 보너스 포인트를 획득한다는 점을 제외하고는 마찬가지입니다.

나는 지난 주에 대한 "톱 플레이어"를 지난 달 동안 표시 할 수 있기를 원했기 때문에 사용자 점수와 기록을 저장하는 가장 좋은 방법은 무엇인지 궁금합니다. 특히일까요? 가이 (예 : https://stackoverflow.com/users?tab=reputation&filter=week)은 "주 명성 SO 순위"유사합니다 "꼭대기"

오늘은이 : 나는 score 속성, 상점이

  • User 개체, 사용자의 현재 점수;
  • 나는 다음과 같은 특성이있는 사용자에 의해 대답 모든 질문에 넣어 QuestionHistory 엔티티 : user, answeredOn, correctAnswer이 등 (나는 pointsAwarded을 추가 할 수 있지만 순간, 모든 질문에 같은 양을 줄을 전철기).

QuestionHistory 엔티티 덕분에 주어진 시간 동안 한 선수가 얻은 점수를 계산할 수 있습니다. 그러나 보너스 수령 점수는 포함되지 않습니다.

이 사용자에 대한 모든 활동을 저장합니다 내가 예를 UserActivity를 들어, 다른 기업에 의해 QuestionHistory 엔티티를 대체하는 생각

:

그 결과로, 질문에 대답
  • ;
  • 플레이어가 새로운 질문을 제출하면;
  • 수상 할 때;

이 엔티티의 구조처럼 보일 수 있습니다 : 나는 또한 SO 사이트에서 제공하는 것과 같은 활동 내역을 표시 할 수있을 것, 그러한 주체와

@Entity 
public class PlayerActivity extends Model { 

    public User user; 
    public Date activityDate; 
    public ActivityType type; // Define the type of activity: "QUESTION_ANSWERED", "AWARD_RECEIVED", "QUESTION_SUBMITTED", etc. 
    public int score; // Points won by this activity. 

} 

(예 : : https://stackoverflow.com/users/22656/jon-skeet?tab=activity)

당신은 그 새로운 명제에 대해 어떻게 생각합니까? 아니면 그것을하는 더 좋은 방법이 있습니까?

답변

0

당신이 이벤트를 관리하고 있기 때문에 포인트를 계산하는 더 좋은 방법이라고 생각합니다. 사용자에게 보상하는 활동을 확장하려는 경우 "미래 증거"가됩니다.

예, 아마도 이렇게 복잡한 패턴을 발견 할 수 있습니다. 그러나 당신이 제안하는 것은 간단합니다. 그래서 작동합니다. :)

+0

그게 완벽한 해결책은 아니지만, 어쨌든 두 번째 제안부터 시작하겠습니다. – romaintaz

+0

어쩌면 완벽하지 않을 수도 있지만 작동한다면 왜 완벽하게 가고 싶습니까?아마 당신은 그것을 필요로하지 않으며 완벽한 디자인과 구현에 걸릴 것이고 아마도 과잉 될 수 있습니다 :) –