The story of War Horse seriously rankles. A Devonshire lad, Albert, lives in one of those charming Hobbity places where folks drink "zzzzzoider" and begin sentences with "Eeee . . . ". Devon, in fact. Naturally, he is very close to his horse, Joey. So close, in fact, that when Joey is sold to the army in 1914, Albert enlists and goes to Belgium to find him.

Cue much wailing and gnashing of teeth, Oirish singing, horrors of war, Joey (treasonably) working for the Hun. But then, what's this?! Years later, the half-blind Albert and the half-dead Joey are reunited, just as Joey is about to be put down, to music so shamelessly sentimental that I'd swear I saw Lord Lloyd-Webber four seats down - hi, Andrew! squirm.

Three concerns. The play is inconsistent: the plot and dialogue - when not in German or French - are obviously aimed at children, but the dramatic ironies and emotional content pitched way above. The play tells a whopper: in the story originally told to Michael Morpurgo, the horse - like eight million others - naturally ended up as dog food. The play is immoral: telling children that a horse's life matters more than their own, or those of their fellows, is flat-out wrong.

All that said, War Horse is a fantastic spectacle, and you should see it at the earliest opportunity. In collaboration with the Handspring Puppet Company, the NT props chaps have created ploughing scenes, cavalry charges, eye-gouging crows, and even comedy geese, all of which are sufficiently believable that you stop seeing the mechanics after about ten seconds. The effect of this ambitious gadgetry is bolstered by inventive choreography, as well as by Adrian Sutton's clever, manipulative score and the projection of various explanatory or symbolic images.

There's some great acting from the flesh-and-blood, too. Given the woodenness of his equine counterpart I thank you, Luke Treadaway as Albert builds a compellingly sympathetic relationship with Joey. Angus Wright is particularly excellent as Hauptmann Müller, the German who shows us the human side of the enemy. And Jamie Ballard convinces as the deeply-patriotic-but-not-at-all-certain British Major Nicholls, the officer who first has the honour of riding Joey into battle.

But the real heroes, of course, are the horses. The audience - adults and children alike - absolutely fell for them, and it's a testament to truly impressive stagecraft that the horses, and not the actors inside the horses, got the ovation at the end.

War Horse, adapted from Michael Morpurgo's story by Nick Stafford, is at the Olivier Theatre till January 12. Seats £10 to £39.50 (call 0207 452 3000).