Matchmaking is a critical part of online games which is often related to player satisfaction. To pursue a fair user experience, matchmaking mechanisms typically try to put players with similar skill levels into the same game. The traditional process relies heavily on the outcome of the game instead of the in-game performance of players. This paper proposes a new rating system to represent the skill level of both players and teams, along with a new definition to measure the degree of fairness of a matchmaking result. Three clustering methods (K-means, AGG and BKPP) are investigated to perform the matchmaking and the results are evaluated based on the newly-proposed definitions. The matchmaking results generated by the AGG method appear to reach the best degree of fairness. All source codes related to the project are available at https://github.com/WrtTZ/Achieving-Fairness-in-Team-Based-FPS-Games-A-Skill-Based-Matchmaking-Solution.