diff --git a/client/project.godot b/client/project.godot
index 8f39ebe9ebdaebeeefbf2dbda2c76c8fb0e343f1..8783985e03b4c54333c7e1ebe525e3b168f1fc00 100644
--- a/client/project.godot
+++ b/client/project.godot
@@ -16,7 +16,7 @@ _global_script_class_icons={
 [application]
 
 config/name="client"
-run/main_scene="res://scenes/levels/Game.tscn"
+run/main_scene="res://scenes/levels/lobby/lobby.tscn"
 config/icon="res://icon.png"
 
 [rendering]
diff --git a/client/scenes/entities/player/Player.gd b/client/scenes/entities/player/Player.gd
index 233131b27ed8b917b293cad19f4345929f73b10f..c633fbe895224cec3ac19d80f54e185501fc98cc 100644
--- a/client/scenes/entities/player/Player.gd
+++ b/client/scenes/entities/player/Player.gd
@@ -32,13 +32,13 @@ func process_input(delta):
 	dir = Vector3()
 	var input_movement:int = 0
 	
-	if Input.is_action_pressed("movement_left"):
+	if Input.is_action_pressed("ui_left"):
 		input_movement = -1
-	if Input.is_action_pressed("movement_right"):
+	if Input.is_action_pressed("ui_right"):
 		input_movement = 1
 		
 	if player.is_on_floor() || player.is_on_wall():
-		if Input.is_action_just_pressed("movement_jump"):
+		if Input.is_action_just_pressed("ui_up"):
 			vel.y = JUMP_SPEED
 		
 	if Input.is_action_pressed("movement_sprint"):
diff --git a/client/scenes/levels/Game.tscn b/client/scenes/levels/Game.tscn
index 612844743e859f4178e30ffa0b5bf0b084972b69..c4439a852580229832b2c462b15272bb62d182b7 100644
--- a/client/scenes/levels/Game.tscn
+++ b/client/scenes/levels/Game.tscn
@@ -1,25 +1,21 @@
-[gd_scene load_steps=4 format=2]
+[gd_scene load_steps=3 format=2]
 
 [ext_resource path="res://scenes/entities/player/Player.tscn" type="PackedScene" id=1]
-[ext_resource path="res://Camera.gd" type="Script" id=2]
-[ext_resource path="res://scenes/entities/bloc/Bloc.tscn" type="PackedScene" id=3]
-
-
+[ext_resource path="res://scenes/entities/bloc/Bloc.tscn" type="PackedScene" id=2]
 
 [node name="Spatial" type="Spatial"]
 
 [node name="Player" parent="." instance=ExtResource( 1 )]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.80767, 0 )
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0417032, 1.4664, 0 )
 
 [node name="Camera" type="Camera" parent="."]
 transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.08, 18.986 )
 fov = 30.0
-script = ExtResource( 2 )
 
 [node name="Structure" type="Spatial" parent="."]
 
-[node name="Bloc" parent="Structure" instance=ExtResource( 3 )]
+[node name="Bloc" parent="Structure" instance=ExtResource( 2 )]
 transform = Transform( 10, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
 
-[node name="Bloc2" parent="Structure" instance=ExtResource( 3 )]
+[node name="Bloc2" parent="Structure" instance=ExtResource( 2 )]
 transform = Transform( 5, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.15191, 0 )
diff --git a/client/scenes/levels/lobby/lobby.gd b/client/scenes/levels/lobby/lobby.gd
new file mode 100644
index 0000000000000000000000000000000000000000..444e7a64668621473257c0fc09741188923d86b1
--- /dev/null
+++ b/client/scenes/levels/lobby/lobby.gd
@@ -0,0 +1,62 @@
+extends Control
+
+var players = {}
+
+func _ready():
+	get_tree().connect("connected_to_server", self, "_player_connected")
+	get_tree().connect("connection_failed", self, "_connection_failed")
+	get_tree().connect("server_disconnected", self, "_player_disconnected")
+
+
+
+func _on_joinButton_pressed():
+	var ip = get_node("menu/ipLineEdit").text
+	if not ip.is_valid_ip_address():
+		get_node("menu/errorLabel").text = "Invalid IPv4 address!"
+		return
+
+	var port = get_node("menu/portLineEdit").text
+	if port == "":
+		get_node("menu/errorLabel").text = "Invalid port!"
+		return
+
+	get_node("menu/errorLabel").text=""
+	get_node("menu/joinButton").disabled = true
+	
+	var peer_join = NetworkedMultiplayerENet.new()
+	peer_join.create_client(ip, int(port))
+	get_tree().set_network_peer(peer_join)	
+	#checks:
+	print("Trying to join the server ", ip, ":", port) 
+	
+remote func register_player(id): 
+	print("A new player joined the game ..", id) #adding the new id to anyones array!
+	#if !(id in players):
+	players[id] = ""
+	#We can list all the users 
+	
+	# Checking whether the tree is initialized as a server or client:
+	# Server sends the info of existing players back to the new player
+	if get_tree().is_network_server(): 		
+		# Sending the list of existing players to the new player from ther server's personal list
+		for peer_id in players:
+			rpc_id(id, "register_player", peer_id) 	
+
+remote func get_message(mess):
+	if mess == "quit":
+		print("Received order to quit")
+		get_tree().set_network_peer(null)
+		get_tree().quit()
+	else:
+		print(mess)
+
+func _player_connected():
+	print("You succesfuly joined the server with the id " + str(get_tree().get_network_unique_id()))
+	
+	
+	
+func _connection_failed():
+	print("Connection failure")
+	
+func _player_disconnected():
+	print("You disconnected the server")
\ No newline at end of file
diff --git a/client/scenes/levels/lobby/lobby.tscn b/client/scenes/levels/lobby/lobby.tscn
new file mode 100644
index 0000000000000000000000000000000000000000..d419ae088b9a8b0a37ad0ede22ecd421c511b1cb
--- /dev/null
+++ b/client/scenes/levels/lobby/lobby.tscn
@@ -0,0 +1,59 @@
+[gd_scene load_steps=2 format=2]
+
+[ext_resource path="res://scenes/levels/lobby/lobby.gd" type="Script" id=1]
+
+[node name="lobby" type="Control"]
+anchor_right = 1.0
+anchor_bottom = 1.0
+script = ExtResource( 1 )
+
+[node name="menu" type="Panel" parent="."]
+margin_right = 506.0
+margin_bottom = 302.0
+
+[node name="ipLabel" type="Label" parent="menu"]
+margin_left = 60.0
+margin_top = 32.0
+margin_right = 140.0
+margin_bottom = 48.0
+text = "IP:"
+
+[node name="ipLineEdit" type="LineEdit" parent="menu"]
+margin_left = 62.0
+margin_top = 64.0
+margin_right = 176.0
+margin_bottom = 100.0
+rect_pivot_offset = Vector2( 55, 16 )
+hint_tooltip = "91.121.81.74 : lucas
+127.0.0.1 : local"
+text = "91.121.81.74"
+
+[node name="portLabel" type="Label" parent="menu"]
+margin_left = 60.0
+margin_top = 131.0
+margin_right = 140.0
+margin_bottom = 147.0
+text = "Port:"
+
+[node name="portLineEdit" type="LineEdit" parent="menu"]
+margin_left = 66.0
+margin_top = 173.0
+margin_right = 180.0
+margin_bottom = 209.0
+rect_pivot_offset = Vector2( 55, 16 )
+hint_tooltip = "défini en dur: 10001"
+text = "10001"
+
+[node name="joinButton" type="Button" parent="menu"]
+margin_left = 319.0
+margin_top = 133.0
+margin_right = 398.0
+margin_bottom = 181.0
+text = "Join"
+
+[node name="errorLabel" type="Label" parent="menu"]
+margin_left = 55.0
+margin_top = 244.0
+margin_right = 455.0
+margin_bottom = 277.0
+[connection signal="pressed" from="menu/joinButton" to="." method="_on_joinButton_pressed"]
diff --git a/client/scenes/levels/testnetwork/Node.tscn b/client/scenes/levels/testnetwork/Node.tscn
index d6759b972c111cb3c8053993bd76d4bf70081ce4..d8855e2060e5c05f623c67f3139022c5c31e9bd3 100644
--- a/client/scenes/levels/testnetwork/Node.tscn
+++ b/client/scenes/levels/testnetwork/Node.tscn
@@ -1,6 +1,6 @@
 [gd_scene load_steps=2 format=2]
 
-[ext_resource path="res://Node.gd" type="Script" id=1]
+[ext_resource path="res://scenes/levels/testnetwork/Node.gd" type="Script" id=1]
 
 [node name="Node" type="Node"]
 script = ExtResource( 1 )
diff --git a/server/icon.png.import b/server/icon.png.import
old mode 100755
new mode 100644
diff --git a/server/scripts/Node.gd b/server/scripts/Node.gd
old mode 100755
new mode 100644
index 2b70dfc5fa5541e48f81941ef390b308abcbc85b..004d9f67e9a15e65fd32bfa28da46ec2ddce4bdb
--- a/server/scripts/Node.gd
+++ b/server/scripts/Node.gd
@@ -1,24 +1,48 @@
-#server
-
 extends Node
 
-var peer = NetworkedMultiplayerENet.new()
-export var PORT = 10001
+const PORT = 10001
+const MAX_CLIENTS = 2
+
+var players = {}
 
 func _ready():
-	peer.create_server(PORT,2)
+	get_tree().connect("network_peer_connected", self, "_player_connected")
+	get_tree().connect("network_peer_disconnected", self, "_player_disconnected")
+	#get_tree().connect("connection_failed", self, "_player_disconnected")
+	
+	var peer = NetworkedMultiplayerENet.new()
+	peer.create_server(PORT, MAX_CLIENTS)
 	get_tree().set_network_peer(peer)
 	
-	get_tree().connect("network_peer_connected", self, "_player_connected") #Quand un client se connecte
-	get_tree().connect("network_peer_disconnected", self, "_player_disconnected") #Quand un client se déconnecte
+	print("Server now hosting")
 	
-		
-		
+	
+remote func register_player(id):
+	print("A new player joined the game ..", id) #adding the new id to anyones array!
+	#if !(id in players):
+	players[id] = ""
+	#We can list all the users 
+	
+	# Checking whether the tree is initialized as a server or client:
+	# Server sends the info of existing players back to the new player
+	if get_tree().is_network_server(): 		
+		# Sending the list of existing players to the new player from ther server's personal list
+		for peer_id in players:
+			rpc_id(id, "register_player", peer_id)
+
+
+func game_setup():
+	print("game started with players ", players.values())
+
 
 #Quand un client se connecte		
 func _player_connected(id):
-	print("Player ", id, " connected")
-	set_network_master(id)
+	if (players.size()<MAX_CLIENTS):
+		print("Hello players. I have just joined the game and I will beat u!: ", id)
+		register_player(id)
+		
+	else:
+		game_setup()
 	
 #Quand un client se déconnecte
 func _player_disconnected(id):