How to End a Game
You end a book by telling the reader how it ends. You end a movie by showing the viewer how it ends. But a game is different. In the same way that a movie is about showing, not telling, a game is about doing, not showing. Telling a player how a game ends is unacceptable. Showing a player how a game ends is weak. In a book or a movie, the writer or director is the one who causes the ending (it is their ending, not yours). To end a game correctly, the player (not the designer) must be the one to cause the ending (it is the player's ending, not the designer's).
However, even if the player is the one to cause the ending, that is not enough. The player must cause the ending using the primary dynamics of the game. If the primary game dynamic is about crazy, chaotic melee combat, then the player must cause the ending by winning the craziest, most chaotic melee the game can possibly deliver. If the primary game dynamic is about the romance and relationships between the player and the NPCs, then the player must cause the ending through their choices when interacting with those NPCs (resolving the relationships, for good or bad, in the process). The ending of a game needs to reinforce the primary dynamic of the game, not suddenly go a different direction, introduce a new dynamic, or just show the player the ending like a movie would. Ending a fast-paced combat game with a quick-time event is just poor design. It's like ending a serious drama with a comedy skit.
If you want a game to have multiple endings, that is not an excuse to break from your primary game dynamic to give the player a choice of ending A, B, or C. If the player is going to overtly choose the ending, it must be in the context of the primary game dynamic. If the final mission of a combat-heavy game tells me I have to either kill the main villain, destroy the power plant of their base, or free all the slaves they are controlling, then that works. Whichever one I do may just get me ending A, B, or C, but the method of choosing is through the primary dynamic of the game (combat). The choices don't even have be to equal--it could be much, much harder to free the slaves than to take the easy way out and just kill the villain. Note that you should not just be choosing between three different missions here--your choice should manifest itself during gameplay (i.e., you were trying to free the slaves, but you lost too many of your units by the time you got to the base, so you switched to blowing up the power plant instead).
If your game has multiple dynamics, then you should have the player choose which dynamic they want to end the game with. For example, take a sci-fi RPG with three primary dynamics: third-person tactical combat, diplomatic/political/strategic maneuvering, and personal/romantic relationships with NPCs. At the climax of the game, the player would be presented with three possible choices:
- Heroically fight the main villain in a final epic battle that requires every bit of skill the player has to win. This must be an absolutely epic fight, using the best weapons, abilities, allies, etc. that the player has. It might take a lot of tries to win this fight, but the player must feel their victory when it comes, not just observe it. Any cut-scenes here must just be wrap up or epilogue, not the final blow to the boss, which the player must do themselves, in-game. The player could very well die in this fight, even if they win. The goal here is to make the player feel like a truly epic hero. Not to just be told they are an epic hero, but for them to feel it--no cut scene necessary.
- A complex discussion/negotiation with the AI that runs everything (think Deus Ex or Mass Effect) with the fate of the world/galaxy determined by your choices in a long dialog tree (with poor choices potentially leading to disaster). The exact dialog you get and the choices you have are based heavily on the diplomatic/political/strategic choices you made earlier in the game. For example, if you saved the planet that the bad guys from act one came from (instead of letting it be destroyed, which you would have been completely justified in doing), then the AI will give you different choices based on that. The goal here is to reveal lots of hidden information about how the world/universe works, making the player suddenly realize the significance of previous events, and generally doing your best to blow the player's mind (while still being consistent with the universe you have established).
- A final conversation with the NPCs the player is closest to. This conversation resolves the relationships, with secrets being revealed, choices being made, hearts being broken, etc. How the player deals with all this determines how the world/galaxy is saved (through friendship, loyalty, love, etc.--like the ending of The Fifth Element), who sacrifices themselves for whom, who lives happily ever after, etc. There is no way to "lose" this ending. The choices and conversations here are simpler than the previous option and are designed for maximum emotional impact. If half your players aren't in tears, you still have work to do.
Note that a player doesn't need to know how their choices will change the plot of the game (and making that clear to them usually feels very clunky). They just need to be able to choose what dynamic matters most to them (they know whether they care most about the game's combat, its politics and world, or its characters and relationships). This gives the player an action ending, a thinking ending, and a feeling ending. Also, all three endings are based heavily on the player's previous actions and choices. In the action ending, your choice of weapons, abilities, allies, etc. are absolutely critical. In the thinking ending, your diplomatic/political/strategic choices determine what you can do. In the feeling ending, everything is about the handful of characters you care about the most. This is real choice, because the choices matter to the player (remember, it is their ending, not the designer's).
Even if you've done all this, don't forget the epilogue. Don't just end the game right after the big finale. You still need the low-intensity wrap-up to give the player a chance to appreciate what has happened. The hero returns home (with their shield or on it), the world has been changed forever, true love has been found, etc. Ideally, this is something the player will do as well, but this can be tricky to pull off well, so a cut-scene might be the right choice. This is also a good place to set up a sequel, of course. But for god's sake, whatever you do, don't end your game with a pitch for another product.