Voglio implementare la gamification nella mia applicazione mobile education. Ho un database con attività dell'utente e voglio analizzarlo e dare badge a un utente. Ci saranno molti badge con condizioni totalmente diverse. Alcuni badge saranno dati una volta, altri ripetutamente.
Il mio approccio attuale:
- tabella badges_awarded che contiene un badge, un timestamp e un argomento stringa contenente l'id dei dati utilizzati per questo premio
- tabella badges_evaluation contenente l'ultima chiamata di ogni algoritmo di badge e data in cui deve essere eseguita nuovamente
- quando l'utente termina un gioco eseguo uno script in background che eseguirà regole di assegnazione. La tabella di valutazione viene utilizzata per saltare alcuni algoritmi che hanno il prossimo tempo di esecuzione in futuro.
- se il gioco ha prodotto alcune condizioni che invalidano le regole di alcuni badge, aggiornerò il loro prossimo tempo di esecuzione nella tabella badges_evaluation (ad esempio un badge che l'utente non fa errore 5 volte di seguito può ricominciare a contare quando un utente ha sbagliato nel gioco ).
Questa tattica riduce alcune valutazioni e query di database. Il gioco funziona su un dispositivo mobile, quindi devo ridurre la complessità il più possibile. Mi piacerebbe leggere alcuni suggerimenti e strategie. È fondamentale progettare questa funzione in modo efficiente.
Un altro approccio rappresenta Fitbit: carica i dati sul server e ricevi i badge indietro. Ma preferisco assegnare un figlio anche offline.
Esempio di badge:
- l'utente ha giocato 3 giorni consecutivi per l'argento e 7 giorni per il distintivo d'oro
- utente non ha fatto errori 10x, 25x o 100 volte di seguito (bronzo, argento, oro)
- l'utente ha terminato una partita in X, Y o Z secondi (bronzo, argento, oro)