diff --git a/Battle Pong/GameSettings.gd b/Battle Pong/GameSettings.gd
index 68109b6f51d00ec4443ff6dc54f513b7d3d06f32..4647f076c0f2c439d444431334d7120a494b3d49 100644
--- a/Battle Pong/GameSettings.gd	
+++ b/Battle Pong/GameSettings.gd	
@@ -16,6 +16,7 @@ var image_width
 var trainer_ip
 var trainer_port
 var trainer_position
+var trainer_realtime_enabled
 
 var ball_height
 var ball_width
@@ -45,7 +46,8 @@ var default_data = {
     "trainer":{
         "ip":"127.0.0.1",
         "port":"9080",
-        "position":"Right"
+        "position":"Right",
+        "realtime_enabled":true
        },
     "ball":{
         "height":30,
@@ -99,7 +101,8 @@ func save_data():
         "trainer":{
             "ip":$"/root/GameSettings".trainer_ip,
             "port":$"/root/GameSettings".trainer_port,
-            "position":$"/root/GameSettings".trainer_position
+            "position":$"/root/GameSettings".trainer_position,
+            "realtime_enabled":$"/root/GameSettings".trainer_realtime_enabled
         },
         "ball":{
             "height":$"/root/GameSettings".ball_height,
@@ -139,7 +142,7 @@ func update_settings():
     trainer_ip = data["trainer"]["ip"]
     trainer_port = data["trainer"]["port"] as int
     trainer_position = data["trainer"]["position"]
-    
+    trainer_realtime_enabled = data["trainer"]["realtime_enabled"] as bool
 
     ball_height =data["ball"]["height"] as int
     ball_width = data["ball"]["width"] as int
diff --git a/Battle Pong/Main.gd b/Battle Pong/Main.gd
index 293e7430418be2d0040bdfc0765d96a98b5383c4..79510193be0a063cfde55970f4c07aefe6b59537 100644
--- a/Battle Pong/Main.gd	
+++ b/Battle Pong/Main.gd	
@@ -7,10 +7,15 @@ var _server = WebSocketServer.new()
 var player_one_client_id
 var player_two_client_id
 
+
+
 var action_player_one =  InputEventAction.new()
 var next_step_player_one = false
+var action_trainer_one = ""
+
 var action_player_two =  InputEventAction.new()
 var next_step_player_two = false
+var action_trainer_two = ""
 
 var Ball = preload("Ball.tscn")
 var ball = Ball.instance()
@@ -56,11 +61,11 @@ func _ready():
     # in a loop for each connected peer.
     _server.connect("data_received", self, "_on_data")
     # Start listening on the given port.
-    var err = _server.listen(PORT)
-    if err != OK:
+    var server_err = _server.listen(PORT)
+    if server_err != OK:
         print("Unable to start server")
         set_process(false)
-        
+
     set_ball()
     $PlayerOne.start($StartPositionPlayerOne.position)
     $PlayerTwo.start($StartPositionPlayerTwo.position)
@@ -89,7 +94,7 @@ func _process(delta):
     # Call this in _process or _physics_process.
     # Data transfer, and signals emission will only happen when calling this function.
     _server.poll()
-
+        
     check_point_scored()
     handle_score_event()
     handle_game_end()
@@ -172,8 +177,6 @@ func _on_PlayerOne_hit():
     pass # Replace with function body.
 
 
-
-
 func _connected(id, proto):
     # This is called when a new peer connects, "id" will be the assigned peer id,
     # "proto" will be the selected WebSocket sub-protocol (which is optional)
@@ -193,12 +196,8 @@ func _disconnected(id, was_clean = false):
     if( player_one_client_id == id ):
         player_one_client_id = null
         #print("Player One with Client %d disconnected, clean: %s" % [id, str(was_clean)])
-    if(player_two_client_id== id):
+    if(player_two_client_id == id):
         player_two_client_id = null
-        #print("Player Two with Client %d disconnected, clean: %s" % [id, str(was_clean)])
-    #else:
-        #print("Client %d disconnected, clean: %s" % [id, str(was_clean)])
-
 
 func _on_data(id):
     
@@ -208,7 +207,7 @@ func _on_data(id):
     #print("Got data from client %d: %s ... echoing" % [id, pkt.get_string_from_utf8()])
     
     var data = (JSON.parse(pkt.get_string_from_utf8())).get_result()
-    #print(data)
+    print(data)
     if(data):
         for i in data:
             #print(i)
@@ -254,14 +253,33 @@ func _on_data(id):
                     return_value = get_return_value_as_utf8_JSON()
                 _server.get_peer(id).put_packet(return_value)
                 pass
-    if($"/root/GameSettings".trainings_mode_enabled):
-        if(($"/root/GameSettings".trainer_position == "Left" and next_step_player_two) or ($"/root/GameSettings".trainer_position == "Right" and next_step_player_one)):
-            unpause()
-            $PlayerOne.run(game_playtime_per_step)
-            $PlayerTwo.run(game_playtime_per_step)
-            ball.run(game_playtime_per_step)
-            timeout()
-    elif(next_step_player_one and next_step_player_two):
+            if($"/root/GameSettings".trainings_mode_enabled):
+                if(i=="player_one_training"):
+                    next_step_player_one = true
+                    # is w pressed => up
+                    #elif is s pressed => down
+                    # else => nothing
+                    if(Input.is_action_pressed("player_one_up")):
+                        action_trainer_one = "up"
+                    elif Input.is_action_pressed("player_one_down"):
+                        action_trainer_one = "down"
+                    else:
+                        action_trainer_one = "nothing"
+                if(i=="player_two_training"):
+                    next_step_player_two = true
+                    # is arrow_up pressed => up
+                    #elif is arrow_down pressed => down
+                    # else => nothing          
+                    if(Input.is_action_pressed("player_two_up")):
+                        action_trainer_two = "up"
+                    elif Input.is_action_pressed("player_two_down"):
+                        action_trainer_two = "down"
+                    else:
+                        action_trainer_two = "nothing"          
+                        
+    if(next_step_player_one and next_step_player_two):
+        if($"/root/GameSettings".trainer_realtime_enabled):
+            yield(get_tree().create_timer(game_playtime_per_step), "timeout")
         unpause()
         $PlayerOne.run(game_playtime_per_step)
         $PlayerTwo.run(game_playtime_per_step)
@@ -270,7 +288,7 @@ func _on_data(id):
     
         
 func get_observarion():
-    return {"PlayerOne":{"X":$PlayerOne.position.x,"Y":$PlayerOne.position.y}, "PlayerTwo":{"X":$PlayerTwo.position.x,"Y":$PlayerTwo.position.y}, "ball":ball.get_observation()}
+    return {"PlayerOne":{"X":$PlayerOne.position.x,"Y":$PlayerOne.position.y, "TrainingAction":action_trainer_one}, "PlayerTwo":{"X":$PlayerTwo.position.x,"Y":$PlayerTwo.position.y, "TrainingAction":action_trainer_two}, "ball":ball.get_observation()}
         
 func get_return_value_as_utf8_JSON():
     var observation = get_observarion()
@@ -330,6 +348,7 @@ func timeout():
     if(player_two_client_id):
         _server.get_peer(player_two_client_id).put_packet(return_value)
 
+    
 func pause():
     #print("pause")
     ball.set_pause(true)
@@ -341,9 +360,3 @@ func unpause():
     ball.set_pause(false)
     $PlayerOne.set_pause(false)
     $PlayerTwo.set_pause(false)
-
-
-# Wenn Trainerfunktion aktiv ist wird für einen menschlichen Spieler der Playtimer gestartet und die Eingabe  
-func _on_Playtimer_timeout():
-    
-    pass # Replace with function body.
diff --git a/Battle Pong/Main.tscn b/Battle Pong/Main.tscn
index 92314128a94f3ee4083e02600ff43288c6f285c7..9240734d80fbbf9392d771bd3413eb7d67f4352e 100644
--- a/Battle Pong/Main.tscn	
+++ b/Battle Pong/Main.tscn	
@@ -27,8 +27,13 @@ __meta__ = {
 }
 
 [node name="DisplayMessage" type="Label" parent="."]
-margin_right = 40.0
-margin_bottom = 14.0
+anchor_left = 0.5
+anchor_right = 0.5
+margin_left = 388.214
+margin_top = 43.0813
+margin_right = 638.214
+margin_bottom = 73.0813
+align = 1
 __meta__ = {
 "_edit_use_anchors_": false
 }
@@ -79,9 +84,5 @@ __meta__ = {
 
 [node name="WallBottom" parent="." instance=ExtResource( 3 )]
 position = Vector2( 0, 600 )
-
-[node name="Playtimer" type="Timer" parent="."]
-one_shot = true
 [connection signal="hit" from="PlayerTwo" to="." method="_on_PlayerTwo_hit"]
 [connection signal="hit" from="PlayerOne" to="." method="_on_PlayerOne_hit"]
-[connection signal="timeout" from="Playtimer" to="." method="_on_Playtimer_timeout"]
diff --git a/Battle Pong/MainMenu.gd b/Battle Pong/MainMenu.gd
index 6b66d933ecfde2333e08bbfbd05e063023e1508b..d44016d220fa9325b963963a46e68c62aae7ae6a 100644
--- a/Battle Pong/MainMenu.gd	
+++ b/Battle Pong/MainMenu.gd	
@@ -52,6 +52,7 @@ func _on_but_trainer_with_images_pressed():
     $"/root/GameSettings".rendering_enabled = true
     $"/root/GameSettings".learn_with_images = true
     $"/root/GameSettings".trainings_mode_enabled = true
+    get_tree().change_scene("res://Main.tscn")
    
 
 
@@ -59,6 +60,7 @@ func _on_but_trainer_with_position_pressed():
     $"/root/GameSettings".rendering_enabled = true
     $"/root/GameSettings".learn_with_images = false
     $"/root/GameSettings".trainings_mode_enabled = true
+    get_tree().change_scene("res://Main.tscn")
 
 
 
diff --git a/Battle Pong/SettingsWindow.gd b/Battle Pong/SettingsWindow.gd
index 2b23516f288f03535963e48e04a21c16588f8d83..fc400064a09ea0ab1b625ad597c89dfa41d21a38 100644
--- a/Battle Pong/SettingsWindow.gd	
+++ b/Battle Pong/SettingsWindow.gd	
@@ -21,15 +21,15 @@ func update_gui():
     $VBoxContainer/grid_settings/vbox_image_settings/grid_image_settings/input_image_height.text = str($"/root/GameSettings".image_heigth)
     $VBoxContainer/grid_settings/vbox_image_settings/grid_image_settings/input_image_width.text = str($"/root/GameSettings".image_width)
 
-    $VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_ip.text = $"/root/GameSettings".trainer_ip
-    $VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_port.text = str($"/root/GameSettings".trainer_port)
-    if $"/root/GameSettings".trainer_position =="Left":
-        $VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_position.pressed = false
-    elif $"/root/GameSettings".trainer_position =="Right":
-        $VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_position.pressed = true
-    
-    $VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_position.text = $"/root/GameSettings".trainer_position
+    #$VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_ip.text = $"/root/GameSettings".trainer_ip
+    #$VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_port.text = str($"/root/GameSettings".trainer_port)
+    #if $"/root/GameSettings".trainer_position =="Left":
+    #    $VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_position.pressed = false
+    #elif $"/root/GameSettings".trainer_position =="Right":
+    #    $VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_position.pressed = true
     
+    #$VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_position.text = $"/root/GameSettings".trainer_position
+    $VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_realtime_enabled.pressed = $"/root/GameSettings".trainer_realtime_enabled
 
     $VBoxContainer/grid_settings/vbox_ball_settings/grid_ball_settings/input_ball_height.text = str($"/root/GameSettings".ball_height)
     $VBoxContainer/grid_settings/vbox_ball_settings/grid_ball_settings/input_ball_width.text = str($"/root/GameSettings".ball_width)
@@ -61,9 +61,10 @@ func _on_but_save_pressed():
     $"/root/GameSettings".image_heigth = $VBoxContainer/grid_settings/vbox_image_settings/grid_image_settings/input_image_height.text as int
     $"/root/GameSettings".image_width = $VBoxContainer/grid_settings/vbox_image_settings/grid_image_settings/input_image_width.text as int
 
-    $"/root/GameSettings".trainer_ip = $VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_ip.text
-    $"/root/GameSettings".trainer_port = $VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_port.text as int
+    #$"/root/GameSettings".trainer_ip = $VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_ip.text
+    #$"/root/GameSettings".trainer_port = $VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_port.text as int
     $"/root/GameSettings".trainer_position = $VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_position.text
+    $"/root/GameSettings".trainer_realtime_enabled = $VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_realtime_enabled.pressed
 
     $"/root/GameSettings".ball_height = $VBoxContainer/grid_settings/vbox_ball_settings/grid_ball_settings/input_ball_height.text as int
     $"/root/GameSettings".ball_width = $VBoxContainer/grid_settings/vbox_ball_settings/grid_ball_settings/input_ball_width.text as int
diff --git a/Battle Pong/SettingsWindow.tscn b/Battle Pong/SettingsWindow.tscn
index d19e3b1032907c6a14fd5b6e867cae7daa5d1c79..c86b6595d7feefddc8e1a3a18f47013b0e56d0ed 100644
--- a/Battle Pong/SettingsWindow.tscn	
+++ b/Battle Pong/SettingsWindow.tscn	
@@ -36,7 +36,7 @@ __meta__ = {
 }
 
 [node name="grid_settings" type="GridContainer" parent="VBoxContainer"]
-margin_right = 344.0
+margin_right = 347.0
 margin_bottom = 353.0
 columns = 3
 __meta__ = {
@@ -44,17 +44,17 @@ __meta__ = {
 }
 
 [node name="vbox_game_settings" type="VBoxContainer" parent="VBoxContainer/grid_settings"]
-margin_right = 160.0
+margin_right = 163.0
 margin_bottom = 105.0
 
 [node name="lbl_title_game_settings" type="Label" parent="VBoxContainer/grid_settings/vbox_game_settings"]
-margin_right = 160.0
+margin_right = 163.0
 margin_bottom = 14.0
 text = "Game:"
 
 [node name="grid_game_settings" type="GridContainer" parent="VBoxContainer/grid_settings/vbox_game_settings"]
 margin_top = 18.0
-margin_right = 160.0
+margin_right = 163.0
 margin_bottom = 105.0
 columns = 2
 
@@ -95,13 +95,13 @@ margin_right = 151.0
 margin_bottom = 87.0
 
 [node name="VSeparator" type="VSeparator" parent="VBoxContainer/grid_settings"]
-margin_left = 164.0
-margin_right = 168.0
+margin_left = 167.0
+margin_right = 171.0
 margin_bottom = 105.0
 
 [node name="vbox_image_settings" type="VBoxContainer" parent="VBoxContainer/grid_settings"]
-margin_left = 172.0
-margin_right = 344.0
+margin_left = 175.0
+margin_right = 347.0
 margin_bottom = 105.0
 
 [node name="lbl_title_image_settings" type="Label" parent="VBoxContainer/grid_settings/vbox_image_settings"]
@@ -156,83 +156,95 @@ margin_bottom = 80.0
 
 [node name="HSeparator" type="HSeparator" parent="VBoxContainer/grid_settings"]
 margin_top = 109.0
-margin_right = 160.0
+margin_right = 163.0
 margin_bottom = 113.0
 
 [node name="HSeparator6" type="HSeparator" parent="VBoxContainer/grid_settings"]
-margin_left = 164.0
+margin_left = 167.0
 margin_top = 109.0
-margin_right = 168.0
+margin_right = 171.0
 margin_bottom = 113.0
 
 [node name="HSeparator5" type="HSeparator" parent="VBoxContainer/grid_settings"]
-margin_left = 172.0
+margin_left = 175.0
 margin_top = 109.0
-margin_right = 344.0
+margin_right = 347.0
 margin_bottom = 113.0
 
 [node name="vbox_trainer_settings" type="VBoxContainer" parent="VBoxContainer/grid_settings"]
 margin_top = 117.0
-margin_right = 160.0
+margin_right = 163.0
 margin_bottom = 271.0
 
 [node name="lbl_title_trainer_settings" type="Label" parent="VBoxContainer/grid_settings/vbox_trainer_settings"]
-margin_right = 160.0
+margin_right = 163.0
 margin_bottom = 14.0
 text = "Trainer:"
 
 [node name="grid_trainer_settings" type="GridContainer" parent="VBoxContainer/grid_settings/vbox_trainer_settings"]
 margin_top = 18.0
-margin_right = 160.0
-margin_bottom = 114.0
+margin_right = 163.0
+margin_bottom = 58.0
 columns = 2
 
 [node name="lbl_trainer_ip" type="Label" parent="VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings"]
-margin_top = 5.0
-margin_right = 52.0
-margin_bottom = 19.0
+visible = false
+margin_right = 104.0
+margin_bottom = 14.0
 text = "IP"
 
 [node name="input_trainer_ip" type="LineEdit" parent="VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings"]
+visible = false
 margin_left = 56.0
 margin_right = 160.0
 margin_bottom = 24.0
 
 [node name="lbl_trainer_port" type="Label" parent="VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings"]
-margin_top = 33.0
+visible = false
+margin_top = 5.0
 margin_right = 52.0
-margin_bottom = 47.0
+margin_bottom = 19.0
 text = "Port"
 
 [node name="input_trainer_port" type="LineEdit" parent="VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings"]
-margin_left = 56.0
-margin_top = 28.0
-margin_right = 160.0
-margin_bottom = 52.0
+visible = false
+margin_right = 104.0
+margin_bottom = 24.0
 
 [node name="lbl_trainer_position" type="Label" parent="VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings"]
-margin_top = 69.0
-margin_right = 52.0
-margin_bottom = 83.0
+visible = false
+margin_top = 13.0
+margin_right = 83.0
+margin_bottom = 27.0
 text = "Position"
 
 [node name="input_trainer_position" type="CheckButton" parent="VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings"]
-margin_left = 56.0
-margin_top = 56.0
-margin_right = 160.0
-margin_bottom = 96.0
+visible = false
+margin_right = 104.0
+margin_bottom = 40.0
 text = "Left"
 
+[node name="lbl_trainer_realtime_enabled" type="Label" parent="VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings"]
+margin_top = 13.0
+margin_right = 83.0
+margin_bottom = 27.0
+text = "Use realtime"
+
+[node name="input_trainer_realtime_enabled" type="CheckButton" parent="VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings"]
+margin_left = 87.0
+margin_right = 163.0
+margin_bottom = 40.0
+
 [node name="VSeparator2" type="VSeparator" parent="VBoxContainer/grid_settings"]
-margin_left = 164.0
+margin_left = 167.0
 margin_top = 117.0
-margin_right = 168.0
+margin_right = 171.0
 margin_bottom = 271.0
 
 [node name="vbox_ball_settings" type="VBoxContainer" parent="VBoxContainer/grid_settings"]
-margin_left = 172.0
+margin_left = 175.0
 margin_top = 117.0
-margin_right = 344.0
+margin_right = 347.0
 margin_bottom = 271.0
 
 [node name="lbl_title_ball_settings" type="Label" parent="VBoxContainer/grid_settings/vbox_ball_settings"]
@@ -307,34 +319,34 @@ margin_bottom = 136.0
 
 [node name="HSeparator7" type="HSeparator" parent="VBoxContainer/grid_settings"]
 margin_top = 275.0
-margin_right = 160.0
+margin_right = 163.0
 margin_bottom = 279.0
 
 [node name="VSeparator3" type="HSeparator" parent="VBoxContainer/grid_settings"]
-margin_left = 164.0
+margin_left = 167.0
 margin_top = 275.0
-margin_right = 168.0
+margin_right = 171.0
 margin_bottom = 279.0
 
 [node name="HSeparator2" type="HSeparator" parent="VBoxContainer/grid_settings"]
-margin_left = 172.0
+margin_left = 175.0
 margin_top = 275.0
-margin_right = 344.0
+margin_right = 347.0
 margin_bottom = 279.0
 
 [node name="vbox_player_one_settings" type="VBoxContainer" parent="VBoxContainer/grid_settings"]
 margin_top = 283.0
-margin_right = 160.0
+margin_right = 163.0
 margin_bottom = 353.0
 
 [node name="lbl_title_player_one_settings" type="Label" parent="VBoxContainer/grid_settings/vbox_player_one_settings"]
-margin_right = 160.0
+margin_right = 163.0
 margin_bottom = 14.0
 text = "Player 1:"
 
 [node name="grid_player_one_settings" type="GridContainer" parent="VBoxContainer/grid_settings/vbox_player_one_settings"]
 margin_top = 18.0
-margin_right = 160.0
+margin_right = 163.0
 margin_bottom = 70.0
 columns = 2
 
@@ -362,15 +374,15 @@ margin_right = 105.0
 margin_bottom = 52.0
 
 [node name="VSeparator4" type="VSeparator" parent="VBoxContainer/grid_settings"]
-margin_left = 164.0
+margin_left = 167.0
 margin_top = 283.0
-margin_right = 168.0
+margin_right = 171.0
 margin_bottom = 353.0
 
 [node name="vbox_player_two_settings" type="VBoxContainer" parent="VBoxContainer/grid_settings"]
-margin_left = 172.0
+margin_left = 175.0
 margin_top = 283.0
-margin_right = 344.0
+margin_right = 347.0
 margin_bottom = 353.0
 
 [node name="lbl_title_player_two_settings" type="Label" parent="VBoxContainer/grid_settings/vbox_player_two_settings"]
@@ -409,24 +421,24 @@ margin_bottom = 52.0
 
 [node name="VSeparator5" type="HSeparator" parent="VBoxContainer"]
 margin_top = 357.0
-margin_right = 344.0
+margin_right = 347.0
 margin_bottom = 361.0
 
 [node name="but_save" type="Button" parent="VBoxContainer"]
 margin_top = 365.0
-margin_right = 344.0
+margin_right = 347.0
 margin_bottom = 385.0
 text = "Save"
 
 [node name="but_cancel" type="Button" parent="VBoxContainer"]
 margin_top = 389.0
-margin_right = 344.0
+margin_right = 347.0
 margin_bottom = 409.0
 text = "Cancel"
 
 [node name="but_reset" type="Button" parent="VBoxContainer"]
 margin_top = 413.0
-margin_right = 344.0
+margin_right = 347.0
 margin_bottom = 433.0
 text = "Reset"
 [connection signal="pressed" from="VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_position" to="." method="_on_input_trainer_position_pressed"]