I think the main problem is dangling the "carrot on the stick".
There's a lot of 'completionist' type players out there who play games for the commendations, achievements, numbers, grind.
When the game play itself takes a back seat to just grinding stats, players find ways to 'game' the system.
Going AFK is the laziest way to 'earn' these stats.
Why do players go AFK?
- don't have time to play but want the rewards for progression
- don't enjoy to play but want the rewards for progression
- busy IRL but want the rewards for progression
- forgot to sign out while waiting in the ridiculously long lobby
Why don't players leave?
- forgot to leave
- won't 'earn' anything if they do.
How to encourage playing rather than AFKing?
1. increase or implement rewards for individual actions for actually playing
a. shooting/hitting enemies
b. digging/turning in treasure
c. performing actions on the ship
This code might already be in game (via kick timers) but would need to be more sophisticated (holding one action for too long should equate to AFK or performing one or two actions repeatedly for too long should equate to AFK) to best recognize meaningless, repetitive actions.
2. reduce or remove rewards for crew performance
a. if there were very few or even no rewards for crew performance, there would be no benefit to going AFK. Completionists who go AFK exist because they rely on the stats they can earn off of the rest of the crew. Take that away and AFKers should disappear.