Matching is generally done based on experience.
As to logic, for my suggestion, simply add to experience for various actions, such as kills.
As to implementation, whether based on games played or experience, you could have the host set a room name, involving his games played amount, or experience level.
Like, host creates a room called: "deathmatch-10" (set room name: "deathmath-"&user.experience)
when sorting the room lists, you can check the value of the experience level ( int(tokenat(roomname,1,"-")) )
Then you can see the games host experience level before joining .... from there you can either directly allow if your level is higher or equal, or have a range allowed (host level + or - 5)