Game Design: How to keep players engaged.

1 - Potential fun keeps the player engaged.

Those few words gain deepness in a proper context that I will soon provide, but the key is all around the "Potential", meant as something that still has to happen. We inevitably get bored of games, knowing that the game will advance/evolve/progress by playing, will keep us playing.

2 - Reward after succeeding a trial.

Through the years, the idea of the arcade game that was showing itself to the player "as it is" was not enough anymore. The game itself was not a challenge satisfying enough to keep the player engaged. The introduction of progression in games was a natural evolution. Needless to say, these 2 points soon interconnected and designers started dispensing progression (potential fun) as a reward.

Some examples of these rules.

As an example, I would like to start from "The Binding Of Isaac". The game use randomness at its core with an inventory so vast of options that it feels new every run. The player will find its engagement and will be inspired to keep playing by curiosity, what awaits me in the next run? A Roguelikes, Sandbox or a Systemic game will keep us engaged with its unscripted nature, with the potential of what is possible.
A puzzle game like "Portal" instead, will provide a series of challenges, that will progressively evolve with the introduction of new mechanics. Not only the reward is another challenge but also one that has the potential to manipulate the information that the player holds up to that point.
"Diablo" is the incarnation of these two rules applied. As the loot cycle is indeed a cycle of these two rules: each challenge (each enemy) as the potential for new fun (new loot) that will allow the player to approach new challenges, with their respective potential for new fun, and the cycle goes on. You kill enemies -> you get stronger loot -> you kill stronger enemies -> you get stronger loot -> you kill stronger enemies...

One of the duties of the designer is to balance the content of the game to keep the potential always alive. Even a moment in the game without potential can be enough for a player to leave the game. But showing all the potential of the game immediately can be overwhelming, disallowing the player to enjoy the experience.
At the same time, both players and developers should learn to give the right space to each game. Players should 100% only games that they really like, taking out every bit of fun from a game may result in frustrating moments that can be easily avoided by passing to a new game, there are always new and accessible games awaiting nowadays. Developers instead helped to grow the idea of unnecessary multiplayer or challenges modes, that often stretch the game in a line too thin, showing all the flows of the game out of its comfort zone (Do you remember the multiplayer mode of God of War?). So, designers (and players) should focus more on the quality, not the quantity.