Battle: Los Angeles feels very emblematic of how a film which simply fails to totally live up to its promise and expectations can be more disappointing than a simply outright awful one. Jonathan Liebesman’s fourth feature length movie isn’t terrible by any stretch of the means, but lacking in all areas of substance Battle becomes an empty and emotionless technical affair with nothing interesting propping up its alien invasion narrative. Here we have a competently made movie, for the most part, hoping to ride on the coattails of its action and special effects which ultimately cannot provide a satisfying blockbuster experience by virtue of possessing a dearth of substance and missing a real reason for us to care.
On paper, Leibesman’s film feels like the product of a marriage between the aesthetics of Neil Blomkamp’s District 9 and the propulsive, tension-ridden tone of Ridley Scott’s Black Hawk Down: at the onset of a hostile alien takeover, a group of US Marines find themselves trapped behind enemy lines, smack dab in the middle of a zone the military intends to level by way of a decisive, thorough, and pointedly gargantuan missile strike. Charged with protecting civilians in the area, the marines, led by Aaron Eckhart’s this-close-to-retired Staff Sergeant, fight through invading forces at speed to get to safety. But of course getting anywhere quickly in L.A. is a Herculean feat, moreso when aliens intent on killing you bar the way to freedom. It’s an exciting premise, and a straightforward, linear one which eschews plot twists or narrative layers in favor of simplicity. There’s something to be said in defense of that choice, too, but maybe not on behalf of this film in particular.
Battle‘s problems stem primarily from Liebesman’s failure to take full advantage of his stripped down story. When the film goes into full on survivor mode as the marines and their civilian wards trek through the battle torn cityscape, nothing exists to make its quieter moments really sing; in short, we’re stuck with a group of characters utterly bereft of character. It’s not an exaggeration at all to state that Eckhart serves the only developed character in the film– he has pathos, and we gravitate to his character by virtue of his noble and tragic qualities (and it doesn’t hurt that Eckhart’s the kind of actor who can balance Nantz’s soldierly qualities with palatable emotion). Everyone else, literally, is defined by minor idiosyncrasies and quirks, which are fine and dandy to an extent but don’t make for truly dynamic and interesting characters. It’s nice that one of the marines hails from Jersey, knows how to hotwire a bus (because he’s from Jersey, baby!), and loves weddings (and cake), and maybe it stings a little to see him in peril, but he and his endangered company are ultimately blips on our emotional radar. And because the movie revolves around the survival of its characters, as we wonder who’s going to make it through to the end, the neglect shown toward fleshing each of them out– even slightly– diffuses any semblance of tension in the plot by giving us nothing and no one to care about.
Frankly, character development could have saved Battle from mediocrity and made it into something special, because the elements of the film worth recommending it for are typically obscured by the love-it-or-hate-it technique known as shaky cam. To the film’s credit, the fighting is generally well-staged and framed precisely enough that it’s not difficult to tell what’s going on and who’s performing what action in spite of the erratic and unpredictable movements of cinematographer Lukas Ettlin’s camera; that spastic technique just masks what could have been exciting, visceral action sequences, keeping them visually coherent and yet indistinct at the same time. We don’t really get to enjoy the effects and choreography on display because we have to suss out what’s happening for ourselves. I understand and often appreciate the philosophy behind shaky cam usage, but here it feels like an unnecessary technique employed because it’s almost what’s expected of films of Battle‘s pedigree, gritty faux-realism meant to make audiences feel like they’re in the fray rather than watching from a theater and a strong statement of style over substance.
Maybe that’s where the film falls shortest. Considering what’s happening in the world as we speak, Battle: Los Angeles has absolutely nothing to say. There’s nothing wrong with an action extravaganza fluff piece at all, and it might be unfair for me to level this criticism at the film when its loftiest goal appears to be to entertain, but there’s so much opportunity for social commentary in Battle that its silence is shocking. At best, the film concerns itself with decisions the characters make both on-screen and off and specifically how those characters reconcile with the consequences of their decisions, but even that common thread feels limp and pointless. Liebesman clearly doesn’t have any aspirations toward examining current events and topical issues through his art, and that’s fine– there’s no rule to which he’s bound that declares he must– but it’s disappointing to see what could have been a thoughtful bit of high-concept science fiction be given an unconcerned and sensationalized action treatment.
Haven’t seen Source Code myself but I would rather have seen that than this if I’d had the choice. I could watch Battle: LA on Netflix sometime, but it’s not really worth rushing out to a theater to see.
I totally agree that Battle could have been a lot more. I was ultimately put off by its wall to wall action because the film lacked depth or character. You’re spot on – even a film that essentially wants to blow things up for two hours, there’s room for it to comment on the wider world. War films, especially, science-fiction, are almost tailor made for making some kind of judgment on governmental foreign policy, current conflicts, religion or even pop culture’s response to violence. But Battle isn’t interested in any of that. I think that means Battle is a one-watch only type of deal.
You and I are of the same mind, Dan. Action scenes can only go so far if there’s nothing behind them; they become interesting but ultimately forgettable. If the film had had character, it wouldn’t have mattered if the movie in total had nothing to say because it still would have gotten me invested in the plot. As it stood I felt very removed from everything.
{"id":"2","mode":"form","open_style":"in_place","currency_code":"USD","currency_symbol":"$","currency_type":"decimal","blank_flag_url":"https:\/\/agcrump.work\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/blank.gif","flag_sprite_url":"https:\/\/agcrump.work\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/flags.png","default_amount":500,"top_media_type":"featured_image","featured_image_url":"https:\/\/agcrump.work\/wp-content\/uploads\/2025\/10\/image-asset-179x200.webp","featured_embed":"","header_media":null,"file_download_attachment_data":null,"recurring_options_enabled":false,"recurring_options":{"never":{"selected":true,"after_output":"One time only"},"weekly":{"selected":false,"after_output":"Every week"},"monthly":{"selected":false,"after_output":"Every month"},"yearly":{"selected":false,"after_output":"Every year"}},"strings":{"current_user_email":"","current_user_name":"","link_text":"Leave a tip","complete_payment_button_error_text":"Check info and try again","payment_verb":"Pay","payment_request_label":"A Constant Visual Feast","form_has_an_error":"Please check and fix the errors above","general_server_error":"Something isn't working right at the moment. Please try again.","form_title":"Support My Work:","form_subtitle":"","currency_search_text":"Country or Currency here","other_payment_option":"Other payment option","manage_payments_button_text":"Manage your payments","thank_you_message":"Thanks for supporting my work!","payment_confirmation_title":"A Constant Visual Feast","receipt_title":"Your Receipt","print_receipt":"Print Receipt","email_receipt":"Email Receipt","email_receipt_sending":"Sending receipt...","email_receipt_success":"Email receipt successfully sent","email_receipt_failed":"Email receipt failed to send. Please try again.","receipt_payee":"Paid to","receipt_statement_descriptor":"This will show up on your statement as","receipt_date":"Date","receipt_transaction_id":"Transaction ID","receipt_transaction_amount":"Amount","refund_payer":"Refund from","login":"Log in to manage your payments","manage_payments":"Manage Payments","transactions_title":"Your Transactions","transaction_title":"Transaction Receipt","transaction_period":"Plan Period","arrangements_title":"Your Plans","arrangement_title":"Manage Plan","arrangement_details":"Plan Details","arrangement_id_title":"Plan ID","arrangement_payment_method_title":"Payment Method","arrangement_amount_title":"Plan Amount","arrangement_renewal_title":"Next renewal date","arrangement_action_cancel":"Cancel Plan","arrangement_action_cant_cancel":"Cancelling is currently not available.","arrangement_action_cancel_double":"Are you sure you'd like to cancel?","arrangement_cancelling":"Cancelling Plan...","arrangement_cancelled":"Plan Cancelled","arrangement_failed_to_cancel":"Failed to cancel plan","back_to_plans":"\u2190 Back to Plans","update_payment_method_verb":"Update","sca_auth_description":"Your have a pending renewal payment which requires authorization.","sca_auth_verb":"Authorize renewal payment","sca_authing_verb":"Authorizing payment","sca_authed_verb":"Payment successfully authorized!","sca_auth_failed":"Unable to authorize! Please try again.","login_button_text":"Log in","login_form_has_an_error":"Please check and fix the errors above","uppercase_search":"Search","lowercase_search":"search","uppercase_page":"Page","lowercase_page":"page","uppercase_items":"Items","lowercase_items":"items","uppercase_per":"Per","lowercase_per":"per","uppercase_of":"Of","lowercase_of":"of","back":"Back to plans","zip_code_placeholder":"Zip\/Postal Code","download_file_button_text":"Download File","input_field_instructions":{"tip_amount":{"placeholder_text":"How much do you want to tip?","initial":{"instruction_type":"normal","instruction_message":"How much do you want to tip?"},"empty":{"instruction_type":"error","instruction_message":"How much do you want to tip?"},"invalid_curency":{"instruction_type":"error","instruction_message":"How much do you want to tip?"}},"recurring":{"placeholder_text":"Recurring","initial":{"instruction_type":"normal","instruction_message":"Want to make a recurring tip?"},"success":{"instruction_type":"success","instruction_message":"Want to make a recurring tip?"},"empty":{"instruction_type":"error","instruction_message":"Want to make a recurring tip?"}},"name":{"placeholder_text":"Name on Credit Card","initial":{"instruction_type":"normal","instruction_message":"Enter the name on your card."},"success":{"instruction_type":"success","instruction_message":"Enter the name on your card."},"empty":{"instruction_type":"error","instruction_message":"Please enter the name on your card."}},"privacy_policy":{"terms_title":"Terms and conditions","terms_body":null,"terms_show_text":"View Terms","terms_hide_text":"Hide Terms","initial":{"instruction_type":"normal","instruction_message":"I agree to the terms."},"unchecked":{"instruction_type":"error","instruction_message":"Please agree to the terms."},"checked":{"instruction_type":"success","instruction_message":"I agree to the terms."}},"email":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email address"},"success":{"instruction_type":"success","instruction_message":"Enter your email address"},"blank":{"instruction_type":"error","instruction_message":"Enter your email address"},"not_an_email_address":{"instruction_type":"error","instruction_message":"Make sure you have entered a valid email address"}},"note_with_tip":{"placeholder_text":"Your note here...","initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"empty":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"not_empty_initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"saving":{"instruction_type":"normal","instruction_message":"Saving note..."},"success":{"instruction_type":"success","instruction_message":"Note successfully saved!"},"error":{"instruction_type":"error","instruction_message":"Unable to save note note at this time. Please try again."}},"email_for_login_code":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email to log in."},"success":{"instruction_type":"success","instruction_message":"Enter your email to log in."},"blank":{"instruction_type":"error","instruction_message":"Enter your email to log in."},"empty":{"instruction_type":"error","instruction_message":"Enter your email to log in."}},"login_code":{"initial":{"instruction_type":"normal","instruction_message":"Check your email and enter the login code."},"success":{"instruction_type":"success","instruction_message":"Check your email and enter the login code."},"blank":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."},"empty":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."}},"stripe_all_in_one":{"initial":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"empty":{"instruction_type":"error","instruction_message":"Enter your credit card details here."},"success":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"invalid_number":{"instruction_type":"error","instruction_message":"The card number is not a valid credit card number."},"invalid_expiry_month":{"instruction_type":"error","instruction_message":"The card's expiration month is invalid."},"invalid_expiry_year":{"instruction_type":"error","instruction_message":"The card's expiration year is invalid."},"invalid_cvc":{"instruction_type":"error","instruction_message":"The card's security code is invalid."},"incorrect_number":{"instruction_type":"error","instruction_message":"The card number is incorrect."},"incomplete_number":{"instruction_type":"error","instruction_message":"The card number is incomplete."},"incomplete_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incomplete."},"incomplete_expiry":{"instruction_type":"error","instruction_message":"The card's expiration date is incomplete."},"incomplete_zip":{"instruction_type":"error","instruction_message":"The card's zip code is incomplete."},"expired_card":{"instruction_type":"error","instruction_message":"The card has expired."},"incorrect_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incorrect."},"incorrect_zip":{"instruction_type":"error","instruction_message":"The card's zip code failed validation."},"invalid_expiry_year_past":{"instruction_type":"error","instruction_message":"The card's expiration year is in the past"},"card_declined":{"instruction_type":"error","instruction_message":"The card was declined."},"missing":{"instruction_type":"error","instruction_message":"There is no card on a customer that is being charged."},"processing_error":{"instruction_type":"error","instruction_message":"An error occurred while processing the card."},"invalid_request_error":{"instruction_type":"error","instruction_message":"Unable to process this payment, please try again or use alternative method."},"invalid_sofort_country":{"instruction_type":"error","instruction_message":"The billing country is not accepted by SOFORT. Please try another country."}}}},"fetched_oembed_html":false}
Just thinking how mediocre this movie is makes me want to see Source Code again. 😉
Haven’t seen Source Code myself but I would rather have seen that than this if I’d had the choice. I could watch Battle: LA on Netflix sometime, but it’s not really worth rushing out to a theater to see.
Hopefully you can remedy this in the near future. I would love to hear your thoughts on Source Code.
I totally agree that Battle could have been a lot more. I was ultimately put off by its wall to wall action because the film lacked depth or character. You’re spot on – even a film that essentially wants to blow things up for two hours, there’s room for it to comment on the wider world. War films, especially, science-fiction, are almost tailor made for making some kind of judgment on governmental foreign policy, current conflicts, religion or even pop culture’s response to violence. But Battle isn’t interested in any of that. I think that means Battle is a one-watch only type of deal.
You and I are of the same mind, Dan. Action scenes can only go so far if there’s nothing behind them; they become interesting but ultimately forgettable. If the film had had character, it wouldn’t have mattered if the movie in total had nothing to say because it still would have gotten me invested in the plot. As it stood I felt very removed from everything.