
65 : STAR WARS EPISODE II ATTACK OF THE CLONES All images are the copyright of their respective rightsholder and may not be reproduced from this site without permission of the rightsholder . USA 2002 Dir George LUCAS ( Year refers to British release ) Running Time : 143 minutes Colour : Deluxe Estimated Attendance : 9.16 million View cast and credits What they said at the time ... Synopsis Padmé Amidala , former queen of the planet Naboo , comes to the city-world of Coruscant to take her seat in the senate of the Republic . She becomes the target of an assassination attempt , and the Jedi knight Obi-Wan Kenobi and his apprentice Anakin Skywalker are assigned to protect her . They track the assassination attempt back to bounty-hunter Jango Fett , and through him to an alliance of commercial interests - perhaps under the control of ' the Dark Side ' - who are seeking to secede from the Republic . Anakin accompanies Padmé back to Naboo where they begin to reveal their feelings for each other . Obi-Wan traces Jango to a forgotten ocean planet called Kamino , where an alien race has been building an army of clone warriors , and then to the barren world Geonosis , where Jango reports to Count Dooku , a powerful Jedi who leads the secession movement . On Coruscant , Chancellor Palpatine is granted emergency powers and decides to use the clone army of Kamino to fight for the Republic . Anakin and Padmé travel to Tatooine , Anakin 's home planet , where he finds that his mother has been kidnapped by bandits . He arrives too late to rescue her and massacres her kidnappers indiscriminately . The droid R2-D2 arrives on Tatooine , carrying a distress call from Obi-Wan . Anakin and Padmé ( as well as R2-D2 and its fellow droid C-3PO ) follow him to Geonosis , where they are captured along with Obi-Wan and must battle monstrous beasts in a gladiatorial arena . They are rescued by a band of elite Jedi led by Mace Windu . Led by Yoda , the clone army arrives to defeat Dooku 's army of droids in a massive battle . Obi-Wan and Anakin are seriously injured fighting with Dooku . Yoda saves them and drives away Dooku , who escapes to Coruscant and reports to his master , an evil Sith Lord who is well pleased by events . Akanin and Padmé are married . Review At least George Lucas has had the common sense to return the Star Wars saga to its roots : rampant piracy and hysterical pastiche . The ponderous air of Asimovian prologue that made Episode I The Phantom Menace so nearly unendurable has mercifully been abandoned , and the cartoonish characters from that film who struck many viewers ( myself included ) as grossly offensive ethnic stereotypes have been written to the margins but not ( sadly ) banished altogether . What remains is a crisply managed entertainment that moves deftly from one dazzling digital setting to another and lards its story judiciously with well-executed action sequences . If the plots of Lucas ' overall narrative ( and of this instalment ) have become baffling and arcane , that 's nothing new to those steeped in Skywalker lore . Fans will surely welcome Episode II Attack of the Clones as a return to form , probably the most agreeable entry in the series since The Empire Strikes Back ( now designated Episode V ) in 1980 . Yet even sympathetic observers can detect a disturbance in the Force , one that cannot entirely be blamed on the sinister Count Dooku played by Christopher Lee ( distinguishable only by his wardrobe and accoutrements from Saruman , the good wizard gone bad he plays in The Lord of the Rings The Fellowship of the Ring ) . A quarter of a century after the first release of Star Wars , Lucas has become like Darth Vader , a prisoner of his own inflated mythopoetics . As the nomenclature of his universe becomes ever more ludicrous and his grand storyline grows in complexity and gaseousness ( " Our intelligence points to disgruntled spice miners on the moons of Naboo " ) , it increasingly seems that Lucas is a bored god who no longer cares about his creation one way or the other . Episode II Attack of the Clones is more crowded with quotations and references than any previous Lucas film , but it 's hard to say whether they make any kind of point ; there is a compulsive , perhaps desperate quality one never sensed in his earlier work . Here Lucas is not merely imitating himself ( and the original sources he imitated in the first place ) but is imitating his imitators and sometimes imitating films markedly inferior to his own . Much of the appeal of his original 1977 film - the one he now wants us to call Episode IV A New Hope - lay in its wide-eyed mythic shallowness , its catholic embrace of Flash Gordon serials and Westerns and samurai films and the grandiose pulp epics of early science fiction . These were all things Lucas evidently loved , and taken together they defined a worldview that was boyish , idealistic , short on moral subtlety and profoundly American . The sheer density of allusion in Episode II can be thrilling for movie buffs . The cloning station on the ocean planet Kamino comes from Tarkovsky 's Solaris , Anakin Skywalker 's act of vengeful violence on Tatooine recalls John Ford 's The Searchers ( after briefly referring to the biker-film tradition of The Wild Ones and Easy Rider ) , and so on . In the film 's major showcase sequences , Lucas jams together disparate elements with mixed results . The exciting spacecraft-chase sequence through the vertiginous spaces of the city-planet Coruscant , in which Obi-Wan Kenobi ( Ewan McGregor ) and Anakin pursue the would-be assassin of Padmé Amidala , emulates the most memorable scene in Luc Besson 's ludicrous The Fifth Element while , inevitably , nodding to Ridley Scott 's Blade Runner and accessing Lucas ' own quasi-sexual spaceship-through-a-tight-channel leitmotif . Later , when Obi-Wan , Anakin and Padmé must fight an array of phantasmagoric monsters in a desert amphitheatre , the touchstones seem to be Scott 's Gladiator ( and its numerous sword-and-sandal predecessors ) , Paul Verhoeven 's Starship Troopers and the classic 1950s stop-motion animation of Ray Hanyhausen . Of course in any Lucas film ( at least until now ) the director eventually has to deal with actors , and the results in Episode II are no more encouraging than usual . It 's easy to ridicule Lucas for his inability to depict the complexity of adult emotions , but his attempt here to capture the melodrama of teen romance - between Anakin ( Hayden Christensen ) and Padmé ( Natalie Portman ) - would seem chaste and dull by the standards of US network television . This forbidden love is clearly meant to be the emotional core of the entire Star Wars prequel trilogy ( and presumably in Episode III will lead Anakin to renounce his Jedi vow of chastity and embrace the Dark Side ) . But during the love scenes the pell-mell pace screeches to a halt while Portman and Christensen mumble their way dolefully through Lucas ' abysmal dialogue against a variety of lovely artificial settings . Those actors who survive a Lucas film with their reputations intact , as Lee , McGregor and Samuel L Jackson do here , plant their feet firmly on the jet-age or Stalinist-chic sets and bellow their lines , Errol Flynn style . Christensen tries to convey Anakin 's inner torment with a sort of brooding Brando impersonation , but mainly comes off as a sulky vacuity . When Padmé points out , after his mother 's death , that he is n't all-powerful , he pouts : " Well , I should be ! Someday I will be ! " In this same scene , Padmé finally admits to Anakin that she loves him , just after he has confessed to her that he has massacred an entire village . Lucas gives no indication that he sees this contrast as grotesque or inappropriate ; indeed , throughout the first two-thirds of this trilogy he seems profoundly uncomfortable with the task of making the cute kid of The Phantom Menace and the dreamboat teen of this film grow into the monstrous tyrant in the impressive black headgear . As derivative space opera goes . Episode II Attack of the Clones is enjoyable enough . But at heart it 's a forgettable and discontented tale of entropy and corruption , of a grand , idealistic venture that has lost its way . It 's no Star Wars . Synopsis and Review from Sight and Sound Vol.12 No.7 July 2002 p.54-55 The Monthly Film Bulletin was published by the British Film Institute between 1934 and 1991 . Initially aimed at distributors and exhibitors as well as filmgoers , it carried reviews and details of all UK film releases . In 1991 , the Bulletin was incoporated into Sight and Sound 