Combining it with a rating system sounds the most clean to me. Would reward good performances, while not demanding meaningless grind. So you get a temporary badge for being top 5 %, top 10 % etc. in a particular area (most kills this month, most assists this month) or overall (average score/damage per game maybe). And it is removed if you dip below that rating class and you are instead granted a "lesser" badge. Basing it on single game performance would just encouarge people to gift them "2000 score in a single game, 3000 score, 4000 score" in that game (if you had those types of badges)