Centré sur le personnage de J.T. Davis, surnommé Joker (« Guignol » dans la version française), jeune engagé dans les Marines durant la guerre du Viêt Nam, le film commence par des images d'un camp d'entraînement en Caroline du Sud, à la fin des années 1960. Le sergent Hartman, du corps des marines, prend en main avec brutalité un groupe de nouvelles recrues.
Pratiquant une méthode d'entraînement basée sur l'injure et l'humiliation, Hartman concentre son attention sur le soldat Leonard Lawrence, assez enrobé, qu'il surnomme Gomer Pyle (« Grosse Baleine » dans la VF) et l'accable tout particulièrement. La malheureuse recrue est en effet lente, peine aux exercices physiques et fait montre d'une personnalité très limitée (il confond parfois la droite et la gauche, a du mal à faire son lit seul, lacer ses rangers etc.). Le personnage principal, Davis, le prend sous son aile et l'aide à faire face à ses difficultés, mais Lawrence ne peut arriver au niveau requis, ce qui, à cause des méthodes d'Hartman, fait de lui la bête noire de la chambrée et il reçoit alors une sévère correction de la part de ses camarades. Il décide finalement de devenir un soldat particulièrement discipliné pour mieux se venger. Il obtiendra son brevet militaire et achèvera de façon tragique son entraînement en abattant Hartman puis en se suicidant.
L'action du film se déplace ensuite au Vietnam, où Davis a choisi d'être affecté à une unité de journalistes militaires du magazine Stars and Stripes. Se heurtant à ses supérieurs au sujet de l'intégrité journalistique, il est finalement envoyé en reportage sur le champ de bataille, que l'offensive du Tet a considérablement bouleversé. Il y retrouve l'un de ses anciens camarades de chambrée, surnommé « Cowboy », aux côtés duquel il est engagé de manière directe dans les combats. Perdant plusieurs de ses compagnons lors d'une escarmouche avec un tireur d'élite, le jeune Davis est confronté à ses propres limites morales, ainsi qu'à la violence brute de la guerre et à son effet psychologique sur les hommes.