From f9a260e3ab871051ab387a390cb5720915ff0c69 Mon Sep 17 00:00:00 2001 From: Nikolai Rodionov Date: Sun, 9 Feb 2025 23:24:57 +0100 Subject: [PATCH] WIP: Migrating to node3ds --- godot/scenes/characters/character_wrapper.gd | 31 ++------------------ 1 file changed, 2 insertions(+), 29 deletions(-) diff --git a/godot/scenes/characters/character_wrapper.gd b/godot/scenes/characters/character_wrapper.gd index 25bf819..e7daf49 100644 --- a/godot/scenes/characters/character_wrapper.gd +++ b/godot/scenes/characters/character_wrapper.gd @@ -5,7 +5,7 @@ class_name CharacterWrapper @export var owner_placeholder: CharacterBody3D = null @export var server_node: Node3D # The real synced node from the server -@export var interpolation_delay: float = 0.1 # Stay 100ms behind for smooth interpolation +@export var interpolation_delay: float = 0.01 # Stay 100ms behind for smooth interpolation @export var snap_threshold: float = 2.0 # If desync is larger than this, snap instantly var position_buffer = [] # Stores past positions (tuples of (timestamp, position, rotation)) @@ -54,38 +54,11 @@ func _physics_process(delta: float) -> void: # Interpolate rotation using slerp var interpolated_rot = prev_point[2].slerp(next_point[2], alpha) global_transform.basis = Basis(interpolated_rot) + func _ready() -> void: set_multiplayer_authority(multiplayer.get_unique_id()) global_position = owner_placeholder.global_position -#func _physics_process(delta: float) -> void: - ##if not is_on_floor(): - ##velocity += get_gravity() * delta - ##global_position = owner_placeholder.global_position - # - #var server_pos = owner_placeholder.global_transform.origin - #var server_velocity = (server_pos - previous_server_pos) / delta - # - #if server_velocity.length() < 0.1: - #velocity = Vector3.ZERO # Stop predicting movement when nearly still - #var distance_to_server = global_transform.origin.distance_to(server_pos) - #if distance_to_server > snap_threshold: - ## If the desync is too large, quickly correct it - #global_transform.origin = server_pos - #else: - ## Otherwise, smoothly adjust position - #global_transform.origin = global_transform.origin.lerp(server_pos, interpolation_speed * delta) - # - #global_transform.origin += velocity * velocity_influence * delta - ## Update stored velocity - #velocity = velocity.lerp(server_velocity, delta * interpolation_speed) - #previous_server_pos = server_pos - ##velocity = owner_placeholder.velocity - ##global_transform.origin = global_transform.origin.lerp(server_pos, interpolation_speed * delta) - ##global_transform.origin += velocity * velocity_influence * delta - ##velocity = velocity.lerp(server_velocity, delta * interpolation_speed) - #move_and_slide() - # Set the owner placeholder, so the characters can send the requests to a node # it depends on func set_owner_placeholder(owner_placeholder: Node3D):