In a game with leagues for players with different skill levels, what are some ways to ensure a player can't get a higher-skill level friend to play for them? Want to maintain a good gaming experience for beginners.
There are none. ∆
If a beginning player wants to ruin their experience by having a friend play for them, too bad (or good) for them.
If an experienced player wants to waste their time helping their beginning friend, they'll likely get bored at some point.
Keep in my mind that if a bad player gets boosted by a good player, they'll be clueless when they'll be left on their own with players really too good for them.
∆ You could prevent this by having a closed environment where the players play, like an on-site tournament, but I suppose you don't have access to such infrastructure.
If this is a tournament-like situation (not an ordinary day by day ladder), you can put in some anti-impersonation rules, e.g. ask players to stream their play via Twitch with keyboard and display in view. Of course this is going to work only if there are enough players who agree to over-complicate their plays to such extent to avoid the fear of impersonators.
We had similar case in our game, where high-level players would enter the tournament twice or more (under real and fake identities). If they would have to stream their play, that would have made such behavior much more of a hassle or impossible.