Do desafio ao progresso: XP, skills e conquistas
O fluxo é fácil de entender quando cada etapa tem uma função e o XP é concedido uma vez.
DoesItHold Editorial · · revisado em · progression-pipeline-001
Resposta direta
Infira as skills, conceda o valor da dificuldade uma vez a cada uma, atualize a curva e depois avalie dificuldade, sequência diária e conquistas como efeitos separados.
Um desafio de dificuldade 3 concede 140 XP. Uma skill no nível 1 precisa de 100 XP, então avança ao nível 2 com 40 XP rumo ao marco round(100 × 2^1.5) = 283.
O mesmo resultado pode avançar o primeiro evento válido da sequência no dia local e liberar um marco. Nenhuma ação concede os 140 XP outra vez, e xpReward permanece um campo legado não aplicado.
- 01Resolverum resultado aceito
- 02Inferiridentificar skills relevantes
- 03Premiaraplicar o XP uma vez
- 04Adaptarescolher a dificuldade separadamente
Exemplo mínimo
Deslize para ver todo o código
awardXp(skill, 140)
adjustDifficulty(skill, xpGained: 140)awardXpOnce(skill, 140)
adjustDifficulty(skill, solved: true)O que muda: Uma solução de dificuldade 3 soma 140 XP a cada skill inferida exatamente uma vez; sequência e conquistas observam o resultado sem duplicá-lo.
Método de depuração
Rastreie um identificador de solução por inferência, prêmio idempotente, avanço de nível, escolha de dificuldade e checagem de marcos.
- Verifique o mapa 60/100/140/180/220.
- Envie uma solução e confirme uma mudança por skill inferida.
- Chegue ao nível 5 e confirme progresso de 100%.
- Confirme que o ranking semanal é ordenado somente por solved_count finalizado pelo servidor.
- Verifique que alterar progresso no cliente não muda a posição pública.
Correção incorreta comum
Conceder XP dentro da dificuldade adaptativa duplica a skill principal. Tratar solved_count semanal como XP dá dois significados incompatíveis ao mesmo número.
Limites e casos-limite
Inferência de skill é uma classificação do produto, não uma análise completa do aprendizado. A sincronização ocorre quando possível, e uma mudança local pendente pode demorar a aparecer em outro dispositivo.