Explorar o código

[3.x] Enable physics interpolation in all demos that use physics (#1069)

This also improves visuals in the Voxel and Dynamic Split Screen demos,
and fixes splitscreen mode in the Platformer 2D demo.

Most demos (other than physics tests) have also had their physics FPS
increased to 120. This is done consistency with 4.x, but also for the
benefits it still provides when interpolation are enabled
(lower input lag, more stable simulation).
Hugo Locurcio hai 9 meses
pai
achega
aae565b34a
Modificáronse 50 ficheiros con 160 adicións e 78 borrados
  1. 0 3
      2d/finite_state_machine/Demo.tscn
  2. 1 3
      2d/finite_state_machine/player/Player.tscn
  3. 1 1
      2d/finite_state_machine/player/bullet/bullet_spawner.gd
  4. 4 0
      2d/finite_state_machine/project.godot
  5. 5 0
      2d/hexagonal_map/project.godot
  6. 1 0
      2d/hexagonal_map/troll.tscn
  7. 2 0
      2d/instancing/project.godot
  8. 1 0
      2d/instancing/scene_instancing.tscn
  9. 0 5
      2d/isometric/dungeon.tscn
  10. 1 1
      2d/isometric/player/goblin.tscn
  11. 5 0
      2d/isometric/project.godot
  12. 2 0
      2d/kinematic_character/project.godot
  13. 26 11
      2d/kinematic_character/world.tscn
  14. 2 1
      2d/navigation/level.tscn
  15. 6 1
      2d/navigation/project.godot
  16. 1 0
      2d/physics_platformer/player/Player.tscn
  17. 3 1
      2d/physics_platformer/project.godot
  18. 4 4
      2d/physics_tests/project.godot
  19. 3 1
      2d/platformer/project.godot
  20. 4 0
      2d/platformer/src/actors/player.tscn
  21. 0 16
      2d/platformer/src/level/level.gd
  22. 2 2
      2d/platformer/src/main/game.gd
  23. 1 1
      2d/platformer/src/main/game.tscn
  24. 6 2
      2d/platformer/src/main/split_screen.tscn
  25. 2 1
      2d/skeleton/player/player.tscn
  26. 2 0
      2d/skeleton/project.godot
  27. 2 1
      3d/kinematic_character/models/cube.glb.import
  28. 2 1
      3d/kinematic_character/models/mushroom.glb.import
  29. 1 0
      3d/kinematic_character/player/cubio.gd
  30. 1 0
      3d/kinematic_character/project.godot
  31. 5 0
      3d/navmesh/project.godot
  32. 4 4
      3d/physics_tests/project.godot
  33. 2 0
      3d/platformer/coin/coin.tscn
  34. 1 0
      3d/platformer/enemy/enemy.tscn
  35. 1 1
      3d/platformer/player/bullet/bullet.tscn
  36. 1 1
      3d/platformer/player/player.gd
  37. 7 1
      3d/platformer/project.godot
  38. 2 1
      3d/rigidbody_character/models/cube.glb.import
  39. 2 1
      3d/rigidbody_character/models/mushroom.glb.import
  40. 1 0
      3d/rigidbody_character/player/cubio.gd
  41. 1 0
      3d/rigidbody_character/project.godot
  42. 5 0
      3d/truck_town/project.godot
  43. 7 0
      3d/voxel/default_env.tres
  44. 11 5
      3d/voxel/project.godot
  45. 1 1
      3d/voxel/world/textures/texture_sheet.png.import
  46. 5 1
      3d/voxel/world/world.tscn
  47. 5 5
      networking/multiplayer_bomber/project.godot
  48. 1 0
      networking/multiplayer_bomber/world.tscn
  49. 1 0
      viewport/dynamic_split_screen/default_env.tres
  50. 6 1
      viewport/dynamic_split_screen/project.godot

+ 0 - 3
2d/finite_state_machine/Demo.tscn

@@ -49,9 +49,6 @@ __meta__ = {
 [node name="Control" type="Control" parent="."]
 anchor_right = 1.0
 anchor_bottom = 1.0
-__meta__ = {
-"_edit_use_anchors_": false
-}
 
 [node name="StatesStackDiplayer" parent="Control" instance=ExtResource( 3 )]
 

+ 1 - 3
2d/finite_state_machine/player/Player.tscn

@@ -104,6 +104,7 @@ position = Vector2( 110, 0 )
 polygon = PoolVector2Array( -20, 0, -20, -20, 20, -20, 20, 0 )
 
 [node name="StateNameDisplayer" type="Label" parent="."]
+physics_interpolation_mode = 2
 margin_left = -109.0
 margin_top = -172.0
 margin_right = 110.0
@@ -114,9 +115,6 @@ align = 1
 valign = 1
 uppercase = true
 script = ExtResource( 15 )
-__meta__ = {
-"_edit_use_anchors_": false
-}
 
 [connection signal="state_changed" from="StateMachine" to="BodyPivot/WeaponPivot/Offset/Sword" method="_on_StateMachine_state_changed"]
 [connection signal="state_changed" from="StateMachine" to="StateNameDisplayer" method="_on_StateMachine_state_changed"]

+ 1 - 1
2d/finite_state_machine/player/bullet/bullet_spawner.gd

@@ -14,6 +14,6 @@ func fire():
 
 	$CooldownTimer.start()
 	var new_bullet = bullet.instance()
-	add_child(new_bullet)
 	new_bullet.position = global_position
 	new_bullet.direction = owner.look_direction
+	add_child(new_bullet)

+ 4 - 0
2d/finite_state_machine/project.godot

@@ -94,6 +94,10 @@ attack={
  ]
 }
 
+[physics]
+
+common/physics_interpolation=true
+
 [rendering]
 
 quality/driver/driver_name="GLES2"

+ 5 - 0
2d/hexagonal_map/project.godot

@@ -60,6 +60,11 @@ move_up={
  ]
 }
 
+[physics]
+
+common/physics_fps=120
+common/physics_interpolation=true
+
 [rendering]
 
 quality/driver/driver_name="GLES2"

+ 1 - 0
2d/hexagonal_map/troll.tscn

@@ -18,3 +18,4 @@ shape = SubResource( 1 )
 
 [node name="Camera2D" type="Camera2D" parent="."]
 current = true
+process_mode = 0

+ 2 - 0
2d/instancing/project.godot

@@ -29,7 +29,9 @@ singletons=[  ]
 
 [physics]
 
+common/physics_fps=120
 2d/default_gravity=300
+common/physics_interpolation=true
 
 [rendering]
 

+ 1 - 0
2d/instancing/scene_instancing.tscn

@@ -90,3 +90,4 @@ physics_material_override = SubResource( 10 )
 [node name="Camera2D" type="Camera2D" parent="."]
 offset = Vector2( 400, 300 )
 current = true
+process_mode = 0

+ 0 - 5
2d/isometric/dungeon.tscn

@@ -1581,7 +1581,6 @@ material = SubResource( 41 )
 position = Vector2( 445, -129 )
 frames = SubResource( 40 )
 animation = "sleep"
-frame = 1
 playing = true
 
 [node name="CrowSleep2" type="AnimatedSprite" parent="Crows"]
@@ -1589,7 +1588,6 @@ material = SubResource( 42 )
 position = Vector2( 108, 481 )
 frames = SubResource( 40 )
 animation = "sleep"
-frame = 1
 playing = true
 flip_h = true
 
@@ -1597,7 +1595,6 @@ flip_h = true
 position = Vector2( -168, -145 )
 frames = SubResource( 91 )
 animation = "looking"
-frame = 7
 playing = true
 flip_h = true
 
@@ -1605,7 +1602,6 @@ flip_h = true
 position = Vector2( 1782, 35 )
 frames = SubResource( 91 )
 animation = "looking"
-frame = 7
 playing = true
 flip_h = true
 
@@ -1613,5 +1609,4 @@ flip_h = true
 position = Vector2( 1024, 78 )
 frames = SubResource( 91 )
 animation = "looking"
-frame = 7
 playing = true

+ 1 - 1
2d/isometric/player/goblin.tscn

@@ -1396,7 +1396,6 @@ position = Vector2( 0, -35 )
 scale = Vector2( 0.8, 0.8 )
 frames = SubResource( 260 )
 animation = "front_idle"
-frame = 8
 playing = true
 
 [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
@@ -1406,6 +1405,7 @@ shape = SubResource( 1 )
 
 [node name="Camera2D" type="Camera2D" parent="."]
 current = true
+process_mode = 0
 
 [node name="LightOccluder2D" type="LightOccluder2D" parent="."]
 light_mask = 16

+ 5 - 0
2d/isometric/project.godot

@@ -68,6 +68,11 @@ move_up={
  ]
 }
 
+[physics]
+
+common/physics_fps=120
+common/physics_interpolation=true
+
 [rasterizer]
 
 use_pixel_snap=true

+ 2 - 0
2d/kinematic_character/project.godot

@@ -66,7 +66,9 @@ multithread/thread_rid_pool_prealloc=60
 
 [physics]
 
+common/physics_fps=120
 2d/default_gravity=500
+common/physics_interpolation=true
 
 [rendering]
 

+ 26 - 11
2d/kinematic_character/world.tscn

@@ -1,4 +1,4 @@
-[gd_scene load_steps=19 format=2]
+[gd_scene load_steps=20 format=2]
 
 [ext_resource path="res://level/obstacle.png" type="Texture" id=2]
 [ext_resource path="res://player/player.tscn" type="PackedScene" id=3]
@@ -36,6 +36,21 @@ extents = Vector2( 8, 8 )
 [sub_resource type="RectangleShape2D" id=3]
 extents = Vector2( 8, 8 )
 
+[sub_resource type="Animation" id=13]
+resource_name = "RESET"
+tracks/0/type = "value"
+tracks/0/path = NodePath(".:position")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/keys = {
+"times": PoolRealArray( 0 ),
+"transitions": PoolRealArray( 1 ),
+"update": 0,
+"values": [ Vector2( 184, 152 ) ]
+}
+
 [sub_resource type="Animation" id=4]
 length = 10.0
 loop = true
@@ -52,10 +67,8 @@ tracks/0/keys = {
 "values": [ Vector2( 184, 152 ), Vector2( 184, 152 ), Vector2( 328.086, 152 ), Vector2( 328.086, 152 ) ]
 }
 
-[sub_resource type="Animation" id=5]
-resource_name = "leftright"
-length = 10.0
-loop = true
+[sub_resource type="Animation" id=14]
+resource_name = "RESET"
 tracks/0/type = "value"
 tracks/0/path = NodePath(".:position")
 tracks/0/interp = 1
@@ -63,10 +76,10 @@ tracks/0/loop_wrap = true
 tracks/0/imported = false
 tracks/0/enabled = true
 tracks/0/keys = {
-"times": PoolRealArray( 0, 1, 5, 6 ),
-"transitions": PoolRealArray( 1, 1, 1, 1 ),
+"times": PoolRealArray( 0 ),
+"transitions": PoolRealArray( 1 ),
 "update": 0,
-"values": [ Vector2( 184, 152 ), Vector2( 184, 152 ), Vector2( 328.086, 152 ), Vector2( 328.086, 152 ) ]
+"values": [ Vector2( 88.3493, 296 ) ]
 }
 
 [sub_resource type="Animation" id=6]
@@ -128,7 +141,7 @@ tile_data = PoolIntArray( -720908, 0, 0, -720907, 0, 0, -720906, 0, 0, -720905,
 position = Vector2( 233.06, 223.436 )
 
 [node name="MovingPlatform1" type="KinematicBody2D" parent="."]
-position = Vector2( 274.142, 152 )
+position = Vector2( 184, 152 )
 
 [node name="Collision" type="CollisionShape2D" parent="MovingPlatform1"]
 shape = SubResource( 3 )
@@ -139,10 +152,11 @@ texture = ExtResource( 2 )
 [node name="AnimationPlayer" type="AnimationPlayer" parent="MovingPlatform1"]
 autoplay = "leftright"
 playback_process_mode = 0
+anims/RESET = SubResource( 13 )
 anims/leftright = SubResource( 4 )
 
 [node name="MovingPlatform2" type="KinematicBody2D" parent="."]
-position = Vector2( 88.3493, 284.689 )
+position = Vector2( 88.3493, 296 )
 
 [node name="Collision" type="CollisionShape2D" parent="MovingPlatform2"]
 shape = SubResource( 3 )
@@ -153,7 +167,7 @@ texture = ExtResource( 2 )
 [node name="AnimationPlayer" type="AnimationPlayer" parent="MovingPlatform2"]
 autoplay = "updown"
 playback_process_mode = 0
-anims/leftright = SubResource( 5 )
+anims/RESET = SubResource( 14 )
 anims/updown = SubResource( 6 )
 
 [node name="Princess" type="Area2D" parent="."]
@@ -266,5 +280,6 @@ shape = SubResource( 12 )
 [node name="Camera2D" type="Camera2D" parent="."]
 offset = Vector2( 265, 247 )
 current = true
+process_mode = 0
 
 [connection signal="body_entered" from="Princess" to="Princess" method="_on_body_entered"]

+ 2 - 1
2d/navigation/level.tscn

@@ -21,7 +21,7 @@ position = Vector2( 429.585, 287.32 )
 texture = ExtResource( 2 )
 
 [node name="Character" type="Sprite" parent="."]
-position = Vector2( 228.464, 132.594 )
+position = Vector2( 202, 100 )
 scale = Vector2( 0.5, 0.5 )
 texture = ExtResource( 3 )
 offset = Vector2( 0, -26 )
@@ -36,3 +36,4 @@ default_color = Color( 1, 0, 0, 1 )
 [node name="Camera2D" type="Camera2D" parent="."]
 offset = Vector2( 420, 300 )
 current = true
+process_mode = 0

+ 6 - 1
2d/navigation/project.godot

@@ -34,10 +34,15 @@ singletons=[  ]
 
 click={
 "deadzone": 0.5,
-"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"pressed":false,"doubleclick":false,"script":null)
+"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"doubleclick":false,"script":null)
  ]
 }
 
+[physics]
+
+common/physics_fps=120
+common/physics_interpolation=true
+
 [rendering]
 
 quality/driver/driver_name="GLES2"

+ 1 - 0
2d/physics_platformer/player/Player.tscn

@@ -236,6 +236,7 @@ anims/standing_weapon_ready = SubResource( 12 )
 [node name="Camera" type="Camera2D" parent="."]
 current = true
 zoom = Vector2( 0.5, 0.5 )
+process_mode = 0
 limit_left = 0
 limit_top = 0
 

+ 3 - 1
2d/physics_platformer/project.godot

@@ -130,7 +130,7 @@ shoot={
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":2,"pressure":0.0,"pressed":false,"script":null)
 , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":90,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":7,"pressure":0.0,"pressed":false,"script":null)
-, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"pressed":false,"doubleclick":false,"script":null)
+, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"doubleclick":false,"script":null)
  ]
 }
 spawn={
@@ -142,7 +142,9 @@ spawn={
 
 [physics]
 
+common/physics_fps=120
 2d/default_gravity=900
+common/physics_interpolation=true
 
 [rasterizer]
 

+ 4 - 4
2d/physics_tests/project.godot

@@ -47,10 +47,6 @@ config/icon="res://icon.png"
 Log="*res://utils/system_log.gd"
 System="*res://utils/system.gd"
 
-[debug]
-
-gdscript/warnings/return_value_discarded=false
-
 [display]
 
 window/dpi/allow_hidpi=true
@@ -123,6 +119,10 @@ character_jump={
 
 limits/message_queue/max_size_kb=10240
 
+[physics]
+
+common/physics_interpolation=true
+
 [rendering]
 
 quality/driver/driver_name="GLES2"

+ 3 - 1
2d/platformer/project.godot

@@ -141,7 +141,7 @@ shoot={
 "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":2,"pressure":0.0,"pressed":false,"script":null)
 , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":90,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
-, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"pressed":false,"doubleclick":false,"script":null)
+, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"doubleclick":false,"script":null)
 , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777350,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
 , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777238,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
  ]
@@ -228,7 +228,9 @@ splitscreen={
 
 [physics]
 
+common/physics_fps=120
 2d/default_gravity=1400
+common/physics_interpolation=true
 
 [rasterizer]
 

+ 4 - 0
2d/platformer/src/actors/player.tscn

@@ -238,6 +238,10 @@ position = Vector2( 0, -28 )
 offset = Vector2( 0, 50 )
 current = true
 process_mode = 0
+limit_left = -315
+limit_top = -250
+limit_right = 955
+limit_bottom = 690
 
 [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
 position = Vector2( 0, -14 )

+ 0 - 16
2d/platformer/src/level/level.gd

@@ -1,17 +1 @@
 extends Node2D
-
-
-const LIMIT_LEFT = -315
-const LIMIT_TOP = -250
-const LIMIT_RIGHT = 955
-const LIMIT_BOTTOM = 690
-
-
-func _ready():
-	for child in get_children():
-		if child is Player:
-			var camera = child.get_node("Camera")
-			camera.limit_left = LIMIT_LEFT
-			camera.limit_top = LIMIT_TOP
-			camera.limit_right = LIMIT_RIGHT
-			camera.limit_bottom = LIMIT_BOTTOM

+ 2 - 2
2d/platformer/src/main/game.gd

@@ -52,7 +52,7 @@ func _unhandled_input(event):
 			$Black/SplitContainer/ViewportContainer1.free()
 			$Black.queue_free()
 			# warning-ignore:return_value_discarded
-			get_tree().change_scene("res://src/Main/Game.tscn")
+			get_tree().change_scene("res://src/main/game.tscn")
 		else:
 			# warning-ignore:return_value_discarded
-			get_tree().change_scene("res://src/Main/Splitscreen.tscn")
+			get_tree().change_scene("res://src/main/split_screen.tscn")

+ 1 - 1
2d/platformer/src/main/game.tscn

@@ -13,7 +13,7 @@ script = ExtResource( 2 )
 z_index = -1
 
 [node name="Player" parent="Level" instance=ExtResource( 4 )]
-position = Vector2( 157, 648 )
+position = Vector2( 157, 636.5 )
 scale = Vector2( 1, 1 )
 z_index = 3
 

+ 6 - 2
2d/platformer/src/main/split_screen.tscn

@@ -51,11 +51,15 @@ audio_listener_enable_2d = true
 [node name="Level" parent="Black/SplitContainer/ViewportContainer1/Viewport1" instance=ExtResource( 3 )]
 
 [node name="Player1" parent="Black/SplitContainer/ViewportContainer1/Viewport1/Level" instance=ExtResource( 4 )]
-position = Vector2( 90, 546 )
+position = Vector2( 100, 636.5 )
+scale = Vector2( 1, 1 )
+z_index = 3
 action_suffix = "_p1"
 
 [node name="Player2" parent="Black/SplitContainer/ViewportContainer1/Viewport1/Level" instance=ExtResource( 4 )]
-position = Vector2( 120, 546 )
+position = Vector2( 160, 636.5 )
+scale = Vector2( 1, 1 )
+z_index = 3
 action_suffix = "_p2"
 
 [node name="ViewportContainer2" type="ViewportContainer" parent="Black/SplitContainer"]

+ 2 - 1
2d/skeleton/player/player.tscn

@@ -1747,7 +1747,7 @@ nodes/walk_animation/node = SubResource( 21 )
 nodes/walk_animation/position = Vector2( 0, 140 )
 nodes/walk_timescale/node = SubResource( 22 )
 nodes/walk_timescale/position = Vector2( 200, 120 )
-node_connections = [ "jump", 0, "state", "jump", 1, "jump_animation", "land", 0, "jump", "land", 1, "land_animation", "land_hard", 0, "land", "land_hard", 1, "land_hard_animation", "run_timescale", 0, "run_animation", "walk_timescale", 0, "walk_animation", "state", 0, "idle_animation", "state", 1, "walk_timescale", "state", 2, "run_timescale", "state", 3, "fly_animation", "state", 4, "fall_animation", "output", 0, "land_hard" ]
+node_connections = [ "jump", 0, "state", "jump", 1, "jump_animation", "land", 0, "jump", "land", 1, "land_animation", "land_hard", 0, "land", "land_hard", 1, "land_hard_animation", "output", 0, "land_hard", "run_timescale", 0, "run_animation", "state", 0, "idle_animation", "state", 1, "walk_timescale", "state", 2, "run_timescale", "state", 3, "fly_animation", "state", 4, "fall_animation", "walk_timescale", 0, "walk_animation" ]
 
 [sub_resource type="RectangleShape2D" id=24]
 extents = Vector2( 11, 16.4358 )
@@ -1950,3 +1950,4 @@ shape = SubResource( 24 )
 position = Vector2( 0, -32 )
 current = true
 zoom = Vector2( 0.25, 0.25 )
+process_mode = 0

+ 2 - 0
2d/skeleton/project.godot

@@ -82,7 +82,9 @@ limits/debugger_stdout/max_chars_per_second=1000000
 
 [physics]
 
+common/physics_fps=120
 2d/default_gravity=900
+common/physics_interpolation=true
 
 [rendering]
 

+ 2 - 1
3d/kinematic_character/models/cube.glb.import

@@ -20,9 +20,10 @@ nodes/use_legacy_names=true
 materials/location=1
 materials/storage=2
 materials/keep_on_reimport=true
-meshes/octahedral_compression=true
 meshes/compress=true
 meshes/ensure_tangents=true
+meshes/octahedral_compression=true
+meshes/vertex_cache_optimization=true
 meshes/storage=0
 meshes/light_baking=0
 meshes/lightmap_texel_size=0.1

+ 2 - 1
3d/kinematic_character/models/mushroom.glb.import

@@ -20,9 +20,10 @@ nodes/use_legacy_names=true
 materials/location=1
 materials/storage=0
 materials/keep_on_reimport=true
-meshes/octahedral_compression=true
 meshes/compress=true
 meshes/ensure_tangents=true
+meshes/octahedral_compression=true
+meshes/vertex_cache_optimization=true
 meshes/storage=0
 meshes/light_baking=0
 meshes/lightmap_texel_size=0.1

+ 1 - 0
3d/kinematic_character/player/cubio.gd

@@ -17,6 +17,7 @@ func _physics_process(delta):
 		get_tree().quit()
 	if Input.is_action_just_pressed("reset_position"):
 		translation = start_position
+		reset_physics_interpolation()
 
 	var dir = Vector3()
 	dir.x = Input.get_action_strength("move_right") - Input.get_action_strength("move_left")

+ 1 - 0
3d/kinematic_character/project.godot

@@ -76,6 +76,7 @@ exit={
 [physics]
 
 common/physics_fps=120
+common/physics_interpolation=true
 
 [rasterizer]
 

+ 5 - 0
3d/navmesh/project.godot

@@ -22,6 +22,11 @@ config/icon="res://icon.png"
 
 singletons=[  ]
 
+[physics]
+
+common/physics_fps=120
+common/physics_interpolation=true
+
 [rendering]
 
 quality/driver/driver_name="GLES2"

+ 4 - 4
3d/physics_tests/project.godot

@@ -41,10 +41,6 @@ config/icon="res://icon.png"
 Log="*res://utils/system_log.gd"
 System="*res://utils/system.gd"
 
-[debug]
-
-gdscript/warnings/return_value_discarded=false
-
 [display]
 
 window/dpi/allow_hidpi=true
@@ -113,6 +109,10 @@ character_jump={
  ]
 }
 
+[physics]
+
+common/physics_interpolation=true
+
 [rendering]
 
 quality/driver/driver_name="GLES2"

+ 2 - 0
3d/platformer/coin/coin.tscn

@@ -121,6 +121,7 @@ mesh = SubResource( 2 )
 
 [node name="Animation" type="AnimationPlayer" parent="."]
 autoplay = "spin"
+playback_process_mode = 0
 anims/spin = SubResource( 3 )
 anims/take = SubResource( 4 )
 
@@ -137,6 +138,7 @@ freeze_bodies = false
 stream = ExtResource( 2 )
 
 [node name="Particles" type="CPUParticles" parent="."]
+physics_interpolation_mode = 1
 transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.000732422, 0.542954, 0 )
 emitting = false
 one_shot = true

+ 1 - 0
3d/platformer/enemy/enemy.tscn

@@ -618,6 +618,7 @@ unit_db = 18.0
 doppler_tracking = 1
 
 [node name="Explosion" type="CPUParticles" parent="."]
+physics_interpolation_mode = 1
 emitting = false
 lifetime = 0.5
 one_shot = true

+ 1 - 1
3d/platformer/player/bullet/bullet.tscn

@@ -99,9 +99,9 @@ autoplay = "life"
 anims/life = SubResource( 4 )
 
 [node name="Particles" type="CPUParticles" parent="."]
+physics_interpolation_mode = 1
 amount = 16
 lifetime = 0.4
-fixed_fps = 60
 fract_delta = false
 local_coords = false
 mesh = SubResource( 2 )

+ 1 - 1
3d/platformer/player/player.gd

@@ -117,9 +117,9 @@ func _physics_process(delta):
 		shoot_blend = SHOOT_TIME
 		var bullet = preload("res://player/bullet/bullet.tscn").instance()
 		bullet.set_transform(get_node("Armature/Bullet").get_global_transform().orthonormalized())
-		get_parent().add_child(bullet)
 		bullet.set_linear_velocity(get_node("Armature/Bullet").get_global_transform().basis[2].normalized() * BULLET_SPEED)
 		bullet.add_collision_exception_with(self) # Add it to bullet.
+		get_parent().add_child(bullet)
 		get_node("SoundShoot").play()
 
 	prev_shoot = shoot_attempt

+ 7 - 1
3d/platformer/project.godot

@@ -17,6 +17,10 @@ It also features audio reverberation (it sounds echo-y)."
 run/main_scene="res://stage/stage.tscn"
 config/icon="res://icon.png"
 
+[debug]
+
+settings/physics_interpolation/enable_warnings=false
+
 [gdnative]
 
 singletons=[  ]
@@ -124,7 +128,7 @@ jump={
 shoot={
 "deadzone": 0.5,
 "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":90,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
-, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"pressed":false,"doubleclick":false,"script":null)
+, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"doubleclick":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":1,"pressure":0.0,"pressed":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":7,"pressure":0.0,"pressed":false,"script":null)
  ]
@@ -136,7 +140,9 @@ multithread/thread_rid_pool_prealloc=60
 
 [physics]
 
+common/physics_fps=120
 3d/default_gravity=14.0
+common/physics_interpolation=true
 
 [rendering]
 

+ 2 - 1
3d/rigidbody_character/models/cube.glb.import

@@ -20,9 +20,10 @@ nodes/use_legacy_names=true
 materials/location=1
 materials/storage=2
 materials/keep_on_reimport=true
-meshes/octahedral_compression=true
 meshes/compress=true
 meshes/ensure_tangents=true
+meshes/octahedral_compression=true
+meshes/vertex_cache_optimization=true
 meshes/storage=0
 meshes/light_baking=0
 meshes/lightmap_texel_size=0.1

+ 2 - 1
3d/rigidbody_character/models/mushroom.glb.import

@@ -20,9 +20,10 @@ nodes/use_legacy_names=true
 materials/location=1
 materials/storage=0
 materials/keep_on_reimport=true
-meshes/octahedral_compression=true
 meshes/compress=true
 meshes/ensure_tangents=true
+meshes/octahedral_compression=true
+meshes/vertex_cache_optimization=true
 meshes/storage=0
 meshes/light_baking=0
 meshes/lightmap_texel_size=0.1

+ 1 - 0
3d/rigidbody_character/player/cubio.gd

@@ -11,6 +11,7 @@ func _physics_process(_delta):
 		get_tree().quit()
 	if Input.is_action_just_pressed("reset_position"):
 		translation = start_position
+		reset_physics_interpolation()
 		return
 
 	var dir = Vector3()

+ 1 - 0
3d/rigidbody_character/project.godot

@@ -76,6 +76,7 @@ exit={
 [physics]
 
 common/physics_fps=120
+common/physics_interpolation=true
 
 [rasterizer]
 

+ 5 - 0
3d/truck_town/project.godot

@@ -65,6 +65,11 @@ back={
  ]
 }
 
+[physics]
+
+common/physics_fps=120
+common/physics_interpolation=true
+
 [rasterizer]
 
 shadow_filter=3

+ 7 - 0
3d/voxel/default_env.tres

@@ -1,6 +1,10 @@
 [gd_resource type="Environment" load_steps=2 format=2]
 
 [sub_resource type="ProceduralSky" id=1]
+sky_top_color = Color( 0.501961, 0.6, 0.701961, 1 )
+sky_horizon_color = Color( 0.501961, 0.6, 0.701961, 1 )
+ground_bottom_color = Color( 0.501961, 0.6, 0.701961, 1 )
+ground_horizon_color = Color( 0.501961, 0.6, 0.701961, 1 )
 sun_longitude = 100.0
 sun_angle_min = 2.0
 sun_angle_max = 20.0
@@ -8,8 +12,11 @@ sun_angle_max = 20.0
 [resource]
 background_mode = 2
 background_sky = SubResource( 1 )
+background_color = Color( 0.501961, 0.6, 0.701961, 1 )
 fog_enabled = true
 fog_color = Color( 0.501961, 0.6, 0.701961, 1 )
+fog_sun_color = Color( 1, 1, 1, 1 )
+fog_sun_amount = 0.1
 fog_depth_begin = 32.0
 fog_depth_end = 64.0
 fog_transmit_enabled = true

+ 11 - 5
3d/voxel/project.godot

@@ -39,6 +39,10 @@ config/icon="res://icon.png"
 
 Settings="*res://settings.gd"
 
+[debug]
+
+settings/physics_interpolation/enable_warnings=false
+
 [display]
 
 window/size/width=1600
@@ -97,14 +101,14 @@ pause={
 }
 break={
 "deadzone": 0.5,
-"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"pressed":false,"doubleclick":false,"script":null)
+"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"doubleclick":false,"script":null)
 , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":7,"axis_value":1.0,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":7,"pressure":0.0,"pressed":false,"script":null)
  ]
 }
 place={
 "deadzone": 0.5,
-"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":2,"pressed":false,"doubleclick":false,"script":null)
+"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":2,"canceled":false,"pressed":false,"doubleclick":false,"script":null)
 , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":6,"axis_value":1.0,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":6,"pressure":0.0,"pressed":false,"script":null)
  ]
@@ -137,20 +141,20 @@ debug={
 prev_block={
 "deadzone": 0.5,
 "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":123,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
-, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":4,"pressed":false,"doubleclick":false,"script":null)
+, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":4,"canceled":false,"pressed":false,"doubleclick":false,"script":null)
 , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":91,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
  ]
 }
 next_block={
 "deadzone": 0.5,
 "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":125,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
-, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":5,"pressed":false,"doubleclick":false,"script":null)
+, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":5,"canceled":false,"pressed":false,"doubleclick":false,"script":null)
 , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":93,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
  ]
 }
 pick_block={
 "deadzone": 0.5,
-"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":3,"pressed":false,"doubleclick":false,"script":null)
+"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":3,"canceled":false,"pressed":false,"doubleclick":false,"script":null)
  ]
 }
 
@@ -158,12 +162,14 @@ pick_block={
 
 common/physics_fps=120
 3d/physics_engine="Bullet"
+common/physics_interpolation=true
 
 [rendering]
 
 quality/driver/driver_name="GLES2"
 vram_compression/import_etc=true
 vram_compression/import_etc2=false
+quality/shadows/filter_mode=2
 quality/filters/anisotropic_filter_level=16
 quality/filters/msaa=2
 environment/default_environment="res://default_env.tres"

+ 1 - 1
3d/voxel/world/textures/texture_sheet.png.import

@@ -19,7 +19,7 @@ compress/lossy_quality=1.0
 compress/hdr_mode=0
 compress/bptc_ldr=0
 compress/normal_map=0
-flags/repeat=true
+flags/repeat=0
 flags/filter=false
 flags/mipmaps=true
 flags/anisotropic=true

+ 5 - 1
3d/voxel/world/world.tscn

@@ -35,4 +35,8 @@ environment = ExtResource( 3 )
 script = ExtResource( 4 )
 
 [node name="Sun" type="DirectionalLight" parent="Environment"]
-transform = Transform( 0.173648, -0.564863, 0.806707, 0, 0.819152, 0.573576, -0.984808, -0.0996005, 0.142244, 0, 0, 0 )
+transform = Transform( 0.173648, -0.564863, 0.806707, 0, 0.819152, 0.573577, -0.984808, -0.0996004, 0.142244, 0, 0, 0 )
+shadow_enabled = true
+shadow_bias = 0.02
+directional_shadow_mode = 0
+directional_shadow_max_distance = 50.0

+ 5 - 5
networking/multiplayer_bomber/project.godot

@@ -21,10 +21,6 @@ config/icon="res://icon.png"
 
 gamestate="*res://gamestate.gd"
 
-[debug]
-
-gdscript/warnings/return_value_discarded=false
-
 [display]
 
 window/dpi/allow_hidpi=true
@@ -80,10 +76,14 @@ set_bomb={
 "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":1,"pressure":0.0,"pressed":false,"script":null)
-, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"pressed":false,"doubleclick":false,"script":null)
+, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"doubleclick":false,"script":null)
  ]
 }
 
+[physics]
+
+common/physics_interpolation=true
+
 [rendering]
 
 quality/driver/driver_name="GLES2"

+ 1 - 0
networking/multiplayer_bomber/world.tscn

@@ -313,5 +313,6 @@ __meta__ = {
 [node name="Camera2D" type="Camera2D" parent="."]
 offset = Vector2( 512, 300 )
 current = true
+process_mode = 0
 
 [connection signal="pressed" from="Winner/ExitGame" to="Score" method="_on_exit_game_pressed"]

+ 1 - 0
viewport/dynamic_split_screen/default_env.tres

@@ -8,6 +8,7 @@ ground_horizon_color = Color( 0.839216, 0.917647, 0.980392, 1 )
 background_mode = 2
 background_sky = SubResource( 1 )
 ambient_light_color = Color( 0.560784, 0.560784, 0.560784, 1 )
+ambient_light_energy = 0.5
 ambient_light_sky_contribution = 0.3
 fog_color = Color( 1, 1, 1, 1 )
 fog_sun_color = Color( 1, 1, 1, 1 )

+ 6 - 1
viewport/dynamic_split_screen/project.godot

@@ -18,7 +18,7 @@ config/icon="res://icon.png"
 
 [debug]
 
-gdscript/warnings/return_value_discarded=false
+settings/physics_interpolation/enable_warnings=false
 
 [input]
 
@@ -81,6 +81,11 @@ move_right_player2={
  ]
 }
 
+[physics]
+
+common/physics_fps=120
+common/physics_interpolation=true
+
 [rendering]
 
 quality/driver/driver_name="GLES2"