The biggest obstacle to gaming once you’re a fully-fledged adult is scheduling game-time. Job responsibilites, kids’ schedules, family obligations, and participation in other organization (e.g church, Elks Club, getting elected to the School Board) all make scheduling game-time difficult. Speaking only for myself: If my games only ran with 100% participation, I’d be lucky to play once a month!
We always determine what we do with absent players as a group during our Session Zero. My preferred solution: We determine a quorum, and if we meet it for a particular session, the game will run. PCs of absent players will either be absent themselves if it makes sense in the fiction, or will be run as NPCs by the GM. It’s easy to send a PC with an absent player off to run an errand when the party is in a big city, but less so in the middle of a multi-session dungeon crawl. When being run as an NPC, the players have to acknowledge that the GM may opt use that character’s limited-use resources, such as magic potions, and that the character could get killed when their player is not there.
When I run a class/level-based traditional RPG (e.g. D&D/Pathfinder/OSR), I pretty much dispense with XP altogether, and use milestone-based advancement for the whole party, regardless of the individual players’ attendance records. This keeps the entire party at the same power level, so we don’t have the problem of some PCs being over- or under-powered with respect to the rest of the party: Power imbalances between PCs is never fun for the under-powered player, who is more fragile and less able to contribute to the adventure. This made it possible to keep running a megadungeon adventure when one of my players was a single parent of young children, and was only able to attend the game about half the time.