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

"Ball:

* Bereits ausgeblendete Animationen entfernt
* Groesse des Balls reduziert

Main:
* Rendern per Variable ein-/ausschaltbar
* Senden des Bildes per Variable ein-/ausschaltbar
* Wenn das Bild gesendet werden soll werden Spielstaende und Nachrichten nicht mehr auf der GUI angezeigt
* Wenn die Bilder nicht gesendet werden sollen, wird auch nicht auf das yield gewartet (erhoffter Geschwindigkeitsboost)
* Ueberreste der Run-und Starttimer entfernt

Player:
* Bereits ausgeblendete Animationen entfernt
* Laenge der Paddles verringert"
parent 71f63fc8
Branches
No related tags found
1 merge request!4Send images
[gd_scene load_steps=7 format=2]
[gd_scene load_steps=3 format=2]
[ext_resource path="res://Ball.gd" type="Script" id=1]
[ext_resource path="res://ball_2.png" type="Texture" id=2]
[ext_resource path="res://ball_1.png" type="Texture" id=3]
[ext_resource path="res://ball_3.png" type="Texture" id=4]
[sub_resource type="SpriteFrames" id=1]
animations = [ {
"frames": [ ExtResource( 3 ), ExtResource( 2 ), ExtResource( 4 ) ],
"loop": true,
"name": "default",
"speed": 5.0
} ]
[sub_resource type="RectangleShape2D" id=2]
extents = Vector2( 6.66667, 6.66419 )
[sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 12, 12.8754 )
[node name="Ball" type="KinematicBody2D"]
pause_mode = 1
......@@ -23,24 +12,15 @@ collision_mask = 7
motion/sync_to_physics = true
script = ExtResource( 1 )
[node name="AnimatedSprite" type="AnimatedSprite" parent="."]
visible = false
position = Vector2( -3, -3 )
scale = Vector2( 6, 6 )
frames = SubResource( 1 )
frame = 1
speed_scale = 2.0
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2( -3.8147e-06, -0.132433 )
scale = Vector2( 3, 3 )
shape = SubResource( 2 )
shape = SubResource( 1 )
[node name="ColorRect" type="ColorRect" parent="."]
margin_left = -20.0
margin_top = -20.0
margin_right = 20.0
margin_bottom = 20.0
margin_left = -12.5
margin_top = -12.5
margin_right = 12.5
margin_bottom = 12.5
color = Color( 0.992157, 1, 0, 1 )
__meta__ = {
"_edit_use_anchors_": false
......
......@@ -28,12 +28,17 @@ const P1_WIN = "Player 1 won!"
const P2_WIN = "Player 2 won!"
var message = SPACE_TO_PLAY
export var enable_rendering = true
export var learn_with_images = true
export var playtime_per_step = 0.1
func _ready():
if not learn_with_images:
if not enable_rendering:
VisualServer.render_loop_enabled = false # disable rendering to create a massive boost
if learn_with_images:
$DisplayMessage.hide()
$Player1Score.hide()
$Player2Score.hide()
# Connect base signals to get notified of new client connections,
# disconnections, and disconnect requests.
......@@ -176,7 +181,6 @@ func _close_request(id, code, reason):
#print("Client %d disconnecting with code: %d, reason: %s" % [id, code, reason])
pass
func _disconnected(id, was_clean = false):
# This is called when a client disconnects, "id" will be the one of the
# disconnecting client, "was_clean" will tell you if the disconnection
......@@ -235,42 +239,44 @@ func _on_data(id):
next_step_player_two = true
if(i == "player_two_nothing"):
next_step_player_two = true
if(i=="connect_player" or i == "start_game"):
if(i == "start_game"):
play()
var return_value = yield(get_return_value_as_utf8_JSON(), "completed")
_server.get_peer(id).put_packet(return_value)
pass
if(i=="connect_player"):
var return_value = yield(get_return_value_as_utf8_JSON(), "completed")
var return_value = null
if learn_with_images:
return_value = yield(get_yielded_return_value_as_utf8_JSON(), "completed")
else:
return_value = get_return_value_as_utf8_JSON()
_server.get_peer(id).put_packet(return_value)
pass
if(next_step_player_one and next_step_player_two):
unpause()
#if($RunTimer.is_stopped()): # Used to show how much faster the game runs independent from realtime
# $RunTimer.start()
$PlayerOne.run(playtime_per_step)
$PlayerTwo.run(playtime_per_step)
ball.run(playtime_per_step)
timeout()
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()}
func get_return_value_as_utf8_JSON():
var observation = {"PlayerOne":{"X":$PlayerOne.position.x,"Y":$PlayerOne.position.y}, "PlayerTwo":{"X":$PlayerTwo.position.x,"Y":$PlayerTwo.position.y}, "ball":ball.get_observation()}
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_yielded_return_value_as_utf8_JSON():
var observation = get_observarion()
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()
func get_screenshot():
if learn_with_images:
get_viewport().set_clear_mode(Viewport.CLEAR_MODE_ONLY_NEXT_FRAME)
# Wait until the frame has finished before getting the texture.
yield(VisualServer, "frame_post_draw")
var thumbnail = get_viewport().get_texture().get_data()
thumbnail.flip_y()
# Create a texture for it.
thumbnail.resize(100, 60 )
thumbnail.convert(Image.FORMAT_RGB8 ) # Farbe
#thumbnail.convert(Image.FORMAT_L8 ) # S/W
......@@ -282,22 +288,11 @@ func get_screenshot():
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 = {"thumbnail" : {"image" : sg_saved_img, "size" : sg_u_size, "width" : sg_width, "height" : sg_height, "format" : sg_format}}
var metadata = {"image" : sg_saved_img, "size" : sg_u_size, "width" : sg_width, "height" : sg_height, "format" : sg_format}
return metadata
else:
var metadata = {"thumbnail" : {"image" : "disabled", "size" : 0, "width" : 0, "height" : 0, "format" : "diabled"}}
yield(get_tree().create_timer(0),"timeout") # Hack
return metadata
func _on_RunTimer_timeout():
print("_RunTimer_timeout")
pass
func timeout():
pause()
......@@ -307,7 +302,13 @@ func timeout():
Input.parse_input_event(action_player_two)
next_step_player_one = false
next_step_player_two = false
var return_value = yield(get_return_value_as_utf8_JSON(), "completed")
var return_value = null
if learn_with_images:
return_value = yield(get_yielded_return_value_as_utf8_JSON(), "completed")
else:
return_value = get_return_value_as_utf8_JSON()
reward_player_one = 0
reward_player_two = 0
##print(return_value)
......
......@@ -42,10 +42,6 @@ __meta__ = {
"_edit_use_anchors_": false
}
[node name="StartTimer" type="Timer" parent="."]
wait_time = 2.0
one_shot = true
[node name="StartPositionPlayerTwo" type="Position2D" parent="."]
position = Vector2( 968, 300 )
......@@ -83,11 +79,5 @@ __meta__ = {
[node name="WallBottom" parent="." instance=ExtResource( 3 )]
position = Vector2( 0, 600 )
[node name="RunTimer" type="Timer" parent="."]
pause_mode = 2
wait_time = 0.01
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="RunTimer" to="." method="_on_RunTimer_timeout"]
......@@ -33,9 +33,6 @@ func run(delta):
if velocity.length() > 0:
velocity = velocity.normalized() * speed
$AnimatedSprite.play()
else:
$AnimatedSprite.stop()
position += velocity * delta
#position.x = clamp(position.x, 0, screen_size.x) # ändert sich nicht
......
[gd_scene load_steps=7 format=2]
[gd_scene load_steps=3 format=2]
[ext_resource path="res://player_1.png" type="Texture" id=1]
[ext_resource path="res://player_2.png" type="Texture" id=2]
[ext_resource path="res://player_3.png" type="Texture" id=3]
[ext_resource path="res://Player.gd" type="Script" id=4]
[sub_resource type="SpriteFrames" id=1]
animations = [ {
"frames": [ ExtResource( 1 ), ExtResource( 2 ), ExtResource( 3 ) ],
"loop": true,
"name": "wave",
"speed": 5.0
} ]
[sub_resource type="RectangleShape2D" id=2]
extents = Vector2( 7.51772, 60.0095 )
[sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 7.96318, 39.9475 )
[node name="Player" type="RigidBody2D"]
position = Vector2( -0.325993, -1.00885 )
collision_layer = 2
collision_mask = 8
script = ExtResource( 4 )
......@@ -25,24 +15,19 @@ __meta__ = {
}
is_player_one = false
[node name="AnimatedSprite" type="AnimatedSprite" parent="."]
visible = false
position = Vector2( -1.5, 0 )
scale = Vector2( 3, 6 )
frames = SubResource( 1 )
animation = "wave"
speed_scale = 2.0
playing = true
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
light_mask = 9
shape = SubResource( 2 )
shape = SubResource( 1 )
__meta__ = {
"_edit_lock_": true
}
[node name="ColorRect" type="ColorRect" parent="."]
margin_left = -7.506
margin_top = -60.0
margin_right = 7.494
margin_bottom = 60.0
margin_left = -7.90636
margin_top = -40.0468
margin_right = 8.09364
margin_bottom = 39.9532
__meta__ = {
"_edit_lock_": true,
"_edit_use_anchors_": false
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment