The cornerstone of successful storytelling depends on an engaging hero or protagonist. Why else would an audience want to watch a character who isn't interesting or worth talking about?

But sometimes, the villains in some stories are so well-written and well-acted that they become more famous than the heroes they fight against - the very same heroes you walk into the cinema to cheer on. Here are ten of the most epic villains who stole the show:

1. Colonel Walter E. Kurtz, Apocalypse Now: Played by Marlon Brando

2. Roy Batty, Blade Runner: Played by Rutger Hauer

3. Emperor Palpatine, Return of the Jedi: Played by Ian McDiarmid

4. Hannibal Lecter, The Silence of the Lambs: Played by Sir Anthony Hopkins

5. The Dinosaurs, Jurassic Park

6. Agent Smith, The Matrix: Played by Hugo Weaving

7. Magneto, X-Men: Played by Sir Ian McKellen

8. The Joker, The Dark Knight: Played by Heath Ledger

9. Colonel Hans Landa, Inglourious Basterds: Played by Christoph Waltz

10. Loki, Thor: Played by Tom Hiddleston