2010-03-28 7 views
5

Chcę, aby użytkownicy otrzymywali "punkty" za wykonywanie różnych zadań w mojej aplikacji - od takich zadań, jak oznaczanie obiektów do zawarcia znajomości. Nie znalazłem jeszcze aplikacji Django, która to upraszcza.Mechaniki gier społecznościowych w Django

W tej chwili myślę, że najlepszym sposobem na gromadzenie punktów jest to, że każde działanie użytkownika tworzy ekwiwalent "elementu strumieniowego", a punkty są obliczane poprzez zliczanie wartości każdej akcji opublikowanej w ich strumieniu.

Oczywiście mechanika gier społecznych to ogromny obszar, w którym obecnie prowadzone są liczne badania. Ale z perspektywy programowania, jaki jest najłatwiejszy sposób na rozpoczęcie? Czy jestem na niewłaściwym torze, czy też istnieją lepsze/prostsze sposoby?

Edit: dla każdego, kto chce bardzo prostą realizację tego:

Dla każdego, kto byłby zainteresowany w bardzo prosty realizacji tego pomysłu spróbuj utworzyć „Logowanie” aplikacji i umieszczenie tego w models.py :

log_models = [Tag, Post, Vote] 

class Point(models.Model): 
    # model fields 

def increase_score(sender, instance, signal, *args, **kwargs): 
    # score logic 

for model in log_models: 
    post_save.connect(increase_score, sender=model) 
    post_delete.connect(decrease_score, sender=model) 

Patrz tego dokumentu, jeśli okaże się, że post_save emituje dwukrotnie: http://code.djangoproject.com/wiki/Signals#Helppost_saveseemstobeemittedtwiceforeachsave

Odpowiedz

2

pozycję "Stream"? Nigdy wcześniej o tym nie słyszałem.

"Log" ma sens. Wygląda na to, że zamierzasz rejestrować zdarzenia w tabeli. Sumuj lub policz rejestrowane zdarzenia. To najprostsze i najbardziej rozszerzalne.

Możesz podsumować okresowo (co godzinę dla dużych grup społecznych, codziennie dla małych tłumów).