Considere
partition by para ser semelhante aos campos que você group by , então, quando os valores da partição mudam, a função de janela é reiniciada em 1 EDIT como indicado por a_horse_with_no_name, para esta necessidade precisamos de
dense_rank() ao contrário de row_number() rank() ou dense_rank() repita os números que ele atribui. row_number() deve ser um valor diferente para cada linha em uma partição. A diferença entre rank() e dense_rank() é o último não "pula" números. Para sua consulta tente:
dense_rank() over (partition by Username, Game order by ct."date") as "Attempts"
A propósito, você não particiona e ordena pelo mesmo campo; apenas ordenar por seria suficiente se essa fosse a necessidade. Não está aqui.