Dog Exterminator

Jeu d’action top-down , orienté score attack, réalisé lors d’une game jam de 48 heures sur le thème « Transformation » - Unreal Engine 5.6, 2026


0:00
0:00

Langage :

Blueprint

Rôles :

Chargé de toute la programmation

Durée :

Game Jam sur 48H

Equipe :

Equipe de 5 personnes

Concept :

Jeu d’action top-down , orienté score attack, réalisé lors d’une game jam de 48 heures sur le thème « Transformation ».

Dans Dog Exterminator, le joueur incarne un exterminateur armé d’un lance-flammes, chargé d’éliminer des chiens infestant la ville… pour les transformer en saucisses. Ces saucisses sont ensuite rapportées à un stand de hot-dogs, où elles sont automatiquement vendues afin de générer du score.

Le gameplay repose sur le positionnement et la prise de risque : les chiens évoluent au milieu de PNJ qu’il faut éviter de toucher. Une mauvaise utilisation du lance-flammes peut transformer une action efficace en pénalité, faisant chuter le score.


Gestion de la population :

Prototype de la carte

Le projet a débuté avec une map tilable : des blocs de bâtiments espacés à équidistance, séparés par des routes.

L’objectif était de remplir la ville de manière proportionnelle et lisible, sans dépendre d’un random pur qui aurait pu sur-peupler certaines tiles et en laisser d’autres vides.


{{brizy_dc_image_alt imageSrc=

Setup du système

SpawnPoint : Actor vide placé manuellement. Chaque SpawnPoint représente un cluster de population (zone de spawn contrôlée).


PopulationManager :

Au lancement du niveau, il récupère l’ensemble des SpawnPoints et distribue le nombre total d’entités de manière stable entre eux, garantissant une densité homogène sur la carte.

Chaque SpawnPoint sert d’ancre, puis une variation contrôlée est appliquée via le NavMesh afin d’éviter des positions trop rigides.

{{brizy_dc_image_alt imageSrc=
{{brizy_dc_image_alt imageSrc=

Évolution de la carte

La carte a ensuite évolué vers un layout plus urbain, avec une route centrale entourée de trottoirs.

Les entités devaient circuler exclusivement sur les trottoirs, et non sur la chaussée.

Le choix initial de placer les SpawnPoints à la main s’est révélé pertinent : il a suffi de repositionner les points sur les zones de trottoirs des différents types de tiles, sans modifier le système de population existant.

{{brizy_dc_image_alt imageSrc=

Ce système permet d’obtenir une distribution stable et cohérente des entités à l’échelle de la ville, tout en respectant les contraintes de navigation et de level design.

{{brizy_dc_image_alt imageSrc=

Entités infinies

Nous voulions maintenir une densité constante d’entités tout au long de la partie.

Lorsqu’une entité est éliminée par le joueur, elle est donc respawnée, afin d’éviter que la carte ne devienne progressivement vide et perde en tension.

Un simple respawn sur le SpawnPoint d’origine n’était pas satisfaisant : le joueur aurait pu rester sur une même tile et éliminer les entités en boucle, sans jamais être incité à parcourir la carte.

Pour éviter cet effet, nous avons mis en place un système de sélection de SpawnPoint basé sur des priorités :

  • Filtrage par distance : les SpawnPoints situés plus loin de la position où l’entité a été éliminée sont favorisés, afin d’encourager le déplacement du joueur.
  • Filtrage par densité : chaque tile possède un score basé sur son nombre d’entités actives ; les zones les moins peuplées sont priorisées afin de lisser la répartition sur l’ensemble de la carte.

Ce système permet de conserver une population stable, tout en garantissant une circulation naturelle du joueur à travers la ville et en évitant les boucles d’exploitation sur une seule zone.


Le Joueur :

Contrôles

Le joueur est contrôlé via un système twin-stick clavier / souris :

  • Déplacement indépendant de l’orientation
  • Visée à la souris pour une lecture immédiate de l’intention du joueur
  • Contrôle précis, adapté à un gameplay basé sur le positionnement
{{brizy_dc_image_alt imageSrc=

Le lance-Flammes

Le joueur est équipé d’un lance-flammes, une arme de zone pensée pour un engagement continu et un fort impact visuel.

Le tir est basé sur une Multi Sphere Trace synchronisée avec le VFX de la flamme, permettant d’appliquer des dégâts à toutes les entités implémentant l’interface BPI_Damageable, à intervalles réguliers tant qu’elles restent dans la zone d’effet.

Afin de renforcer la sensation de lourdeur et de puissance, l’utilisation du lance-flammes réduit temporairement la vitesse de déplacement et la vitesse de rotation du joueur. Le contrôle devient volontairement moins réactif, poussant le joueur à anticiper ses mouvements et son orientation.

Le gameplay repose alors sur le positionnement : bien se placer permet de maximiser les dégâts sur les chiens, tout en évitant de toucher les PNJ présents dans l’environnement.

Chaque erreur a un coût, puisque brûler un chien augmente le score, tandis que blesser un PNJ le réduit. Le lance-flammes devient ainsi une arme à haut risque / haute récompense, au cœur de l’expérience de jeu.


Boucle de jeu :

Stand de hot-dogs

Le cœur de la boucle de jeu repose sur un stand de hot-dogs, point central où le joueur vient déposer les saucisses récupérées sur les chiens éliminés. Chaque dépôt alimente un stock visible, immédiatement pris en compte par le système de vente.

Les ventes s’effectuent en continu : un hot-dog est vendu toutes les secondes via un timer en boucle, indépendamment de la présence du joueur. Cela permet au joueur d’optimiser son temps en alternant librement entre chasse et dépôt, sans être contraint d’attendre sur place.

Le joueur peut récupérer l’argent à tout moment. Cette récupération convertit les gains en score global, renforçant l’incitation à revenir régulièrement au stand, souvent en profitant d’un passage entre deux phases de chasse.


Bien que l’argent devait initialement servir à améliorer le personnage et son arme, cette mécanique n’a pas été intégrée dans le scope de la game jam. Le score devient donc l’objectif principal, structurant naturellement les allers-retours du joueur dans la ville.

{{brizy_dc_image_alt imageSrc=

La boucle repose ainsi sur une optimisation simple mais efficace : chasser → déposer → repartir chasser, tout en laissant les ventes se faire en arrière-plan, ce qui maintient le rythme et évite toute phase d’attente forcée.

Entités

La ville est peuplée de plusieurs types d’entités, chacune jouant un rôle précis dans la lecture du gameplay et dans la gestion du risque pour le joueur.

Chiens

Les chiens constituent la cible principale du joueur. Les éliminer permet à la fois d’augmenter le score et de récupérer des saucisses, nécessaires pour alimenter la boucle de vente au stand de hot-dogs.

Leur présence structure l’action et incite le joueur à se déplacer constamment dans la ville.

PNJ

Les PNJ sont volontairement placés à proximité des chiens. Leur rôle est de contraindre le positionnement du joueur : utiliser le lance-flammes sans anticipation peut facilement les toucher.


Infliger des dégâts aux PNJ, ou les tuer, fait baisser le score, introduisant une tension permanente entre efficacité et précision. Le joueur doit ainsi prendre des décisions rapides, en évaluant le risque avant d’attaquer.

{{brizy_dc_image_alt imageSrc=
{{brizy_dc_image_alt imageSrc=

Voitures

Les voitures apportent une contrainte environnementale supplémentaire. Elles sont spawnées aléatoirement depuis les tunnels situés aux entrées de la carte, avec un délai compris entre 1 et 7 secondes, puis circulent en ligne droite sur les routes avant d’être despawnées à l’extrémité opposée.

La gestion du trafic repose sur un système volontairement minimaliste : un Line Trace est effectué devant chaque voiture afin de l’arrêter temporairement si une autre voiture est détectée, évitant ainsi les collisions et simulant un flux routier crédible à faible coût.

En cas de collision avec le joueur, la voiture provoque une sanction indirecte Toutes les saucisses transportées par le joueur sont projetées autour de lui. Celui-ci est alors forcé de les récupérer, perdant du temps et rompant son rythme, sans passer par une punition purement arbitraire.

{{brizy_dc_image_alt imageSrc=

Score & Timer

Le score est le fil conducteur de la partie. Chaque action du joueur a un impact immédiat : les bonnes décisions augmentent le score, tandis que les erreurs (comme toucher ou éliminer un PNJ) le réduisent. Ce système simple permet au joueur de comprendre instantanément s’il joue efficacement ou non.

La partie est encadrée par un timer global de 300 secondes, lancé dès le début de la session. Cette contrainte temporelle impose un rythme soutenu et encourage le joueur à optimiser ses déplacements, son positionnement et sa prise de risque afin de maximiser son score sur un temps limité.

Le timer structure naturellement la boucle de jeu : le joueur alterne entre phases de chasse, dépôts au stand et encaissement, tout en gardant en tête la pression du temps qui s’écoule. À la fin de la partie, le score final est affiché, offrant un objectif clair de performance et de comparaison, notamment entre amis.

Ce système transforme Dog Exterminator en une expérience orientée score attack, où la maîtrise des mécaniques, la précision et la gestion du risque priment.

{{brizy_dc_image_alt imageSrc=

Essayez le jeu :

{{brizy_dc_image_alt imageSrc=

Mot de la fin :

Dog Exterminator est avant tout un projet de game jam, réalisé en 48 heures sur le thème « Transformation ».

Un week-end intense, beaucoup d’itérations, et surtout le plaisir de travailler avec des personnes que j'admire.

L’objectif était simple : transformer une idée volontairement absurde en une expérience jouable, lisible et fun, malgré des contraintes de temps très fortes. Chaque décision a été prise pour aller à l’essentiel, privilégier le rythme, le game feel et la clarté pour le joueur.

Ce projet reflète parfaitement ce que j’aime dans le jeu vidéo : expérimenter, apprendre vite, et créer en équipe, même dans des conditions contraintes. Un excellent souvenir de game jam… et une belle manière de conclure une collaboration.

{{brizy_dc_image_alt imageSrc=
{{brizy_dc_image_alt imageSrc=
Retour en haut