diff --git a/client/entities/characters/player.gd b/client/entities/characters/player.gd
index ddd4dad04953d30674add880868bef123094f7e9..f904beffceec7d841a5846aa48bf9cbc2de8b9ab 100644
--- a/client/entities/characters/player.gd
+++ b/client/entities/characters/player.gd
@@ -6,4 +6,9 @@ puppet func getRemoteMovement(position:Vector3):
 
 # Called by the remote player
 puppet func hurt(damages:int):
-	print("You suffered a hit and lost " + str(damages) + " HPs !")
\ No newline at end of file
+	print("You suffered a hit and lost " + str(damages) + " HPs !")
+	
+puppet func die(killerId:int):
+	print(str(killerId) + " killed " + self.name)
+	self.set_visible(false)
+	
\ No newline at end of file
diff --git a/client/entities/characters/player.tscn b/client/entities/characters/player.tscn
index 1d62a17316f3c1b7e404cdd206abeb868248e4bb..86fecbfd34110f5ad4b5b1d66c651d069242fa4b 100644
--- a/client/entities/characters/player.tscn
+++ b/client/entities/characters/player.tscn
@@ -2,19 +2,19 @@
 
 [ext_resource path="res://entities/characters/player.gd" type="Script" id=1]
 
-[node name="Player" type="KinematicBody"]
+[node name="player" type="KinematicBody"]
 script = ExtResource( 1 )
 
-[node name="Model" type="Spatial" parent="."]
+[node name="model" type="Spatial" parent="."]
 editor/display_folded = true
 
-[node name="CSGBox" type="CSGBox" parent="Model"]
+[node name="CSGBox" type="CSGBox" parent="model"]
 transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.513621, 0 )
 width = 0.35
 height = 1.05787
 depth = 0.684
 
-[node name="CSGSphere" type="CSGSphere" parent="Model"]
+[node name="CSGSphere" type="CSGSphere" parent="model"]
 transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.17856, 0 )
 radius = 0.2
 radial_segments = 24
diff --git a/server/autoloads/gamestate.gd b/server/autoloads/gamestate.gd
index d28868e90829ed83914f9a1086ab113f7242354d..af0a0e044799df94c7088e4c12973b7d352b8063 100644
--- a/server/autoloads/gamestate.gd
+++ b/server/autoloads/gamestate.gd
@@ -3,7 +3,7 @@ extends Node
 const GAMEPATH = "/root/game/"
 
 const PORT = 10001
-const MAX_CLIENTS = 1
+const MAX_CLIENTS = 2
 
 var players = {}
 
diff --git a/server/entities/characters/player.gd b/server/entities/characters/player.gd
index 2dc775fb0d96779b07d0e92e5e295326acfcc873..b9e94cccdeefb9c8f73936aee91639c08f512a09 100644
--- a/server/entities/characters/player.gd
+++ b/server/entities/characters/player.gd
@@ -1,9 +1,11 @@
 extends KinematicBody
 
-onready var ownId = self.name
+onready var ownId:int = int(self.name)
 
 ######## MOVEMENT AND POSITION VARS ########
 
+onready var collisionShape:CollisionShape = $collisionShape
+
 # Speed values
 const MAX_SPEED:float = 8.0
 const MAX_SPRINT_SPEED:float = 12.0
@@ -18,6 +20,11 @@ const DEACCEL:float = 16.0
 # Jump and fall values
 const JUMP_SPEED:float = 16.0
 var isJumping:bool = false
+
+var maxJump:int = 2         # Maximum number of jump that a character can do
+var currentJump:int = 0     # Actual number of jump
+var lastJumpId:int = 0      # Detect a new jump
+
 # TODO: unreal, we may want to stick that to the physical value
 const GRAVITY:float = -28.0
 
@@ -29,39 +36,40 @@ const FLOOR_NORMAL:Vector3 = Vector3(0,1,0)
 
 ######### ATTACKS VARS ########
 
+var isAlive:bool = true
+
 var isAttacking:bool = false
 onready var attackTimer:Tween = $attackTween
 
 # attack type
 enum {NONE=0, PRIMARY=1, SECONDARY=2}
+var lastPunchId:int = 0     # Detect a new punch (of any type)
+var idleTime:float = 0      # Stun when hitted + prevent spam
 
 # Primary attack parameters
 onready var primaryHitArea:Area = $primaryHitArea
-var primaryAttackDmg:float = 30.0
+var primaryAttackDmg:int = 30
 var primaryAttackDist:float = 1.2
-var primaryAttackDuration:float = 0.6
+var primaryAttackDuration:float = 0.4
 
 # Secondary attack parameters
 onready var secondaryHitArea:Area = $secondaryHitArea
-var secondaryAttackDmg:float = 15.0
+var secondaryAttackDmg:int = 15
 var secondaryAttackDist:float = 1.2
-var secondaryAttackDuration:float = 0.3
+var secondaryAttackDuration:float = 0.2
 
-# Character informations
-var maxJump:int = 2         # Maximum number of jump that a character can do
-var currentJump:int = 0     # Actual number of jump
-var lastJumpId:int = 0      # Detect a new jump
-
-var lastPunchId:int = 0     # Detect a new punch (of any type)
-var idleTime:float = 0      # Stun when hitted + prevent spam
+# Health points related values
+var hpMax:int = 60
+var hpNow:int = hpMax
 
 
 ######## FUNCTIONS ########
 
 # called by the engine
 func _physics_process(delta):
-	processMovement(delta)
-	broadcastMovement()
+	if isAlive:
+		processMovement(delta)
+		broadcastMovement()
 
 
 # Called from the game script to update the vars
@@ -187,25 +195,34 @@ func secondaryAttack():
 
 
 # Called when detected by an attack's hitbox
-func hurt(damages:int):
-	rpc_id(int(ownId), "hurt", damages)
+func hurt(damages:int, killerId:int):
+	hpNow -= damages
+	
+	if hpNow>0:
+		rpc_id(ownId, "hurt", damages)
+		
+	else:
+		rpc("die", killerId)
+		#self.queue_free()
+		isAlive = false
+		collisionShape.set_disabled(true)
 
 
 ######## SIGNALS ########
 
 # Primary hit has landed on something
 func _on_primaryHitArea_body_entered(body):
-	if body.name==ownId:
+	if int(body.name)==ownId:
 		return
 
 	print("body named " + body.name + " hit: primary")
-	body.hurt(primaryAttackDmg)
+	body.hurt(primaryAttackDmg, ownId)
 
 
 # Secondary hit has landed on something
 func _on_secondaryHitArea_body_entered(body):
-	if body.name==ownId:
+	if int(body.name)==ownId:
 		return
 
 	print("body named " + body.name + " hit: secondary")
-	body.hurt(secondaryAttackDmg)
+	body.hurt(secondaryAttackDmg, ownId)
diff --git a/server/entities/characters/player.tscn b/server/entities/characters/player.tscn
index 2c3ed4a4b6efdc7d8a1dfeb5182bfc99d34f19ac..eb94c6d53948e8b87d9cb78049ef7cc354d60632 100644
--- a/server/entities/characters/player.tscn
+++ b/server/entities/characters/player.tscn
@@ -8,24 +8,24 @@ extents = Vector3( 0.175, 0.275, 0.7 )
 [sub_resource type="BoxShape" id=2]
 extents = Vector3( 0.544245, 0.192381, 0.312851 )
 
-[node name="Player" type="KinematicBody"]
+[node name="player" type="KinematicBody"]
 collision_layer = 2
 collision_mask = 3
 script = ExtResource( 1 )
 
-[node name="Body_CollisionShape" type="CollisionShape" parent="."]
+[node name="collisionShape" type="CollisionShape" parent="."]
 transform = Transform( 1, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0.65, 0 )
 shape = SubResource( 1 )
 
-[node name="Model" type="Spatial" parent="."]
+[node name="model" type="Spatial" parent="."]
 
-[node name="CSGBox" type="CSGBox" parent="Model"]
+[node name="CSGBox" type="CSGBox" parent="model"]
 transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.513621, 0 )
 width = 0.35
 height = 1.05787
 depth = 0.684
 
-[node name="CSGSphere" type="CSGSphere" parent="Model"]
+[node name="CSGSphere" type="CSGSphere" parent="model"]
 transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.17856, 0 )
 radius = 0.2
 radial_segments = 24
diff --git a/server/levels/test/game.gd b/server/levels/test/game.gd
index 6774ce082ba9961cce19907ea66c78767cfb5480..f09e5567d7fad41a3ecf8625e31bbad407613150 100644
--- a/server/levels/test/game.gd
+++ b/server/levels/test/game.gd
@@ -2,6 +2,10 @@ extends Node
 
 master func sendPlayerInputs(movementInput, jumpInput, jumpId, sprintInput, attackStateInput):
 	
-	# Get the input from a client and send it to the matchig remote player
+	# Get the input from a client and send it to the matching remote player
 	var senderId = get_tree().get_rpc_sender_id()
 	gamestate.get_node("/root/game/"+str(senderId)).getPlayerInputs(movementInput, jumpInput, jumpId, sprintInput, attackStateInput)
+
+
+func _on_killingFallArea_body_entered(body):
+	body.hurt(body.hpMax, 0)
diff --git a/server/levels/test/game.tscn b/server/levels/test/game.tscn
index a21c3a3fb343d5e8115c0e8038b795a59cd4d8c2..097b1edfe1299a95be82bb81b1fe5c2797eec3da 100644
--- a/server/levels/test/game.tscn
+++ b/server/levels/test/game.tscn
@@ -1,8 +1,11 @@
-[gd_scene load_steps=3 format=2]
+[gd_scene load_steps=4 format=2]
 
 [ext_resource path="res://levels/test/game.gd" type="Script" id=1]
 [ext_resource path="res://levels/test/bloc/bloc.tscn" type="PackedScene" id=2]
 
+[sub_resource type="BoxShape" id=1]
+extents = Vector3( 175.136, 7.53585, 1 )
+
 [node name="game" type="Spatial"]
 script = ExtResource( 1 )
 
@@ -28,3 +31,10 @@ transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 6, 0 )
 
 [node name="spawn3" type="Position3D" parent="spawnCollection"]
 transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 6, 0 )
+
+[node name="killingFallArea" type="Area" parent="."]
+
+[node name="CollisionShape" type="CollisionShape" parent="killingFallArea"]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -38.2712, 0 )
+shape = SubResource( 1 )
+[connection signal="body_entered" from="killingFallArea" to="." method="_on_killingFallArea_body_entered"]