Skip to content
Snippets Groups Projects
Commit e48c60d7 authored by Frederic Aust's avatar Frederic Aust
Browse files

Observation angepasst, damit es fuer den angemeldeten player_two so aussieht...

Observation angepasst, damit es fuer den angemeldeten player_two so aussieht als waere es als player_one angemeldet. (Damit die angemeldete Position fuer den Agenten egal ist)
parent b5aaeb14
Branches main
No related tags found
1 merge request!6Binding all settings to game
......@@ -43,6 +43,7 @@ func _ready():
learn_with_images = $"/root/GameSettings".learn_with_images
game_playtime_per_step = $"/root/GameSettings".game_playtime_per_step
max_wins = $"/root/GameSettings".game_wins_to_reset
if not enable_rendering:
VisualServer.render_loop_enabled = false # disable rendering to create a massive boost
if learn_with_images:
......@@ -248,11 +249,18 @@ func _on_data(id):
play()
var return_value = null
if learn_with_images:
return_value = yield(get_yielded_return_value_as_utf8_JSON(), "completed")
return_value = yield(get_yielded_return_value(), "completed")
else:
return_value = get_return_value()
if (player_one_client_id != null) and (player_one_client_id == id):
_server.get_peer(id).put_packet((JSON.print(return_value['player_one'])).to_utf8())
elif player_two_client_id != null and player_two_client_id == id:
_server.get_peer(id).put_packet((JSON.print(return_value['player_two'])).to_utf8())
else:
return_value = get_return_value_as_utf8_JSON()
_server.get_peer(id).put_packet(return_value)
_server.get_peer(id).put_packet((JSON.print(return_value)).to_utf8()) # Fallback, if the id is unknown
pass
if($"/root/GameSettings".trainings_mode_enabled):
if(i=="player_one_training"):
next_step_player_one = true
......@@ -287,19 +295,25 @@ func _on_data(id):
timeout()
func get_observarion():
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_observation():
var ball_observation=ball.get_observation()
var player_one = {"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_observation['player_one']}
var player_two = {"PlayerOne":{"X":abs($PlayerTwo.position.x - $"/root/GameSettings".display_window_width),"Y":$PlayerTwo.position.y, "TrainingAction":action_trainer_two}, "PlayerTwo":{"X":abs($PlayerOne.position.x- $"/root/GameSettings".display_window_width),"Y":$PlayerOne.position.y, "TrainingAction":action_trainer_one}, "ball":ball_observation['player_two']}
return {"player_one":player_one, "player_two":player_two}
func get_return_value_as_utf8_JSON():
var observation = get_observarion()
var return_value = {"observation":observation, "reward":{"PlayerOne":reward_player_one, "PlayerTwo":reward_player_two}, "done":(not playing), "info":{"PlayerOneScore":score_player_one, "PlayerTwoScore":score_player_two}}
return (JSON.print(return_value)).to_utf8()
func get_return_value():
var observation = get_observation()
var return_value_player_one = {"observation":observation['player_one'], "reward":{"PlayerOne":reward_player_one, "PlayerTwo":reward_player_two}, "done":(not playing), "info":{"PlayerOneScore":score_player_one, "PlayerTwoScore":score_player_two}}
var return_value_player_two = {"observation":observation['player_two'], "reward":{"PlayerOne":reward_player_two, "PlayerTwo":reward_player_one}, "done":(not playing), "info":{"PlayerOneScore":score_player_two, "PlayerTwoScore":score_player_one}}
return {'player_one':return_value_player_one, 'player_two':return_value_player_two}
func get_yielded_return_value_as_utf8_JSON():
var observation = get_observarion()
func get_yielded_return_value():
var observation = get_observation()
var screenshot = yield(get_screenshot(), "completed")
var return_value = {"observation":observation, "reward":{"PlayerOne":reward_player_one, "PlayerTwo":reward_player_two}, "done":(not playing), "info":{"PlayerOneScore":score_player_one, "PlayerTwoScore":score_player_two, "screenshot":screenshot}}
return (JSON.print(return_value)).to_utf8()
var return_value_player_one = {"observation":observation['player_one'], "reward":{"PlayerOne":reward_player_one, "PlayerTwo":reward_player_two}, "done":(not playing), "info":{"PlayerOneScore":score_player_one, "PlayerTwoScore":score_player_two, "screenshot":screenshot['player_one']}}
var return_value_player_two = {"observation":observation['player_two'], "reward":{"PlayerOne":reward_player_two, "PlayerTwo":reward_player_one}, "done":(not playing), "info":{"PlayerOneScore":score_player_two, "PlayerTwoScore":score_player_one, "screenshot":screenshot['player_two']}}
return {'player_one':return_value_player_one, 'player_two':return_value_player_two}
func get_screenshot():
get_viewport().set_clear_mode(Viewport.CLEAR_MODE_ONLY_NEXT_FRAME)
......@@ -318,16 +332,24 @@ func get_screenshot():
#thumbnail.save_png('test.png') # Save Image as file - to debug
var array : PoolByteArray = thumbnail.get_data()
var sg_width = thumbnail.get_width()
var sg_height = thumbnail.get_height()
var sg_format = thumbnail.get_format()
var sg_u_size = array.size()
var sg_saved_img = Marshalls.raw_to_base64(array)
var metadata = {"image" : sg_saved_img, "size" : sg_u_size, "width" : sg_width, "height" : sg_height, "format" : sg_format}
var array_player_one : PoolByteArray = thumbnail.get_data()
var sg_saved_img_player_one = Marshalls.raw_to_base64(array_player_one)
var sg_u_size_player_one = array_player_one.size()
var screenshot_player_one = {"image" : sg_saved_img_player_one, "size" : sg_u_size_player_one, "width" : sg_width, "height" : sg_height, "format" : sg_format}
thumbnail.flip_x()
var array_player_two : PoolByteArray = thumbnail.get_data()
var sg_saved_img_player_two = Marshalls.raw_to_base64(array_player_two)
var sg_u_size_player_two = array_player_two.size()
var screenshot_player_two = {"image" : sg_saved_img_player_one, "size" : sg_u_size_player_two, "width" : sg_width, "height" : sg_height, "format" : sg_format}
return {"player_one":screenshot_player_one, "player_two":screenshot_player_two}
return metadata
func timeout():
pause()
......@@ -340,17 +362,17 @@ func timeout():
var return_value = null
if learn_with_images:
return_value = yield(get_yielded_return_value_as_utf8_JSON(), "completed")
return_value = yield(get_yielded_return_value(), "completed")
else:
return_value = get_return_value_as_utf8_JSON()
return_value = get_return_value()
reward_player_one = 0
reward_player_two = 0
##print(return_value)
if(player_one_client_id):
_server.get_peer(player_one_client_id).put_packet(return_value)
_server.get_peer(player_one_client_id).put_packet((JSON.print(return_value['player_one'])).to_utf8())
if(player_two_client_id):
_server.get_peer(player_two_client_id).put_packet(return_value)
_server.get_peer(player_two_client_id).put_packet((JSON.print(return_value['player_two'])).to_utf8())
func pause():
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment