Nuketown Zombies Minecraft Project - Recréation du mode Zombies de Call of Duty

Un projet complexe et fonctionnel, entièrement ré-imaginé du mode Zombies de Call of Duty dans Minecraft, démarré en 2014 sur ma PS3.

2025 (21ans)

1/ Modélisations et Réalisations Graphiques


1.1/ Modélisation et ajout de blocs moddés 3D

Le mode Zombies de COD, possède de nombreux éléments de gameplay d'amélioration, je me suis donc essayé à modéliser et texturer un maximum de blocs en 3D en reproduisant les différentes machines le plus fidèlement possible dans un style Minecraft.

Mastodonte (Juggernog)

L'atout incontournable pour améliorer la santé du joueur, j'ai modélisé et texturé une machine de Mastodonte en 3D pour la faire apparaître dans la carte.

Machine de Mastodonte modélisée en 3D sur Blockbench Modélisation sur Blockbench
Machine de Mastodonte modélisée en 3Dintégrée dans Minecraft Rendu en jeu de la machine

Réanimation Rapide (Quick Revive)

Cet atout permet au joueur de réanimer plus vite ses alliés ou de s'auto-réanimer 3 fois en solo.

Machine de réanimation rapide modélisée en 3D sur Blockbench Modélisation sur Blockbench
Machine de réanimation rapide modélisée en 3D intégrée dans Minecraft Rendu en jeu de la machine

Rechargement rapide (Speed Cola)

L'atout Rechargement rapide permet au joueur ici dans Minecraft d'avoir l'effet de "Haste" afin de pouvoir frapper beaucoup plus rapidement avec les armes de coprs à corps notamment.

Machine de rechargement rapide modélisée en 3D sur Blockbench Modélisation sur Blockbench
Machine de rechargement rapide modélisée en 3D intégrée dans Minecraft Rendu en jeu de la machine

Double Coup (Double Tap)

Cet atout rajoute l'effet de force et décuple notamment les dégâts à la mélée sur ce projet.

Machine de double coup modélisée en 3D sur Blockbench Modélisation sur Blockbench
Machine de double coup modélisée en 3D intégrée dans Minecraft Rendu en jeu de la machine

Courir vite (Stamin Up)

L'atout permettant d'améliorer la vitesse de déplacement du joueur, j'ai modélisé et texturé la machine "Courir vite" en 3D pour la faire apparaître dans la carte.

Machine de Stamin Up modélisée en 3D sur Blockbench Modélisation sur Blockbench
Machine de Stamin Up modélisée en 3D intégrée dans Minecraft Rendu en jeu de la machine

Texture et effets des boissons à boires

Chaque machine distribue ses boissons à boire à un prix différent, voici les textures que j'ai réalisées pour chacune d'entre elles.

Texture des boissons à boire du mode Zombies de Call of Duty dans Minecraft

La machine Pack a Punch

C'est la machine permettant d'améliorer les armes du joueur, pour le moment, elle n'est encore qu'a l'état de modélisation et de texturing, elle n'est pas encore fonctionnelle dans la carte.

Machine de Pack a Punch modélisée en 3D sur Blockbench Modélisation sur Blockbench
Machine de Pack a Punch modélisée en 3D intégrée dans Minecraft Rendu en jeu de la machine

La boîte mystère animée

La boîte mystère est la plus iconique du mode Zombies permettant de donner aléatoirement des armes aux joueurs avec une animation

Boîte mystère modélisée en 3D sur Blockbench Modélisation sur Blockbench
Boîte mystère modélisée en 3D intégrée dans Minecraft Rendu en jeu de la Boîte mystère

J'ai réalisé une animation de rotation sur Blockbench pour la boîte mystère ainsi qu'une texture en 128x128 pour une boîte mystère plus détaillée.

Boîte mystère modélisée en 3D sur Blockbench Modélisation sur Blockbench
Boîte mystère modélisée en 3D intégrée dans Minecraft Rendu en jeu de la Boîte mystère

1.2/ Ajout d'armure Hazmat moddée

Texture des items designés

Texture des items Hazmat moddés pour la carte Nuketown Zombies Minecraft 1

Texture du modèle d'armure Hazmat

Texture du modèle d'armure Hazmat moddé pour la carte Nuketown Zombies Minecraft Rendu en jeu de l'armure Hazmat
Texture de la color map de l'armure Hazmat Texture color map de l'armure Texture de la normal map de l'armure Hazmat Texture de la normal map Texture de l'ambient occlusion map de l'armure Hazmat Texture de l'ambient occlusion map

1.3/ Ajout d'armes de mélées moddés

Textures et statistiques des armes

Couteau de combat Couteau Bowie Poing américain taser
Couteau de combat Couteau Bowie Poing américain taser
1.6 speed attack 1.3 speed attack 1 speed attack
12(+2) attack damage 23(+2) attack damage 33(+2) attack damage
18 critical damage 34,5 critical damage 49,5 critical damage

Modèle 3D pour le poing taser

J'ai modélisé le poing américain taser en 3D pour lui donner une meilleure forme et un meilleur rendu que les autres armes de mélées qui sont des items avec une texture uniquement. Voici la POV, poing taser tenu en main :

Poing américain taser modélisé en 3D sur Blockbench POV du poing américain taser

1.4/ Packs de textures personnalisés

Pour recréer l'ambiance de Call of Duty (COD), j'ai créé deux packs de textures qui remplace celles de Minecraft. Le premier est un pack dans la résolution par défaut du jeu (16x16) et le second est un pack en haute résolution (128x128) pour les joueurs ayant déjà des packs en haute résolution d'installés.

Pack de textures personnalisé pour la carte Nuketown Zombies Minecraft

3 textures différentes de Zombies

Avec les yeux bleus, les yeux oranges et une version gore avec du sang.

Texture de zombie avec les yeux bleus Texture de zombie avec les yeux oranges Texture de zombie gore avec du sang

Les textures sont gérées aléatoirement et sont compatibles avec les mods Entity Model Features et Entity Texture Features sous Fabric qui me permettent de gérer l'aléatoire sans avoir besoin d'une version Forge de Minecraft avec Optifine mais aussi d'avoir des animations améliorées pour les zombies.

Texture des armes achetables aux murs dessinées à la craie

Il s'agit en réalité de la texture d'un panneau Minecraft sur lequel j'ai pu y afficher le prix et le rendre clickable grâce aux commands blocs.

Texture d'arme achetable au mur dessinée à la craie 1 Texture d'arme achetable au mur dessinée à la craie 2

GUI customisée et modernisée

GUI pour Graphical User Interface, J'ai redesigné l'inventaire/les conteneurs, les icons, widgets, et menus.

GUI customisé pour la carte Nuketown Zombies Minecraft Interface de l'Accueil Minecraft
Image de fond de base

Image du fond de base

Image de fond customisée avec un thème de COD Zombies

Image du fond retouchée avec zombie ajouté à droite

Particules personnalisées

J'ai réalisé les particules d'explosions vert pour l'arme miracle "Pistolet laser" car le pistolet utilisait les explosions de bases.

particules du pistolet laser

J'ai aussi modifié les particules de lave pour réaliser les tornades de feu du mode Zombies en dehors de la carte.

Particule de lave 2

Tornades de feu (de nuit).

Simulation des tornades

Tornades de feu (de jour).

Particule de lave

Particules de lave modifiés.

Peintures de l'univers du mode zombie

Peinture personnalisée pour la carte Nuketown Zombies Minecraft 1

Splash texts personnalisé (aléatoire)

Splash texts personnalisés pour la carte Nuketown Zombies Minecraft Splash texts personnalisés pour la carte Nuketown Zombies Minecraft 2

1.5/ Sound Design custom

J'ai récupéré à l'aide d'un outil, les fichiers sons en .flac de Call of Duty Black Ops 2 des zombies puis les ai convertis en .ogg le format pris en charge par Minecraft.

Sons des Zombies

Grâce aux sound design de Black Ops 2 récupéré, les zombies produisent les mêmes cris dans Minecraft que dans COD Zombies. Il y a plusieurs sons différents pour les zombies : hit, hurt, death et say, dont chacun ont plusieurs variations pour éviter la répétitivité.

Sons de gameplay

J'ai aussi intégré les sons de gameplay comme les sons de fin et de début de manche, le son de fin de partie. Les sons liés aux actions comme l'achat d'une arme, le refus quand on n'a pas assez d'argent, l'ouverture de porte, le dégagement de débris, sons lorsque l'on boit un atout etc.

Musiques officielles du Zombie de COD

Les musiques mytiques émises par les différents atouts sont présentes avec un système de proximité. Les musiques de thèmes et de trailers sont également présentes et jouables via les CD et jukebox de Minecraft.

Sons de base de Minecraft modifiés

J'ai également édité les sons de base avec mon propre pack de son et celui de Black Ops 2 pour que les sons d'ambiance, de dégats, de pas, du feu, des explosions, des sons météos et de l'interface HUD aient une ambiance plus horrifique, en accord avec l'univers de COD Zombies.

2/ Architecture technique le coeur du système du mode Zombie


Système de la carte Nuketown Zombies Minecraft

2.0/ Fonctionnement de Minecraft

Tout d'abord, Minecraft est un jeu de type Bac à sable, développé en Java et qui permet au joueur de construire et de créer un monde virtuel avec des blocs.

L'équivalent de l'électricité dans Minecraft est appelé la "Redstone". Certains blocs s'alimentent en Redstone, d'autres émettent des signaux et avec ces principes on peut créer des portes logiques et des conditions.

Un bloc très spécial et très important nommé "Commands Block" permet d'exécuter des commandes misent à dispositions par le jeu et qui intéragissent directement avec le code de celui-ci. C'est avec ce bloc que j'ai réalisé la grande majorité de mon système in-game.
Ces blocs peuvent s'executer en mode chain, repeat ou via impulsion.

1.1/ Système de manches de Zombies

Le système de manches fonctionne comme un algorithme. Algorithme que j'ai décidé de représenter sur un schéma.

Schéma de l'algorithme du système de manches

Variables dans Minecraft

Dans Minecraft on peut réaliser des variables/tableaux avec ce que l'on appelle des "scoreboards". Pour réaliser mon algorithme, j'ai créé ces scoreboards :

Scoreboard Utilisation
Wave Stocke la valeur actuelle de la manche.
NextWave Est utilisé ici, comme un Booléen, il sera défini sur 1 ou 0 pour indiquer si le système de changement de manche doit procéder ou non.
ZombiesToKill Enregistre le nombre de zombie à tuer chaque manche.
KilledZombiesByWave Enregistre le nombre de Zombies tués par le joueur cette manche. Minecraft permet une fonction enregistrant cela

Wave

Wave permet donc de calculer le nombre de zombies à faire apparaître chaque manche.
Une boucle de quelques secondes en redstone vérifie à chaque itération (ligne de commands blocks verte) le numéro de la manche et alimente pendant une demi-seconde les bons commands blocks (violet) correspondant à la bonne manche.

Chaque manche +5 Zombies et toutes les 2 manches la santé (+5 coeurs) et vitesse de déplacement (+0.2 speed) des zombies est améliorée.

Système de manche 1

Ligne pour check la manche et alimenter au bon endroit

Système de manche 2

Ligne qui fait apparaître les zombies selon là ou elle est alimentée

NextWave

Si NextWave vaut 1 alors tout ce qui sera engendré par cette condition sera :

  • => Passer la manche en gros Wave = Wave + 1
  • => Jouer un son au joueur grâce à un fichier inséré dans un pack
  • => Rajouter 5 Zombies pour la prochaine manche ZombiesToKill = ZombiesToKill + 5
  • => Remettre le compteur de zombies tués à 0 KilledZombiesByWave = 0
  • => Remettre NextWave = 0

ZombiesToKill

Défini au lancement de la partie à 10, chaque manche terminée rajoutera 5 zombies à tuer comme défini dans la condition de NextWave.

KilledZombiesByWave

KilledZombiesByWave est le scoreboard qui compte le nombre de zombies tués par manche.

Par une vérification en mode "repeat" : /execute as @a if score @s KilledZombiesByWave >= @s ZombiesThisWave run scoreboard players add @a NextWave 1, c'est ce qui permet de vérifier si la condition : KilledZombiesByWave >= ZombiesToKill est vérifiée pour lancer la manche suivante en mettant NextWave = 1.

Système de comptage de zombies tués et vérification pour lancer la manche suivante

1.2/ Apparition des zombies

Points d'apparition

Sur la carte, les points d'apparition sont définis à des emplacements précis comme dans Call of Duty mais aussi pour des raisons liés à des contraintes de Minecraft.

L'idée était d'utiliser des "portes armures" donc des mannequins invisibles et indestructibles par le joueur avec un tag spécific "Spawn". Vous allez comprendre pourquoi ce choix.

Spawn de zombies avec des mannequins invisibles

Apparitions à proximité du joueur

Dans Call of Duty, les zombies peu importe où se situe le joueur sur la map, apparaissent toujours à proximité et connaissent toujours la position du joueur.

Minecraft ne fonctionne pas comme ça, les zombies arrêtent de suivre au bout de 20 blocs et ne voient pas les joueurs à travers les obstacles. Ce qui est très contraignant du côté de la fluidité du gameplay.

La seule commande réalisable permmettant de reproduire le fonctionnement de COD est celle-ci : execute as @r[team=Survivors] at @s if score @s ZombiesToSpawn matches 1.. run execute positioned as @e[type=minecraft:armor_stand,sort=random,limit=1,distance=..17,tag=Spawn] run summon minecraft:zombie ~ ~ ~

Dans Minecraft, on peut calculer la distance entre un joueur (une entité donc) avec une autre entité. Mais on ne peut pas directement faire apparaitre un zombie à une distance précise du joueur. Par contre on peut aussi faire apparaitre exactement une entité sur une autre entité.

C'est pour cela que l'unique moyen était de faire en sorte qu'un "spawn" soit considéré comme une entité (fixe) permettant de détecter les "spawns" situés dans la zone autour du joueur. On réalise donc avec cette commande l'opération :
On sélectionne tous les joueurs dans la team "Survivors" traduit par @s, on vérifie si ZombiesToSpawn vaut au moins 1, si oui alors on recherche de manière aléatoire si un armor stand avec le tag "Spawn", se situe à moins de 17 blocs des joueurs. Si oui, alors on fait apparaitre le zombie à l'emplacement de l'armor stand choisit aléatoirement.

Suivi du joueur