diff --git a/client/autoloads/gamestate.gd b/client/autoloads/gamestate.gd
index 057fd9a877bb244e37f3744c248ab6c4ad5b759e..f82123345789f3e06f7a3b337c391352a47ea5c2 100644
--- a/client/autoloads/gamestate.gd
+++ b/client/autoloads/gamestate.gd
@@ -1,7 +1,7 @@
 extends Node
 
 const GAMEPATH:String = "/root/game/"
-var players = {}
+var players:Dictionary = {}
 var maxPlayers:int
 
 enum {NOT_PLAYING=0, PLAYING=1, WAS_PLAYING=2}
@@ -116,20 +116,17 @@ func serverAlert(text:String):
 
 # --- Called by network ---
 # Start the game
-func startGame(players, pseudos, skins):
-	for i in range(len(players)):
-		registerPlayer(players[i],pseudos[i],skins[i])
+func startGame(players:Dictionary):
+	registerPlayer(players)
 	interfaces.loadNewScene(interfaces.GAME_PATH)
 
 
 # --- Called by network ---
 # Register the players of the same game
-func registerPlayer(networkId:int, pseudo:String, skinId:int):
-	self.players[networkId] = {
-		"pseudo": pseudo,
-		"skin": skinId
-	}
-	print("Player added to the game: ", networkId)
+func registerPlayer(players:Dictionary):
+	self.players = players
+	for networkId in players:
+		print("Player added to the game: ", networkId)
 
 
 # --- Called by network ---
diff --git a/client/autoloads/network.gd b/client/autoloads/network.gd
index b68320503cf86ca478e8b38650aebd61f5c18afc..3fbd4f94ccfc8db43d0f64b341da13bce749be0a 100644
--- a/client/autoloads/network.gd
+++ b/client/autoloads/network.gd
@@ -117,9 +117,9 @@ remote func serverAlert(text:String):
 		gamestate.serverAlert(text)
 
 
-remote func startGame(players:Array, pseudoArgs:Array, skinArgs:Array):
+remote func startGame(players:Dictionary):
 	if get_tree().get_rpc_sender_id()==gamestate.serverNetworkId:
-		gamestate.startGame(players, pseudoArgs, skinArgs)
+		gamestate.startGame(players)
 
 
 #################################################################
diff --git a/client/entities/characters/player.gd b/client/entities/characters/player.gd
index bbb4a40d1034f69e191eb2acdf7638a283d30399..5bc1bd3b818092e75e4f343438a1322e54dd8179 100644
--- a/client/entities/characters/player.gd
+++ b/client/entities/characters/player.gd
@@ -1,5 +1,7 @@
 extends KinematicBody
 
+var pseudo:String = "anonymous"
+
 var currentDirection:int = 1
 var currentRotation:float = 0
 var model
@@ -15,6 +17,10 @@ func _process(delta):
 	model.rotation = model.rotation.linear_interpolate(Vector3(0,currentRotation,0),delta*SPEED)
 
 
+# Set pseudo
+func setPseudo(pseudoString:String):
+	self.pseudo = pseudoString
+
 # Set character skin
 func setSkin(skinId:int):
 	var skins = {
diff --git a/client/entities/characters/pseudo.gd b/client/entities/characters/pseudo.gd
index 4d263eeaa1126d76565a517b8787207d13c8b3a7..bcaffd4d9811c2fabb43f3644281116cc599ced2 100644
--- a/client/entities/characters/pseudo.gd
+++ b/client/entities/characters/pseudo.gd
@@ -11,7 +11,7 @@ func _ready():
 	var my_id = get_tree().get_network_unique_id()
 
 	if str(my_id) != str (player.get_name()) : 
-		set_text(player.get_name())
+		set_text(player.pseudo)
 
 
 func _process(_delta):
diff --git a/client/levels/hud/hud.gd b/client/levels/hud/hud.gd
index b02a5eb585a04372d18b4e024c8c3e92f7762bf0..cda4818b26e6cdaf3600248b5f49aa732b8c5270 100644
--- a/client/levels/hud/hud.gd
+++ b/client/levels/hud/hud.gd
@@ -105,7 +105,7 @@ func displayUser(name,img):
 	userImg.texture = load(img)
 	
 func displayNbKills():
-	nbKills.text = int(nbKills.text) + 1
+	nbKills.text = str(int(nbKills.text) + 1)
 	
 func showInventory(img):
 	inventory.texture = load(img)
diff --git a/client/levels/hud/pseudo_hud.gd b/client/levels/hud/pseudo_hud.gd
index b891b23a4906da549919b70d2db4896381502502..d3f5d2944b8cacd4a49b9e0314b9e473ebd2eb79 100644
--- a/client/levels/hud/pseudo_hud.gd
+++ b/client/levels/hud/pseudo_hud.gd
@@ -6,10 +6,7 @@ var posId
 var player
 
 func _ready():
-	player = get_node("../../")
-
 	var my_id = get_tree().get_network_unique_id()
 
-	if str(my_id)!=str(player.get_name()):
-		set_text(gamestate.players[my_id])
+	set_text(gamestate.players[my_id]["pseudo"])
 
diff --git a/client/levels/selectChar/characterSelection.gd b/client/levels/selectChar/characterSelection.gd
index 457b8274274db8a24dd1d049f657db915c05159b..0933b7ef9f68862b0dae55bd30c2a0c8ad52b65a 100644
--- a/client/levels/selectChar/characterSelection.gd
+++ b/client/levels/selectChar/characterSelection.gd
@@ -222,7 +222,7 @@ func buttonHeader(button_name):
 		#globals.load_new_scene("res://levels/lobby/lobby.tscn")
 		if currentChar == SKIN_DEFAULT:
 			currentChar = SKIN_DISCO
-		gamestate.joinGameRequest(interfaces.NUMBER_OF_PLAYERS, "playerName", currentChar)
+		gamestate.joinGameRequest(interfaces.NUMBER_OF_PLAYERS, interfaces.pseudo, currentChar)
 #		print("SEND THE USER AND THE CHARACTER TO THE SERVER")
 #		print("THE SERVER WILL DO THE REST I THINK")
 #		print("PUT THE GAME HERE")
diff --git a/client/levels/test/game.gd b/client/levels/test/game.gd
index 52a983b143146c4e102a2470154b0ef415c964ba..6501664b8a5220d3d521fdf2d098fb01404b6b74 100644
--- a/client/levels/test/game.gd
+++ b/client/levels/test/game.gd
@@ -46,6 +46,7 @@ func _ready():
 		var player:Node = player_scene.instance()
 
 		player.set_name(str(peer_id))
+		player.setPseudo(gamestate.players[peer_id]["pseudo"])
 		player.setSkin(gamestate.players[peer_id]["skin"])
 		get_node("/root/game/").add_child(player)
 
diff --git a/server/autoloads/gamestate.gd b/server/autoloads/gamestate.gd
index f788b8007a6a9cfbaea9e6e9dbb6a6e689add316..eef19876421debf367af6b3690e0151569e4149d 100644
--- a/server/autoloads/gamestate.gd
+++ b/server/autoloads/gamestate.gd
@@ -15,7 +15,7 @@ var registeredClients:Array = []
 # 	pseudo: ...
 # 	skin: ...
 # }}
-var clientArgs= {}
+var players:Dictionary = {}
 
 const START_UP_DELAY:int = 5
 signal serverValidation
@@ -65,7 +65,7 @@ func waitClientRequest(clientNetworkId:int, pseudo:String, skinId:int):
 	# General case
 	if registeredClients.size()+awaitedClients.size()<self.maxClients:
 		awaitedClients.append(clientNetworkId)
-		clientArgs[clientNetworkId] = {
+		players[clientNetworkId] = {
 			"pseudo": pseudo,
 			"skin": skinId
 		}
@@ -84,11 +84,11 @@ func clientLost(clientNetworkId:int):
 	if awaitedClients.has(clientNetworkId):
 		print("S:", serverId, " Client ", clientNetworkId, " was purged from the awaited clients")
 		awaitedClients.erase(clientNetworkId)
-		clientArgs.erase(clientNetworkId)
+		players.erase(clientNetworkId)
 	elif registeredClients.has(clientNetworkId):
 		print("S:", serverId, " Client ", clientNetworkId, " was purged from the registered clients")
 		registeredClients.erase(clientNetworkId)
-		clientArgs.erase(clientNetworkId)
+		players.erase(clientNetworkId)
 
 ###
 #################################################################
@@ -133,7 +133,7 @@ func leaveServerRequest(clientNetworkId:int):
 	# The client was registered
 	elif registeredClients.has(clientNetworkId):
 		registeredClients.erase(clientNetworkId)
-		clientArgs.erase(clientNetworkId)
+		players.erase(clientNetworkId)
 		print("S:", serverId, " peer ", clientNetworkId, " erased for the registered clients")
 
 	# The client trying to leave was not there in the first place !
@@ -188,12 +188,12 @@ func spawnPlayer():
 
 	# Attribute a random spawn point
 	for peer_id in registeredClients:
-		var player = playerScene.instance()
-		player.set_name(str(peer_id))
-		get_node(GAMEPATH).add_child(player)
+		var newPlayer = playerScene.instance()
+		newPlayer.set_name(str(peer_id))
+		get_node(GAMEPATH).add_child(newPlayer)
 		var i=rng.randi_range(0,len(listAvailableSpawn)-1)
 		var spawnPosition = get_node(GAMEPATH+"spawnCollection/spawn"+str(listAvailableSpawn[i]+1)).get_translation()
-		player.translate(spawnPosition)
+		newPlayer.translate(spawnPosition)
 		listAvailableSpawn.remove(i)
 
 
@@ -209,18 +209,9 @@ func startGame():
 
 	spawnPlayer()
 
-	var pseudoArray:Array = []
-	var skinArray:Array = []
-
-	# Create argument arrays
-	for clientNetworkId in registeredClients:
-		var player = clientArgs[clientNetworkId]
-		pseudoArray.append(player["pseudo"])
-		skinArray.append(player["skin"])
-
 	# Broadcast the beginning of the game
 	for clientNetworkId in registeredClients:
-			network.startGame(clientNetworkId, registeredClients, pseudoArray, skinArray)
+			network.startGame(clientNetworkId, players)
 
 	game.spawnInitItem()
 
@@ -232,7 +223,7 @@ func startGame():
 func kickPlayer(playerId:int):
 	network.kickPlayer(playerId, "You lost ...")
 	registeredClients.erase(playerId)
-	clientArgs.erase(playerId)
+	players.erase(playerId)
 
 
 # Inform the winner and the maestro that the game has ended, and then destroy the server
@@ -241,7 +232,7 @@ func endGame():
 	network.gameHasEnded(registeredClients[0])
 
 	registeredClients.clear()
-	clientArgs.clear()
+	players.clear()
 	get_node("/root/game").queue_free()
 
 
diff --git a/server/autoloads/network.gd b/server/autoloads/network.gd
index b9acb8d54e05e6add50e2484f05de9ab9d573b18..7317c0c3cb054b2733abcfa1e2563873bbf0cbf1 100644
--- a/server/autoloads/network.gd
+++ b/server/autoloads/network.gd
@@ -95,8 +95,8 @@ func serverAlert(clientNetworkId:int, text:String):
 
 # Start the game in the client app
 # => will probably change after the network merge !!!
-func startGame(clientNetworkId:int, registeredClients:Array, pseudoArg:Array, skinArg:Array):
-	rpc_id(clientNetworkId, "startGame", registeredClients, pseudoArg, skinArg)
+func startGame(clientNetworkId:int, players:Dictionary):
+	rpc_id(clientNetworkId, "startGame", players)
 
 
 # Make the client leave the game with a message displayed