Your distance implementation is severely lacking in oversight, none of the players will see each-other and so have nothing to calculate distance with. Hence interest groups. For instance groups, you can send your location to rounding your position to the nearest like 256 multiple or seomthing , and then choosing the nearest 8 cells, looking up the cell's interest zone in a dictionary that you made by indexing all of the possible cells, putting those interest zones when you send your event.
Then comes the hard part of creating and deleting players when you enter new interest zones and leave them and looking up their player data and appearance without having everyone pop in and out of existence and making sure someone isn't out of another player'S interest zone and attempting to shoot at them offscreen but not creating any bullets or things like that
None of the players would see each other if the data area is small,but if the data area is big enough to cover the players screen then expand outwards a little bit it should be fine,since the players would pop into the users interest area before appearing directly on screen,thus preventing players just popping in and out of the users active view range