diff --git a/client/src/main.js b/client/src/main.js
index 46c4e3e47d6392d07a1dfb5fbba31f16d6b53192..225f6e724f49dff8b22ae4f85364be9f231ea5df 100644
--- a/client/src/main.js
+++ b/client/src/main.js
@@ -78,6 +78,7 @@ function afficherFinDePartie() {
 
 function startGame(event) {
 	gameStarted = true;
+	socket.emit('start', gameStarted);
 	event.preventDefault();
 	canvas.style.display = '';
 	document.querySelector('.divMain').innerHTML = setHtml.vide();
@@ -86,6 +87,10 @@ function startGame(event) {
 	socket.emit('canvasSize', canvasSize);
 }
 
+setInterval(() => {
+	socket.emit('start', gameStarted);
+}, 1000 / 16);
+
 const canvasResizeObserver = new ResizeObserver(() => resampleCanvas());
 canvasResizeObserver.observe(canvas);
 
@@ -116,48 +121,48 @@ let newEnemis = [];
 let newBonus = [];
 
 function render() {
-	console.log(sec);
 	context.clearRect(0, 0, canvas.width, canvas.height);
 	context.drawImage(background, 0, 0, canvas.width, canvas.height);
-
-	context.font = '40pt New Super Mario Font U';
-	context.fillStyle = 'blue';
-	context.fillText(avatar.getScore(), 10, 50);
-	context.fillText(0 + ':' + min + ':' + sec, canvas.width / 2, 50);
-
-	for (let i = 0; i < avatar.getVies(); i++) {
-		context.drawImage(imageCoeur, canvas.width - (3 - i) * 50, 0, 50, 50);
-	}
-
-	for (let avatarId in avatars) {
-		context.drawImage(avatar.image, avatars[avatarId].x, avatars[avatarId].y);
-		if (avatars[avatarId].projectiles != undefined) {
-			avatars[avatarId].projectiles.forEach(projectile => {
-				context.drawImage(imageProjectile, projectile.x, projectile.y);
-			});
+	console.log(gameStarted);
+	if (gameStarted) {
+		context.font = '40pt New Super Mario Font U';
+		context.fillStyle = 'blue';
+		context.fillText(avatar.getScore(), 10, 50);
+		context.fillText(0 + ':' + min + ':' + sec, canvas.width / 2, 50);
+
+		for (let i = 0; i < avatar.getVies(); i++) {
+			context.drawImage(imageCoeur, canvas.width - (3 - i) * 50, 0, 50, 50);
 		}
-	}
-	socket.on('enemis', data => {
-		newEnemis = data;
-	});
-	newEnemis.forEach(enemi => {
-		if (enemi.difficulté == 1) {
-			draw(canvas, context, imageEnemi, enemi.x, enemi.y);
-		} else if (enemi.difficulté == 2) {
-			draw(canvas, context, imageEnemi2, enemi.x, enemi.y);
+		for (let avatarId in avatars) {
+			context.drawImage(avatar.image, avatars[avatarId].x, avatars[avatarId].y);
+			if (avatars[avatarId].projectiles != undefined) {
+				avatars[avatarId].projectiles.forEach(projectile => {
+					context.drawImage(imageProjectile, projectile.x, projectile.y);
+				});
+			}
 		}
-	});
-	socket.on('bonusArray', data => {
-		newBonus = data;
-	});
-	newBonus.forEach(bonus => {
-		console.log(bonus);
-		let img = new Image();
-		img.src = bonusImages[bonus.choix];
-		img.width = 75;
-		img.height = 75;
-		draw(canvas, context, img, bonus.x, bonus.y);
-	});
+		socket.on('enemis', data => {
+			newEnemis = data;
+		});
+		newEnemis.forEach(enemi => {
+			if (enemi.difficulté == 1) {
+				draw(canvas, context, imageEnemi, enemi.x, enemi.y);
+			} else if (enemi.difficulté == 2) {
+				draw(canvas, context, imageEnemi2, enemi.x, enemi.y);
+			}
+		});
+		socket.on('bonusArray', data => {
+			newBonus = data;
+		});
+		newBonus.forEach(bonus => {
+			console.log(bonus);
+			let img = new Image();
+			img.src = bonusImages[bonus.choix];
+			img.width = 75;
+			img.height = 75;
+			draw(canvas, context, img, bonus.x, bonus.y);
+		});
+	}
 
 	requestAnimationFrame(render);
 }
diff --git a/server/index.js b/server/index.js
index 23577dda72b0fab6aa16462aab0122189027770c..be807029b66640bd8cc635597b633d0f840e6121 100644
--- a/server/index.js
+++ b/server/index.js
@@ -19,6 +19,7 @@ let canvasSize = new Coordinate(1920, 1261);
 
 let canLostLifeAvatar = true;
 let canLostLifeEnemi = true;
+let gameStarted = false;
 
 let t = new timer();
 
@@ -42,8 +43,12 @@ httpServer.listen(port, () => {
 });
 
 setInterval(function () {
-	t.addTime();
-	io.emit('timer', t.getMin(), t.getSec());
+	if (gameStarted) {
+		t.addTime();
+		io.emit('timer', t.getMin(), t.getSec());
+	} else {
+		t = new timer();
+	}
 }, 1000);
 
 const avatars = [];
@@ -74,6 +79,14 @@ io.on('connection', socket => {
 		}
 	});
 
+	socket.on('start', s => {
+		if (s == true) {
+			gameStarted = s;
+		} else {
+			gameStarted = false;
+		}
+	});
+
 	socket.on('shoot', shoot => {
 		const playerAvatar = avatars.find(avatar => avatar.nom === shoot.id);
 
@@ -98,20 +111,23 @@ io.on('connection', socket => {
 });
 
 let spawnIntervalLV1 = setInterval(() => {
-	if (t.getSec() >= 10) {
-		LVL2start = true;
-	}
+	console.log(gameStarted);
+	if (gameStarted) {
+		if (t.getSec() >= 10) {
+			LVL2start = true;
+		}
 
-	let randomY = Math.random() * (canvasSize.height - 0) + 0;
-	do {
-		randomY = Math.random() * (canvasSize.height - 0) + 0;
-	} while (randomY > canvasSize.height - 57);
-	const newEnemy = new enemi(canvasSize.width, randomY, 0, 1);
-	enemis.push(newEnemy);
+		let randomY = Math.random() * (canvasSize.height - 0) + 0;
+		do {
+			randomY = Math.random() * (canvasSize.height - 0) + 0;
+		} while (randomY > canvasSize.height - 57);
+		const newEnemy = new enemi(canvasSize.width, randomY, 0, 1);
+		enemis.push(newEnemy);
+	}
 }, 1000);
 
 let spawnIntervalLV2 = setInterval(() => {
-	if (LVL2start) {
+	if (LVL2start && gameStarted) {
 		let randomY = Math.random() * (canvasSize.height - 0) + 0;
 		do {
 			randomY = Math.random() * (canvasSize.height - 0) + 0;
@@ -124,93 +140,100 @@ let spawnIntervalLV2 = setInterval(() => {
 }, 800);
 
 let spawnBonusInterval = setInterval(() => {
-	let randomX;
-	let randomY;
-	const choix = Math.floor(Math.random() * bonusNoms.length);
-	do {
-		randomY = Math.random() * (canvasSize.height - 0) + 0;
-	} while (randomY > canvasSize.height - 75);
-	do {
-		randomX = Math.random() * (canvasSize.width - 0) + 0;
-	} while (randomX > canvasSize.width - 75);
-	const bonus = new Bonus(choix, 1, randomX, randomY, t.getTotalTime());
-	bonusArray.push(bonus);
+	if (gameStarted) {
+		let randomX;
+		let randomY;
+		const choix = Math.floor(Math.random() * bonusNoms.length);
+		do {
+			randomY = Math.random() * (canvasSize.height - 0) + 0;
+		} while (randomY > canvasSize.height - 75);
+		do {
+			randomX = Math.random() * (canvasSize.width - 0) + 0;
+		} while (randomX > canvasSize.width - 75);
+		const bonus = new Bonus(choix, 1, randomX, randomY, t.getTotalTime());
+		bonusArray.push(bonus);
+	}
 }, 15000);
 
 setInterval(() => {
-	io.emit('enemis', enemis);
-	io.emit('bonusArray', bonusArray);
-
-	let avatarData = [];
-	avatars.forEach(avatar => {
-		avatar.canvasSize = canvasSize;
-		if (
-			avatar.getStatut() == 'invincibilite' &&
-			t.getTotalTime() - avatar.getStatutTime() == 15
-		) {
-			avatar.setStatut('null');
-		}
-		enemis.forEach(enemi => {
+	if (gameStarted) {
+		io.emit('enemis', enemis);
+		io.emit('bonusArray', bonusArray);
+
+		let avatarData = [];
+		avatars.forEach(avatar => {
+			avatar.canvasSize = canvasSize;
 			if (
-				enemi.hitbox.colision(avatar.hitbox) &&
-				avatar.getStatut() != 'invincibilite'
+				avatar.getStatut() == 'invincibilite' &&
+				t.getTotalTime() - avatar.getStatutTime() == 15
 			) {
-				if (canLostLifeAvatar) {
-					avatar.decrementScore(5);
-					enemis.splice(enemis.indexOf(enemi), 1);
-					avatar.perdreVie();
-					canLostLifeAvatar = false;
-					setTimeout(function () {
-						canLostLifeAvatar = true;
-					}, 100);
-				}
-				if (avatar.getVies() == 0) {
-					//afficherFinDePartie();
-					avatar.initAvatar();
-					//t = new timer();
-				}
+				avatar.setStatut('null');
 			}
-			if (enemi.getVies() < 0) {
-				avatar.incrementScore(5);
-				enemis.splice(enemis.indexOf(enemi), 1);
-			}
-			enemi.deplacer();
-			avatar.colision(enemi.hitbox);
-			avatar.projectiles.forEach(projectile => {
-				if (projectile.hitbox.colision(enemi.hitbox)) {
-					avatar.projectiles.splice(avatar.projectiles.indexOf(projectile), 1);
-					if (canLostLifeEnemi) {
-						enemi.perdreVie();
-						canLostLifeEnemi = false;
+			enemis.forEach(enemi => {
+				if (
+					enemi.hitbox.colision(avatar.hitbox) &&
+					avatar.getStatut() != 'invincibilite'
+				) {
+					if (canLostLifeAvatar) {
+						avatar.decrementScore(5);
+						enemis.splice(enemis.indexOf(enemi), 1);
+						avatar.perdreVie();
+						canLostLifeAvatar = false;
 						setTimeout(function () {
-							canLostLifeEnemi = true;
-						}, 1000 / 60);
+							canLostLifeAvatar = true;
+						}, 100);
+					}
+					if (avatar.getVies() == 0) {
+						//afficherFinDePartie();
+						avatar.initAvatar();
+						//t = new timer();
 					}
 				}
+				if (enemi.getVies() < 0) {
+					avatar.incrementScore(5);
+					enemis.splice(enemis.indexOf(enemi), 1);
+				}
+				enemi.deplacer();
+				avatar.colision(enemi.hitbox);
+				avatar.projectiles.forEach(projectile => {
+					if (projectile.hitbox.colision(enemi.hitbox)) {
+						avatar.projectiles.splice(
+							avatar.projectiles.indexOf(projectile),
+							1
+						);
+						if (canLostLifeEnemi) {
+							enemi.perdreVie();
+							canLostLifeEnemi = false;
+							setTimeout(function () {
+								canLostLifeEnemi = true;
+							}, 1000 / 60);
+						}
+					}
+				});
 			});
-		});
-		avatar.deplacer();
-		avatar.projectiles.forEach(projectile => projectile.deplacer());
-		avatarData.push({
-			id: avatar.id,
-			x: avatar.getX(),
-			y: avatar.getY(),
-			projectiles: avatar.projectiles,
-		});
-		bonusArray.forEach(bonus => {
-			if (bonus.hitbox.colision(avatar.hitbox)) {
-				if (bonusNoms[bonus.getChoix()] == 'vie') {
-					avatar.gagnerVie();
-				} else if (bonusNoms[bonus.getChoix()] == 'invincibilite') {
-					avatar.setStatut('invincibilite');
-					avatar.setStatutTime(t.getTotalTime());
+			avatar.deplacer();
+			avatar.projectiles.forEach(projectile => projectile.deplacer());
+			avatarData.push({
+				id: avatar.id,
+				x: avatar.getX(),
+				y: avatar.getY(),
+				projectiles: avatar.projectiles,
+			});
+			bonusArray.forEach(bonus => {
+				if (bonus.hitbox.colision(avatar.hitbox)) {
+					if (bonusNoms[bonus.getChoix()] == 'vie') {
+						avatar.gagnerVie();
+					} else if (bonusNoms[bonus.getChoix()] == 'invincibilite') {
+						avatar.setStatut('invincibilite');
+						avatar.setStatutTime(t.getTotalTime());
+					}
+					bonusArray.splice(bonusArray.indexOf(bonus), 1);
 				}
-				bonusArray.splice(bonusArray.indexOf(bonus), 1);
-			}
-			if (bonus.estExpire(t.getTotalTime())) {
-				bonusArray.splice(bonusArray.indexOf(bonus), 1);
-			}
+				if (bonus.estExpire(t.getTotalTime())) {
+					bonusArray.splice(bonusArray.indexOf(bonus), 1);
+				}
+			});
 		});
-	});
-	io.emit('avatarsData', avatarData);
+		io.emit('avatarsData', avatarData);
+	}
 }, 1000 / 60);