From 753f44bf30b8af0b6ac0aecf1e4ded5206de9351 Mon Sep 17 00:00:00 2001 From: Solomos Date: Thu, 22 Aug 2024 15:03:06 +0300 Subject: [PATCH 01/11] Changed RPC strings to static functions (faster performance, also compiler hits error if function doesnt exist, so typos are caught with static RPC functions) --- addons/netfox.extras/weapon/network-weapon.gd | 10 +++++----- addons/netfox/network-time-synchronizer.gd | 4 ++-- addons/netfox/network-time.gd | 2 +- addons/netfox/rollback/rollback-synchronizer.gd | 6 +++--- addons/netfox/state-synchronizer.gd | 2 +- examples/forest-brawl/scripts/brawler-spawner.gd | 2 +- examples/forest-brawl/scripts/powerup.gd | 6 +++--- examples/forest-brawl/scripts/score-manager.gd | 2 +- 8 files changed, 17 insertions(+), 17 deletions(-) diff --git a/addons/netfox.extras/weapon/network-weapon.gd b/addons/netfox.extras/weapon/network-weapon.gd index 3bf3753..764f757 100644 --- a/addons/netfox.extras/weapon/network-weapon.gd +++ b/addons/netfox.extras/weapon/network-weapon.gd @@ -30,9 +30,9 @@ func fire() -> Node: var data = _projectile_data[id] if not is_multiplayer_authority(): - rpc_id(get_multiplayer_authority(), "_request_projectile", id, NetworkTime.tick, data) + _request_projectile.rpc_id(get_multiplayer_authority(), id, NetworkTime.tick, data) else: - rpc("_accept_projectile", id, NetworkTime.tick, data) + _accept_projectile.rpc(id, NetworkTime.tick, data) _logger.debug("Calling after fire hook for %s" % [projectile.name]) _after_fire(projectile) @@ -143,7 +143,7 @@ func _request_projectile(id: String, tick: int, request_data: Dictionary): # Reject if sender can't use this input if not _can_peer_use(sender) or not _can_fire(): - rpc_id(sender, "_decline_projectile", id) + _decline_projectile.rpc_id(sender, id) _logger.error("Projectile %s rejected! Peer %s can't use this weapon now" % [id, sender]) return @@ -153,12 +153,12 @@ func _request_projectile(id: String, tick: int, request_data: Dictionary): if not _is_reconcilable(projectile, request_data, local_data): projectile.queue_free() - rpc_id(sender, "_decline_projectile", id) + _decline_projectile.rpc_id(sender, id) _logger.error("Projectile %s rejected! Can't reconcile states: [%s, %s]" % [id, request_data, local_data]) return _save_projectile(projectile, id, local_data) - rpc("_accept_projectile", id, tick, local_data) + _accept_projectile.rpc(id, tick, local_data) _after_fire(projectile) @rpc("authority", "reliable", "call_local") diff --git a/addons/netfox/network-time-synchronizer.gd b/addons/netfox/network-time-synchronizer.gd index 866f167..91706e5 100644 --- a/addons/netfox/network-time-synchronizer.gd +++ b/addons/netfox/network-time-synchronizer.gd @@ -106,7 +106,7 @@ func get_rtt(id: int, sample_id: int = -1) -> float: return 0 var trip_start = get_real_time() - rpc_id(id, "_request_ping") + _request_ping.rpc_id(id) var response = await on_ping var trip_end = get_real_time() var rtt = trip_end - trip_start @@ -138,7 +138,7 @@ func _sync_time_loop(interval: float): @rpc("any_peer", "reliable", "call_remote") func _request_ping(): var sender = multiplayer.get_remote_sender_id() - rpc_id(sender, "_respond_ping", NetworkTime.time, NetworkTime.tick) + _respond_ping.rpc_id(sender, NetworkTime.time, NetworkTime.tick) @rpc("any_peer", "reliable", "call_remote") func _respond_ping(peer_time: float, peer_tick: int): diff --git a/addons/netfox/network-time.gd b/addons/netfox/network-time.gd index ea018a5..aa1756f 100644 --- a/addons/netfox/network-time.gd +++ b/addons/netfox/network-time.gd @@ -307,7 +307,7 @@ func start(): _next_tick_time = _get_os_time() after_sync.emit() - rpc_id(1, "_submit_sync_success") + _submit_sync_success.rpc_id(1) else: _active = true _initial_sync_done = true diff --git a/addons/netfox/rollback/rollback-synchronizer.gd b/addons/netfox/rollback/rollback-synchronizer.gd index b0d3af0..b49f0ea 100644 --- a/addons/netfox/rollback/rollback-synchronizer.gd +++ b/addons/netfox/rollback/rollback-synchronizer.gd @@ -160,7 +160,7 @@ func _record_tick(tick: int): # Broadcast as new state _latest_state = max(_latest_state, tick) _states[tick] = PropertySnapshot.merge(_states.get(tick, {}), broadcast) - rpc("_submit_state", broadcast, tick) + _submit_state.rpc(broadcast, tick) # Record state for specified tick ( current + 1 ) if not _record_state_props.is_empty() and tick > _latest_state: @@ -205,9 +205,9 @@ func _after_tick(_delta, _tick): func _attempt_submit_input(input: Dictionary): # TODO: Default to input broadcast in mesh network setups if enable_input_broadcast: - rpc("_submit_input", input, NetworkTime.tick) + _submit_input.rpc(input, NetworkTime.tick) elif not multiplayer.is_server(): - rpc_id(1, "_submit_input", input, NetworkTime.tick) + _submit_input.rpc_id(1, input, NetworkTime.tick) func _get_history(buffer: Dictionary, tick: int) -> Dictionary: if buffer.has(tick): diff --git a/addons/netfox/state-synchronizer.gd b/addons/netfox/state-synchronizer.gd index f892758..0f60eee 100644 --- a/addons/netfox/state-synchronizer.gd +++ b/addons/netfox/state-synchronizer.gd @@ -31,7 +31,7 @@ func _after_tick(_dt, tick): if is_multiplayer_authority(): # Submit snapshot var state = PropertySnapshot.extract(_props) - rpc("_submit_state", state, tick) + _submit_state.rpc(state, tick) else: # Apply last received state PropertySnapshot.apply(_last_received_state, _property_cache) diff --git a/examples/forest-brawl/scripts/brawler-spawner.gd b/examples/forest-brawl/scripts/brawler-spawner.gd index 2e116a0..154fc62 100644 --- a/examples/forest-brawl/scripts/brawler-spawner.gd +++ b/examples/forest-brawl/scripts/brawler-spawner.gd @@ -81,7 +81,7 @@ func _spawn(id: int) -> BrawlerController: # Submit name var player_name = name_input.text print("Submitting player name " + player_name) - rpc("_submit_name", player_name) + _submit_name.rpc(player_name) return avatar diff --git a/examples/forest-brawl/scripts/powerup.gd b/examples/forest-brawl/scripts/powerup.gd index e7c8881..5e5a9fd 100644 --- a/examples/forest-brawl/scripts/powerup.gd +++ b/examples/forest-brawl/scripts/powerup.gd @@ -19,14 +19,14 @@ func _tick(delta, tick): if body.is_in_group("Brawlers") and not _has_powerup(body): _take() # Predict if is_multiplayer_authority(): - rpc("_spawn_effect", randi_range(0, effects.size() - 1), body.get_path()) - rpc("_take") + _spawn_effect.rpc(randi_range(0, effects.size() - 1), body.get_path()) + _take.rpc() else: scale = scale.lerp(Vector3.ONE * 0.0005, fade_speed * delta) if tick == respawn_tick: _respawn() # Predict if is_multiplayer_authority(): - rpc("_respawn") + _respawn.rpc() func _has_powerup(target: Node) -> bool: return target.get_children()\ diff --git a/examples/forest-brawl/scripts/score-manager.gd b/examples/forest-brawl/scripts/score-manager.gd index 92fa19c..1b09f16 100644 --- a/examples/forest-brawl/scripts/score-manager.gd +++ b/examples/forest-brawl/scripts/score-manager.gd @@ -34,7 +34,7 @@ func _handle_fall(brawler: BrawlerController): _scores[id] = _scores.get(id, 0) - 1 GameEvents.on_scores_updated.emit(_scores) - rpc("_submit_scores", _scores) + _submit_scores.rpc(_scores) # Display scoreboard if id == multiplayer.get_unique_id(): From 7a8529089e0712f4aa67a3d8a46c26908b7abba6 Mon Sep 17 00:00:00 2001 From: Solomos Date: Fri, 23 Aug 2024 10:21:45 +0300 Subject: [PATCH 02/11] Restore string projectile ids --- addons/netfox.extras/weapon/network-weapon.gd | 43 +++++-- examples/forest-brawl/scenes/brawler.tscn | 114 +++++++++--------- .../forest-brawl/scripts/brawler-weapon.gd | 12 +- 3 files changed, 93 insertions(+), 76 deletions(-) diff --git a/addons/netfox.extras/weapon/network-weapon.gd b/addons/netfox.extras/weapon/network-weapon.gd index 764f757..6d34a86 100644 --- a/addons/netfox.extras/weapon/network-weapon.gd +++ b/addons/netfox.extras/weapon/network-weapon.gd @@ -10,6 +10,8 @@ var _reconcile_buffer: Array = [] static var _logger: _NetfoxLogger = _NetfoxLogger.for_extras("NetworkWeapon") +var latest_projectile_id: int = -1 + func _ready(): NetworkTime.before_tick_loop.connect(_before_tick_loop) @@ -24,7 +26,7 @@ func fire() -> Node: if not can_fire(): return null - var id = _generate_id() + var id: int = _generate_id() var projectile = _spawn() _save_projectile(projectile, id) var data = _projectile_data[id] @@ -105,9 +107,9 @@ func _is_reconcilable(projectile: Node, request_data: Dictionary, local_data: Di func _reconcile(projectile: Node, local_data: Dictionary, remote_data: Dictionary): pass -func _save_projectile(projectile: Node, id: String, data: Dictionary = {}): +func _save_projectile(projectile: Node, id: int, data: Dictionary = {}): _projectiles[id] = projectile - projectile.name += " " + id + projectile.name += " " + str(id) projectile.set_multiplayer_authority(get_multiplayer_authority()) if data.is_empty(): @@ -130,15 +132,30 @@ func _before_tick_loop(): _reconcile_buffer.clear() -func _generate_id(length: int = 12, charset: String = "abcdefghijklmnopqrstuvwxyz0123456789") -> String: - var result = "" - for i in range(length): - var idx = randi_range(0, charset.length() - 1) - result += charset[idx] - return result +func _generate_id() -> int: + #First projectile + if (latest_projectile_id == -1): + latest_projectile_id = get_player_id() * 10000 + else: + latest_projectile_id += 1 + return latest_projectile_id + +## @experimental +## Normally, there would be a singleton which stores all players' peer_ids and player_ids, and the local peer id and player_id +## Since there isn't, the player_id is calculated realtime by counting how many brawlers until our own... +func get_player_id() -> int: + var brawlers: Array[Node] = get_tree().get_nodes_in_group("Brawlers") + var picked_brawler_index: int = 0 + for picked_brawler in brawlers: + if (picked_brawler is BrawlerController): + if ((picked_brawler as BrawlerController).player_id == multiplayer.get_unique_id()): + return picked_brawler_index + picked_brawler_index += 1 + + return -1 @rpc("any_peer", "reliable", "call_remote") -func _request_projectile(id: String, tick: int, request_data: Dictionary): +func _request_projectile(id: int, tick: int, request_data: Dictionary): var sender = multiplayer.get_remote_sender_id() # Reject if sender can't use this input @@ -149,7 +166,7 @@ func _request_projectile(id: String, tick: int, request_data: Dictionary): # Validate incoming data var projectile = _spawn() - var local_data = _get_data(projectile) + var local_data: Dictionary = _get_data(projectile) if not _is_reconcilable(projectile, request_data, local_data): projectile.queue_free() @@ -162,7 +179,7 @@ func _request_projectile(id: String, tick: int, request_data: Dictionary): _after_fire(projectile) @rpc("authority", "reliable", "call_local") -func _accept_projectile(id: String, tick: int, response_data: Dictionary): +func _accept_projectile(id: int, tick: int, response_data: Dictionary): _logger.info("[%s] Accepting projectile %s from %s" % [multiplayer.get_unique_id(), id, multiplayer.get_remote_sender_id()]) if multiplayer.get_unique_id() == multiplayer.get_remote_sender_id(): # Projectile is local, nothing to do @@ -179,7 +196,7 @@ func _accept_projectile(id: String, tick: int, response_data: Dictionary): _after_fire(projectile) @rpc("authority", "reliable", "call_remote") -func _decline_projectile(id: String): +func _decline_projectile(id: int): if not _projectiles.has(id): return diff --git a/examples/forest-brawl/scenes/brawler.tscn b/examples/forest-brawl/scenes/brawler.tscn index 65be7ea..eda585c 100644 --- a/examples/forest-brawl/scenes/brawler.tscn +++ b/examples/forest-brawl/scenes/brawler.tscn @@ -62,7 +62,7 @@ fadeout_time = 0.2 [sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_ofns8"] [sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_8to0y"] -graph_offset = Vector2(-680.797, -57.1155) +graph_offset = Vector2(-629.987, -38.9762) nodes/Float/node = SubResource("AnimationNodeBlend2_qv2tk") nodes/Float/position = Vector2(-80, 0) "nodes/Float Anim/node" = SubResource("AnimationNodeAnimation_gdp4i") @@ -82,7 +82,7 @@ node_connections = [&"output", 0, &"Throw", &"Float", 0, &"MoveScale", &"Float", [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_qgusj"] radius = 0.25 -height = 1.0 +height = 1.02102 [sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_4cjl8"] properties/0/path = NodePath(".:player_name") @@ -104,71 +104,71 @@ respawn_time = 8.0 transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, -0.5, 0) [node name="Skeleton3D" parent="bomber-guy/rig" index="0"] -bones/0/position = Vector3(3.20746e-15, 0.583857, -0.0893679) +bones/0/position = Vector3(3.20917e-15, 0.539854, -0.0688332) bones/0/rotation = Quaternion(0.255292, -7.97688e-15, 1.00226e-14, 0.966864) -bones/1/rotation = Quaternion(0.0205548, 1.19184e-07, 2.45031e-09, 0.999789) -bones/1/scale = Vector3(1.01931, 0.96247, 1.01931) -bones/2/rotation = Quaternion(0.096395, -4.59033e-12, 2.30305e-08, 0.995343) -bones/2/scale = Vector3(1.04897, 0.907002, 1.05131) -bones/3/rotation = Quaternion(-0.181044, -1.17239e-07, -2.15821e-08, 0.983475) -bones/3/scale = Vector3(0.935252, 1.1196, 0.963441) -bones/4/rotation = Quaternion(0.376178, 1.10453e-07, 4.48439e-08, 0.926548) -bones/4/scale = Vector3(0.922825, 1.17435, 0.922825) -bones/5/rotation = Quaternion(-0.0765415, -3.93158e-08, -1.58714e-08, 0.997066) -bones/5/scale = Vector3(1.00009, 1.00661, 0.995893) -bones/6/rotation = Quaternion(-0.43687, -4.72473e-08, -2.26897e-08, 0.899525) -bones/6/scale = Vector3(1.08356, 1.00264, 0.945663) -bones/7/position = Vector3(-3.6176e-08, 0.583857, -0.0893679) +bones/1/rotation = Quaternion(-0.0131631, 1.19199e-07, -1.56918e-09, 0.999913) +bones/1/scale = Vector3(1.01567, 0.969373, 1.01567) +bones/2/rotation = Quaternion(0.0174304, -3.28848e-13, 4.15636e-09, 0.999848) +bones/2/scale = Vector3(1.04934, 0.908112, 1.04939) +bones/3/rotation = Quaternion(-0.117808, -1.18379e-07, -1.40437e-08, 0.993036) +bones/3/scale = Vector3(0.938281, 1.12625, 0.949847) +bones/4/rotation = Quaternion(0.338494, 1.12172e-07, 4.03516e-08, 0.940969) +bones/4/scale = Vector3(0.967361, 1.06862, 0.967361) +bones/5/rotation = Quaternion(-0.0861933, 1.20735e-10, -2.05651e-08, 0.996279) +bones/5/scale = Vector3(1.00005, 1.00319, 0.997358) +bones/6/rotation = Quaternion(-0.346758, -1.11813e-07, -4.13368e-08, 0.937955) +bones/6/scale = Vector3(1.0337, 0.978468, 0.993471) +bones/7/position = Vector3(-3.6176e-08, 0.539854, -0.0688332) bones/7/rotation = Quaternion(-0.135651, -0.571304, -0.59224, 0.551781) -bones/8/position = Vector3(3.6176e-08, 0.583857, -0.0893679) +bones/8/position = Vector3(3.6176e-08, 0.539854, -0.0688332) bones/8/rotation = Quaternion(-0.135651, 0.571304, 0.59224, 0.551781) -bones/9/position = Vector3(0.185305, 0.611893, -0.0339381) -bones/9/rotation = Quaternion(0.905251, -2.21189e-05, -0.000117811, 0.424877) -bones/9/scale = Vector3(1.00629, 0.987535, 1.00629) +bones/9/position = Vector3(0.185305, 0.56789, -0.0134034) +bones/9/rotation = Quaternion(0.87591, -1.03118e-05, -0.000111526, 0.482476) +bones/9/scale = Vector3(1.00998, 0.980343, 1.00998) bones/10/rotation = Quaternion(1.23085e-07, -5.52346e-06, -2.98159e-11, 1) -bones/11/rotation = Quaternion(0.385459, 6.31284e-06, -3.32111e-05, 0.922725) -bones/11/scale = Vector3(1.0012, 0.988229, 1.01087) +bones/11/rotation = Quaternion(0.508443, 6.68211e-07, -3.31581e-05, 0.861096) +bones/11/scale = Vector3(1.00198, 0.973612, 1.0254) bones/12/rotation = Quaternion(-9.67563e-08, 8.29257e-06, -2.16274e-09, 1) -bones/13/rotation = Quaternion(-0.505198, 0.000109451, 2.25149e-05, 0.863003) -bones/13/scale = Vector3(0.992628, 0.997842, 1.00979) +bones/13/rotation = Quaternion(-0.566779, 0.000110908, 1.13155e-05, 0.82387) +bones/13/scale = Vector3(0.988157, 0.992785, 1.01963) bones/14/rotation = Quaternion(5.02433e-08, 0.977548, -0.210714, 2.33145e-07) bones/14/scale = Vector3(0.99948, 1.00078, 0.999746) -bones/15/position = Vector3(-0.185305, 0.611893, -0.0339381) -bones/15/rotation = Quaternion(0.99633, 4.19078e-05, -0.000130651, -0.08559) -bones/15/scale = Vector3(1.00638, 0.987357, 1.00638) -bones/17/rotation = Quaternion(0.389683, 1.45563e-05, -3.68506e-05, 0.920949) -bones/17/scale = Vector3(1.00122, 0.987896, 1.0112) +bones/15/position = Vector3(-0.185305, 0.56789, -0.0134034) +bones/15/rotation = Quaternion(0.996569, 4.5368e-05, -0.000130226, -0.0827628) +bones/15/scale = Vector3(1.0081, 0.984002, 1.0081) +bones/17/rotation = Quaternion(0.460488, 1.4422e-05, -3.93519e-05, 0.887666) +bones/17/scale = Vector3(1.0016, 0.980632, 1.01839) bones/18/rotation = Quaternion(-4.84353e-08, 4.04099e-06, 1.10813e-08, 1) -bones/19/rotation = Quaternion(-0.871762, 8.53352e-05, 7.82363e-05, 0.48993) -bones/19/scale = Vector3(0.992445, 0.99873, 1.0091) +bones/19/rotation = Quaternion(-0.906042, 8.57267e-05, 7.43589e-05, 0.423189) +bones/19/scale = Vector3(0.990241, 1.00248, 1.00778) bones/20/rotation = Quaternion(1.02643e-08, 0.977516, -0.210861, -2.46051e-07) bones/20/scale = Vector3(1.00003, 0.999961, 1.00001) -bones/21/position = Vector3(0.0507796, 1.02886, 0.287226) -bones/21/rotation = Quaternion(-0.472842, -0.270157, -0.416495, 0.727989) -bones/22/position = Vector3(0.242455, 1.04749, 0.191412) -bones/22/rotation = Quaternion(-0.280276, 0.143785, -0.88237, 0.349562) -bones/22/scale = Vector3(1.07211, 0.87008, 1.07211) -bones/23/rotation = Quaternion(3.18531e-08, 0.0853649, 8.32473e-08, 0.99635) -bones/24/rotation = Quaternion(0.421944, 0.147999, -0.308633, 0.839527) -bones/24/scale = Vector3(0.960023, 0.997541, 1.06918) -bones/25/rotation = Quaternion(2.97979e-08, -0.026165, -1.54692e-07, 0.999658) -bones/26/rotation = Quaternion(0.143976, -0.0275267, 0.0637975, 0.987139) -bones/26/scale = Vector3(1.00575, 0.989855, 1.00455) -bones/27/position = Vector3(-0.0507796, 1.02886, 0.287226) -bones/27/rotation = Quaternion(-0.472842, 0.270157, 0.416495, 0.727989) -bones/28/position = Vector3(-0.242455, 1.04749, 0.191412) -bones/28/rotation = Quaternion(-0.425562, -0.363618, 0.693798, 0.453127) -bones/28/scale = Vector3(0.983063, 1.03476, 0.983063) -bones/29/rotation = Quaternion(3.98409e-08, -0.0370571, -2.15209e-07, 0.999313) -bones/30/rotation = Quaternion(0.232389, -0.0893491, 0.253375, 0.93478) -bones/30/scale = Vector3(1.06864, 0.878868, 1.06637) -bones/31/rotation = Quaternion(-3.48398e-08, -0.117463, 1.57868e-07, 0.993077) -bones/32/rotation = Quaternion(0.41303, -0.11386, 0.189505, 0.883476) -bones/32/scale = Vector3(0.954337, 1.01045, 1.05417) -bones/33/position = Vector3(0.1184, 1.00881, 0.15031) -bones/33/rotation = Quaternion(-1.44276e-14, 0.544482, 0.838773, -2.01673e-14) -bones/34/position = Vector3(-0.1184, 1.00881, 0.15031) -bones/34/rotation = Quaternion(-1.44276e-14, 0.544482, 0.838773, -2.01673e-14) +bones/21/position = Vector3(0.0507796, 1.02048, 0.270122) +bones/21/rotation = Quaternion(-0.508111, -0.290336, -0.402688, 0.703826) +bones/22/position = Vector3(0.242455, 1.02959, 0.172916) +bones/22/rotation = Quaternion(-0.339038, 0.241433, -0.797253, 0.437209) +bones/22/scale = Vector3(1.12747, 0.786669, 1.12747) +bones/23/rotation = Quaternion(6.68784e-09, 0.054106, 1.17316e-08, 0.998535) +bones/24/rotation = Quaternion(0.57423, 0.170245, -0.428192, 0.676704) +bones/24/scale = Vector3(0.896123, 0.990868, 1.16138) +bones/25/rotation = Quaternion(-8.37126e-09, -0.0293802, -4.29542e-08, 0.999568) +bones/26/rotation = Quaternion(0.0631054, -0.0315709, 0.0420517, 0.996621) +bones/26/scale = Vector3(1.05515, 0.900522, 1.05367) +bones/27/position = Vector3(-0.0507796, 1.02048, 0.270122) +bones/27/rotation = Quaternion(-0.508111, 0.290336, 0.402688, 0.703826) +bones/28/position = Vector3(-0.242455, 1.02959, 0.172916) +bones/28/rotation = Quaternion(-0.448643, -0.385834, 0.615265, 0.520866) +bones/28/scale = Vector3(0.971373, 1.05981, 0.971373) +bones/29/rotation = Quaternion(1.88805e-08, -0.00671556, -1.13412e-07, 0.999978) +bones/30/rotation = Quaternion(0.245547, -0.0955129, 0.32016, 0.90999) +bones/30/scale = Vector3(1.13753, 0.774495, 1.14054) +bones/31/rotation = Quaternion(-5.69782e-08, -0.133292, 6.07938e-08, 0.991077) +bones/32/rotation = Quaternion(0.407167, -0.125702, 0.26394, 0.865303) +bones/32/scale = Vector3(0.93705, 1.02226, 1.13088) +bones/33/position = Vector3(0.1184, 0.98706, 0.135816) +bones/33/rotation = Quaternion(-1.20165e-14, 0.585119, 0.810947, -1.98123e-14) +bones/34/position = Vector3(-0.1184, 0.98706, 0.135816) +bones/34/rotation = Quaternion(-1.20165e-14, 0.585119, 0.810947, -1.98123e-14) [node name="AnimationTree" type="AnimationTree" parent="."] tree_root = SubResource("AnimationNodeBlendTree_8to0y") diff --git a/examples/forest-brawl/scripts/brawler-weapon.gd b/examples/forest-brawl/scripts/brawler-weapon.gd index b7c1b75..d8ff718 100644 --- a/examples/forest-brawl/scripts/brawler-weapon.gd +++ b/examples/forest-brawl/scripts/brawler-weapon.gd @@ -23,13 +23,13 @@ func _after_fire(_projectile: Node3D): sound.play() func _spawn() -> Node3D: - var p = projectile.instantiate() as BombProjectile - get_tree().root.add_child(p, true) - p.global_transform = global_transform - p.fired_by = get_parent() + var bomb_projectile: BombProjectile = projectile.instantiate() as BombProjectile + get_tree().root.add_child(bomb_projectile, true) + bomb_projectile.global_transform = global_transform + bomb_projectile.fired_by = get_parent() - return p + return bomb_projectile -func _tick(_delta, _t): +func _tick(_delta: float, _t: int): if input.is_firing: fire() From bd49333dd8d8bbf765c9fc2640ebcb0400ad69b8 Mon Sep 17 00:00:00 2001 From: Solomos Date: Fri, 23 Aug 2024 10:25:30 +0300 Subject: [PATCH 03/11] further restore for string ids --- addons/netfox.extras/weapon/network-weapon.gd | 27 ++--- examples/forest-brawl/scenes/brawler.tscn | 110 +++++++++--------- 2 files changed, 67 insertions(+), 70 deletions(-) diff --git a/addons/netfox.extras/weapon/network-weapon.gd b/addons/netfox.extras/weapon/network-weapon.gd index 6d34a86..d175121 100644 --- a/addons/netfox.extras/weapon/network-weapon.gd +++ b/addons/netfox.extras/weapon/network-weapon.gd @@ -10,8 +10,6 @@ var _reconcile_buffer: Array = [] static var _logger: _NetfoxLogger = _NetfoxLogger.for_extras("NetworkWeapon") -var latest_projectile_id: int = -1 - func _ready(): NetworkTime.before_tick_loop.connect(_before_tick_loop) @@ -26,7 +24,7 @@ func fire() -> Node: if not can_fire(): return null - var id: int = _generate_id() + var id: String = _generate_id() var projectile = _spawn() _save_projectile(projectile, id) var data = _projectile_data[id] @@ -107,9 +105,9 @@ func _is_reconcilable(projectile: Node, request_data: Dictionary, local_data: Di func _reconcile(projectile: Node, local_data: Dictionary, remote_data: Dictionary): pass -func _save_projectile(projectile: Node, id: int, data: Dictionary = {}): +func _save_projectile(projectile: Node, id: String, data: Dictionary = {}): _projectiles[id] = projectile - projectile.name += " " + str(id) + projectile.name += " " + id projectile.set_multiplayer_authority(get_multiplayer_authority()) if data.is_empty(): @@ -132,13 +130,12 @@ func _before_tick_loop(): _reconcile_buffer.clear() -func _generate_id() -> int: - #First projectile - if (latest_projectile_id == -1): - latest_projectile_id = get_player_id() * 10000 - else: - latest_projectile_id += 1 - return latest_projectile_id +func _generate_id(length: int = 12, charset: String = "abcdefghijklmnopqrstuvwxyz0123456789") -> String: + var result = "" + for i in range(length): + var idx = randi_range(0, charset.length() - 1) + result += charset[idx] + return result ## @experimental ## Normally, there would be a singleton which stores all players' peer_ids and player_ids, and the local peer id and player_id @@ -155,7 +152,7 @@ func get_player_id() -> int: return -1 @rpc("any_peer", "reliable", "call_remote") -func _request_projectile(id: int, tick: int, request_data: Dictionary): +func _request_projectile(id: String, tick: int, request_data: Dictionary): var sender = multiplayer.get_remote_sender_id() # Reject if sender can't use this input @@ -179,7 +176,7 @@ func _request_projectile(id: int, tick: int, request_data: Dictionary): _after_fire(projectile) @rpc("authority", "reliable", "call_local") -func _accept_projectile(id: int, tick: int, response_data: Dictionary): +func _accept_projectile(id: String, tick: int, response_data: Dictionary): _logger.info("[%s] Accepting projectile %s from %s" % [multiplayer.get_unique_id(), id, multiplayer.get_remote_sender_id()]) if multiplayer.get_unique_id() == multiplayer.get_remote_sender_id(): # Projectile is local, nothing to do @@ -196,7 +193,7 @@ func _accept_projectile(id: int, tick: int, response_data: Dictionary): _after_fire(projectile) @rpc("authority", "reliable", "call_remote") -func _decline_projectile(id: int): +func _decline_projectile(id: String): if not _projectiles.has(id): return diff --git a/examples/forest-brawl/scenes/brawler.tscn b/examples/forest-brawl/scenes/brawler.tscn index eda585c..4b6dfa5 100644 --- a/examples/forest-brawl/scenes/brawler.tscn +++ b/examples/forest-brawl/scenes/brawler.tscn @@ -104,71 +104,71 @@ respawn_time = 8.0 transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, -0.5, 0) [node name="Skeleton3D" parent="bomber-guy/rig" index="0"] -bones/0/position = Vector3(3.20917e-15, 0.539854, -0.0688332) +bones/0/position = Vector3(3.20916e-15, 0.592859, -0.0935691) bones/0/rotation = Quaternion(0.255292, -7.97688e-15, 1.00226e-14, 0.966864) -bones/1/rotation = Quaternion(-0.0131631, 1.19199e-07, -1.56918e-09, 0.999913) -bones/1/scale = Vector3(1.01567, 0.969373, 1.01567) -bones/2/rotation = Quaternion(0.0174304, -3.28848e-13, 4.15636e-09, 0.999848) -bones/2/scale = Vector3(1.04934, 0.908112, 1.04939) -bones/3/rotation = Quaternion(-0.117808, -1.18379e-07, -1.40437e-08, 0.993036) -bones/3/scale = Vector3(0.938281, 1.12625, 0.949847) -bones/4/rotation = Quaternion(0.338494, 1.12172e-07, 4.03516e-08, 0.940969) -bones/4/scale = Vector3(0.967361, 1.06862, 0.967361) -bones/5/rotation = Quaternion(-0.0861933, 1.20735e-10, -2.05651e-08, 0.996279) -bones/5/scale = Vector3(1.00005, 1.00319, 0.997358) -bones/6/rotation = Quaternion(-0.346758, -1.11813e-07, -4.13368e-08, 0.937955) -bones/6/scale = Vector3(1.0337, 0.978468, 0.993471) -bones/7/position = Vector3(-3.6176e-08, 0.539854, -0.0688332) +bones/1/rotation = Quaternion(0.0275016, 1.19164e-07, 3.27843e-09, 0.999622) +bones/1/scale = Vector3(1.01976, 0.961623, 1.01976) +bones/2/rotation = Quaternion(0.112333, -8.10552e-12, 2.68551e-08, 0.993671) +bones/2/scale = Vector3(1.04682, 0.910027, 1.05006) +bones/3/rotation = Quaternion(-0.193595, -1.16954e-07, -2.30784e-08, 0.981081) +bones/3/scale = Vector3(0.936742, 1.1132, 0.967987) +bones/4/rotation = Quaternion(0.381777, 1.1018e-07, 4.55113e-08, 0.924255) +bones/4/scale = Vector3(0.91276, 1.20031, 0.91276) +bones/5/rotation = Quaternion(-0.0746553, -9.46896e-08, -1.25372e-08, 0.997209) +bones/5/scale = Vector3(1.0001, 1.00728, 0.99575) +bones/6/rotation = Quaternion(-0.45218, -2.97353e-08, -1.48577e-08, 0.891927) +bones/6/scale = Vector3(1.09547, 1.01376, 0.930999) +bones/7/position = Vector3(-3.6176e-08, 0.592859, -0.0935691) bones/7/rotation = Quaternion(-0.135651, -0.571304, -0.59224, 0.551781) -bones/8/position = Vector3(3.6176e-08, 0.539854, -0.0688332) +bones/8/position = Vector3(3.6176e-08, 0.592859, -0.0935691) bones/8/rotation = Quaternion(-0.135651, 0.571304, 0.59224, 0.551781) -bones/9/position = Vector3(0.185305, 0.56789, -0.0134034) -bones/9/rotation = Quaternion(0.87591, -1.03118e-05, -0.000111526, 0.482476) -bones/9/scale = Vector3(1.00998, 0.980343, 1.00998) +bones/9/position = Vector3(0.185305, 0.620896, -0.0381393) +bones/9/rotation = Quaternion(0.912005, -2.48306e-05, -0.000119285, 0.41018) +bones/9/scale = Vector3(1.00568, 0.988743, 1.00568) bones/10/rotation = Quaternion(1.23085e-07, -5.52346e-06, -2.98159e-11, 1) -bones/11/rotation = Quaternion(0.508443, 6.68211e-07, -3.31581e-05, 0.861096) -bones/11/scale = Vector3(1.00198, 0.973612, 1.0254) +bones/11/rotation = Quaternion(0.353384, 7.68286e-06, -3.30724e-05, 0.935479) +bones/11/scale = Vector3(1.00108, 0.990562, 1.00858) bones/12/rotation = Quaternion(-9.67563e-08, 8.29257e-06, -2.16274e-09, 1) -bones/13/rotation = Quaternion(-0.566779, 0.000110908, 1.13155e-05, 0.82387) -bones/13/scale = Vector3(0.988157, 0.992785, 1.01963) +bones/13/rotation = Quaternion(-0.489322, 0.000109022, 2.5154e-05, 0.872103) +bones/13/scale = Vector3(0.993441, 0.998554, 1.00822) bones/14/rotation = Quaternion(5.02433e-08, 0.977548, -0.210714, 2.33145e-07) bones/14/scale = Vector3(0.99948, 1.00078, 0.999746) -bones/15/position = Vector3(-0.185305, 0.56789, -0.0134034) -bones/15/rotation = Quaternion(0.996569, 4.5368e-05, -0.000130226, -0.0827628) -bones/15/scale = Vector3(1.0081, 0.984002, 1.0081) -bones/17/rotation = Quaternion(0.460488, 1.4422e-05, -3.93519e-05, 0.887666) -bones/17/scale = Vector3(1.0016, 0.980632, 1.01839) +bones/15/position = Vector3(-0.185305, 0.620896, -0.0381393) +bones/15/rotation = Quaternion(0.99612, 4.01861e-05, -0.000130867, -0.0880026) +bones/15/scale = Vector3(1.00604, 0.988026, 1.00604) +bones/17/rotation = Quaternion(0.371962, 1.46208e-05, -3.63265e-05, 0.928248) +bones/17/scale = Vector3(1.00115, 0.989241, 1.00988) bones/18/rotation = Quaternion(-4.84353e-08, 4.04099e-06, 1.10813e-08, 1) -bones/19/rotation = Quaternion(-0.906042, 8.57267e-05, 7.43589e-05, 0.423189) -bones/19/scale = Vector3(0.990241, 1.00248, 1.00778) +bones/19/rotation = Quaternion(-0.86344, 8.51632e-05, 7.92134e-05, 0.504452) +bones/19/scale = Vector3(0.992854, 0.998164, 1.00922) bones/20/rotation = Quaternion(1.02643e-08, 0.977516, -0.210861, -2.46051e-07) bones/20/scale = Vector3(1.00003, 0.999961, 1.00001) -bones/21/position = Vector3(0.0507796, 1.02048, 0.270122) -bones/21/rotation = Quaternion(-0.508111, -0.290336, -0.402688, 0.703826) -bones/22/position = Vector3(0.242455, 1.02959, 0.172916) -bones/22/rotation = Quaternion(-0.339038, 0.241433, -0.797253, 0.437209) -bones/22/scale = Vector3(1.12747, 0.786669, 1.12747) -bones/23/rotation = Quaternion(6.68784e-09, 0.054106, 1.17316e-08, 0.998535) -bones/24/rotation = Quaternion(0.57423, 0.170245, -0.428192, 0.676704) -bones/24/scale = Vector3(0.896123, 0.990868, 1.16138) -bones/25/rotation = Quaternion(-8.37126e-09, -0.0293802, -4.29542e-08, 0.999568) -bones/26/rotation = Quaternion(0.0631054, -0.0315709, 0.0420517, 0.996621) -bones/26/scale = Vector3(1.05515, 0.900522, 1.05367) -bones/27/position = Vector3(-0.0507796, 1.02048, 0.270122) -bones/27/rotation = Quaternion(-0.508111, 0.290336, 0.402688, 0.703826) -bones/28/position = Vector3(-0.242455, 1.02959, 0.172916) -bones/28/rotation = Quaternion(-0.448643, -0.385834, 0.615265, 0.520866) -bones/28/scale = Vector3(0.971373, 1.05981, 0.971373) -bones/29/rotation = Quaternion(1.88805e-08, -0.00671556, -1.13412e-07, 0.999978) -bones/30/rotation = Quaternion(0.245547, -0.0955129, 0.32016, 0.90999) -bones/30/scale = Vector3(1.13753, 0.774495, 1.14054) -bones/31/rotation = Quaternion(-5.69782e-08, -0.133292, 6.07938e-08, 0.991077) -bones/32/rotation = Quaternion(0.407167, -0.125702, 0.26394, 0.865303) -bones/32/scale = Vector3(0.93705, 1.02226, 1.13088) -bones/33/position = Vector3(0.1184, 0.98706, 0.135816) -bones/33/rotation = Quaternion(-1.20165e-14, 0.585119, 0.810947, -1.98123e-14) -bones/34/position = Vector3(-0.1184, 0.98706, 0.135816) -bones/34/rotation = Quaternion(-1.20165e-14, 0.585119, 0.810947, -1.98123e-14) +bones/21/position = Vector3(0.0507796, 1.03035, 0.290438) +bones/21/rotation = Quaternion(-0.465504, -0.265959, -0.419188, 0.732703) +bones/22/position = Vector3(0.242455, 1.0509, 0.195018) +bones/22/rotation = Quaternion(-0.264669, 0.127782, -0.896474, 0.331597) +bones/22/scale = Vector3(1.05524, 0.898081, 1.05524) +bones/23/rotation = Quaternion(1.23256e-08, 0.0876664, -2.45108e-07, 0.99615) +bones/24/rotation = Quaternion(0.390563, 0.143897, -0.285578, 0.863249) +bones/24/scale = Vector3(0.975276, 0.992451, 1.04903) +bones/25/rotation = Quaternion(2.03018e-08, -0.0260045, -2.65441e-08, 0.999662) +bones/26/rotation = Quaternion(0.160666, -0.0275016, 0.0671835, 0.984336) +bones/26/scale = Vector3(0.996466, 1.00613, 0.997473) +bones/27/position = Vector3(-0.0507796, 1.03035, 0.290438) +bones/27/rotation = Quaternion(-0.465504, 0.265959, 0.419188, 0.732703) +bones/28/position = Vector3(-0.242455, 1.0509, 0.195018) +bones/28/rotation = Quaternion(-0.414201, -0.356303, 0.713007, 0.439439) +bones/28/scale = Vector3(0.98625, 1.02808, 0.98625) +bones/29/rotation = Quaternion(7.9605e-08, -0.0403399, 1.68415e-08, 0.999186) +bones/30/rotation = Quaternion(0.218167, -0.0853686, 0.239688, 0.94216) +bones/30/scale = Vector3(1.05386, 0.90246, 1.05246) +bones/31/rotation = Quaternion(-4.5188e-08, -0.114649, 1.93981e-07, 0.993406) +bones/32/rotation = Quaternion(0.418821, -0.111317, 0.174124, 0.884239) +bones/32/scale = Vector3(0.96233, 1.00674, 1.0422) +bones/33/position = Vector3(0.1184, 1.01306, 0.153147) +bones/33/rotation = Quaternion(-1.46141e-14, 0.536028, 0.844201, -1.97621e-14) +bones/34/position = Vector3(-0.1184, 1.01306, 0.153147) +bones/34/rotation = Quaternion(-1.46141e-14, 0.536028, 0.844201, -1.97621e-14) [node name="AnimationTree" type="AnimationTree" parent="."] tree_root = SubResource("AnimationNodeBlendTree_8to0y") From 3fbe20a8d9b86a03f012aa72d78768e7c848bf3f Mon Sep 17 00:00:00 2001 From: Solomos Date: Fri, 23 Aug 2024 10:26:54 +0300 Subject: [PATCH 04/11] removed get player id --- addons/netfox.extras/weapon/network-weapon.gd | 14 --- examples/forest-brawl/scenes/brawler.tscn | 110 +++++++++--------- 2 files changed, 55 insertions(+), 69 deletions(-) diff --git a/addons/netfox.extras/weapon/network-weapon.gd b/addons/netfox.extras/weapon/network-weapon.gd index d175121..b7e1bc0 100644 --- a/addons/netfox.extras/weapon/network-weapon.gd +++ b/addons/netfox.extras/weapon/network-weapon.gd @@ -137,20 +137,6 @@ func _generate_id(length: int = 12, charset: String = "abcdefghijklmnopqrstuvwxy result += charset[idx] return result -## @experimental -## Normally, there would be a singleton which stores all players' peer_ids and player_ids, and the local peer id and player_id -## Since there isn't, the player_id is calculated realtime by counting how many brawlers until our own... -func get_player_id() -> int: - var brawlers: Array[Node] = get_tree().get_nodes_in_group("Brawlers") - var picked_brawler_index: int = 0 - for picked_brawler in brawlers: - if (picked_brawler is BrawlerController): - if ((picked_brawler as BrawlerController).player_id == multiplayer.get_unique_id()): - return picked_brawler_index - picked_brawler_index += 1 - - return -1 - @rpc("any_peer", "reliable", "call_remote") func _request_projectile(id: String, tick: int, request_data: Dictionary): var sender = multiplayer.get_remote_sender_id() diff --git a/examples/forest-brawl/scenes/brawler.tscn b/examples/forest-brawl/scenes/brawler.tscn index 4b6dfa5..8fa8e41 100644 --- a/examples/forest-brawl/scenes/brawler.tscn +++ b/examples/forest-brawl/scenes/brawler.tscn @@ -104,71 +104,71 @@ respawn_time = 8.0 transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, -0.5, 0) [node name="Skeleton3D" parent="bomber-guy/rig" index="0"] -bones/0/position = Vector3(3.20916e-15, 0.592859, -0.0935691) +bones/0/position = Vector3(3.20916e-15, 0.564345, -0.0802626) bones/0/rotation = Quaternion(0.255292, -7.97688e-15, 1.00226e-14, 0.966864) -bones/1/rotation = Quaternion(0.0275016, 1.19164e-07, 3.27843e-09, 0.999622) -bones/1/scale = Vector3(1.01976, 0.961623, 1.01976) -bones/2/rotation = Quaternion(0.112333, -8.10552e-12, 2.68551e-08, 0.993671) -bones/2/scale = Vector3(1.04682, 0.910027, 1.05006) -bones/3/rotation = Quaternion(-0.193595, -1.16954e-07, -2.30784e-08, 0.981081) -bones/3/scale = Vector3(0.936742, 1.1132, 0.967987) -bones/4/rotation = Quaternion(0.381777, 1.1018e-07, 4.55113e-08, 0.924255) -bones/4/scale = Vector3(0.91276, 1.20031, 0.91276) -bones/5/rotation = Quaternion(-0.0746553, -9.46896e-08, -1.25372e-08, 0.997209) -bones/5/scale = Vector3(1.0001, 1.00728, 0.99575) -bones/6/rotation = Quaternion(-0.45218, -2.97353e-08, -1.48577e-08, 0.891927) -bones/6/scale = Vector3(1.09547, 1.01376, 0.930999) -bones/7/position = Vector3(-3.6176e-08, 0.592859, -0.0935691) +bones/1/rotation = Quaternion(0.00554604, 1.19207e-07, 6.61126e-10, 0.999985) +bones/1/scale = Vector3(1.01796, 0.965026, 1.01796) +bones/2/rotation = Quaternion(0.0613979, -1.76925e-12, 1.46527e-08, 0.998113) +bones/2/scale = Vector3(1.05093, 0.904654, 1.05186) +bones/3/rotation = Quaternion(-0.153191, -1.17801e-07, -1.82615e-08, 0.988197) +bones/3/scale = Vector3(0.934505, 1.12794, 0.955181) +bones/4/rotation = Quaternion(0.361614, 1.11142e-07, 4.31077e-08, 0.932328) +bones/4/scale = Vector3(0.943733, 1.12283, 0.943733) +bones/5/rotation = Quaternion(-0.0808111, -5.7328e-08, -1.53898e-08, 0.99673) +bones/5/scale = Vector3(1.00007, 1.00512, 0.996411) +bones/6/rotation = Quaternion(-0.39994, -1.09739e-07, -4.78794e-08, 0.916541) +bones/6/scale = Vector3(1.05956, 0.985516, 0.972068) +bones/7/position = Vector3(-3.6176e-08, 0.564345, -0.0802626) bones/7/rotation = Quaternion(-0.135651, -0.571304, -0.59224, 0.551781) -bones/8/position = Vector3(3.6176e-08, 0.592859, -0.0935691) +bones/8/position = Vector3(3.6176e-08, 0.564345, -0.0802626) bones/8/rotation = Quaternion(-0.135651, 0.571304, 0.59224, 0.551781) -bones/9/position = Vector3(0.185305, 0.620896, -0.0381393) -bones/9/rotation = Quaternion(0.912005, -2.48306e-05, -0.000119285, 0.41018) -bones/9/scale = Vector3(1.00568, 0.988743, 1.00568) +bones/9/position = Vector3(0.185305, 0.592382, -0.0248328) +bones/9/rotation = Quaternion(0.891643, -1.66456e-05, -0.000114878, 0.452739) +bones/9/scale = Vector3(1.0078, 0.984584, 1.0078) bones/10/rotation = Quaternion(1.23085e-07, -5.52346e-06, -2.98159e-11, 1) -bones/11/rotation = Quaternion(0.353384, 7.68286e-06, -3.30724e-05, 0.935479) -bones/11/scale = Vector3(1.00108, 0.990562, 1.00858) +bones/11/rotation = Quaternion(0.445553, 3.63516e-06, -3.33166e-05, 0.895256) +bones/11/scale = Vector3(1.00151, 0.982414, 1.01663) bones/12/rotation = Quaternion(-9.67563e-08, 8.29257e-06, -2.16274e-09, 1) -bones/13/rotation = Quaternion(-0.489322, 0.000109022, 2.5154e-05, 0.872103) -bones/13/scale = Vector3(0.993441, 0.998554, 1.00822) +bones/13/rotation = Quaternion(-0.535122, 0.000110158, 1.71806e-05, 0.844775) +bones/13/scale = Vector3(0.990819, 0.995858, 1.0137) bones/14/rotation = Quaternion(5.02433e-08, 0.977548, -0.210714, 2.33145e-07) bones/14/scale = Vector3(0.99948, 1.00078, 0.999746) -bones/15/position = Vector3(-0.185305, 0.620896, -0.0381393) -bones/15/rotation = Quaternion(0.99612, 4.01861e-05, -0.000130867, -0.0880026) -bones/15/scale = Vector3(1.00604, 0.988026, 1.00604) -bones/17/rotation = Quaternion(0.371962, 1.46208e-05, -3.63265e-05, 0.928248) -bones/17/scale = Vector3(1.00115, 0.989241, 1.00988) +bones/15/position = Vector3(-0.185305, 0.592382, -0.0248328) +bones/15/rotation = Quaternion(0.996581, 4.55381e-05, -0.000130205, -0.0826243) +bones/15/scale = Vector3(1.00716, 0.985841, 1.00716) +bones/17/rotation = Quaternion(0.424016, 1.44527e-05, -3.79543e-05, 0.905655) +bones/17/scale = Vector3(1.00138, 0.984866, 1.01419) bones/18/rotation = Quaternion(-4.84353e-08, 4.04099e-06, 1.10813e-08, 1) -bones/19/rotation = Quaternion(-0.86344, 8.51632e-05, 7.92134e-05, 0.504452) -bones/19/scale = Vector3(0.992854, 0.998164, 1.00922) +bones/19/rotation = Quaternion(-0.888135, 8.55944e-05, 7.63393e-05, 0.459583) +bones/19/scale = Vector3(0.991558, 1.00018, 1.00862) bones/20/rotation = Quaternion(1.02643e-08, 0.977516, -0.210861, -2.46051e-07) bones/20/scale = Vector3(1.00003, 0.999961, 1.00001) -bones/21/position = Vector3(0.0507796, 1.03035, 0.290438) -bones/21/rotation = Quaternion(-0.465504, -0.265959, -0.419188, 0.732703) -bones/22/position = Vector3(0.242455, 1.0509, 0.195018) -bones/22/rotation = Quaternion(-0.264669, 0.127782, -0.896474, 0.331597) -bones/22/scale = Vector3(1.05524, 0.898081, 1.05524) -bones/23/rotation = Quaternion(1.23256e-08, 0.0876664, -2.45108e-07, 0.99615) -bones/24/rotation = Quaternion(0.390563, 0.143897, -0.285578, 0.863249) -bones/24/scale = Vector3(0.975276, 0.992451, 1.04903) -bones/25/rotation = Quaternion(2.03018e-08, -0.0260045, -2.65441e-08, 0.999662) -bones/26/rotation = Quaternion(0.160666, -0.0275016, 0.0671835, 0.984336) -bones/26/scale = Vector3(0.996466, 1.00613, 0.997473) -bones/27/position = Vector3(-0.0507796, 1.03035, 0.290438) -bones/27/rotation = Quaternion(-0.465504, 0.265959, 0.419188, 0.732703) -bones/28/position = Vector3(-0.242455, 1.0509, 0.195018) -bones/28/rotation = Quaternion(-0.414201, -0.356303, 0.713007, 0.439439) -bones/28/scale = Vector3(0.98625, 1.02808, 0.98625) -bones/29/rotation = Quaternion(7.9605e-08, -0.0403399, 1.68415e-08, 0.999186) -bones/30/rotation = Quaternion(0.218167, -0.0853686, 0.239688, 0.94216) -bones/30/scale = Vector3(1.05386, 0.90246, 1.05246) -bones/31/rotation = Quaternion(-4.5188e-08, -0.114649, 1.93981e-07, 0.993406) -bones/32/rotation = Quaternion(0.418821, -0.111317, 0.174124, 0.884239) -bones/32/scale = Vector3(0.96233, 1.00674, 1.0422) -bones/33/position = Vector3(0.1184, 1.01306, 0.153147) -bones/33/rotation = Quaternion(-1.46141e-14, 0.536028, 0.844201, -1.97621e-14) -bones/34/position = Vector3(-0.1184, 1.01306, 0.153147) -bones/34/rotation = Quaternion(-1.46141e-14, 0.536028, 0.844201, -1.97621e-14) +bones/21/position = Vector3(0.0507796, 1.02537, 0.279933) +bones/21/rotation = Quaternion(-0.48861, -0.279179, -0.410502, 0.717501) +bones/22/position = Vector3(0.242455, 1.03981, 0.183393) +bones/22/rotation = Quaternion(-0.309552, 0.183926, -0.847827, 0.38928) +bones/22/scale = Vector3(1.10351, 0.821224, 1.10351) +bones/23/rotation = Quaternion(7.62656e-09, 0.0753405, 1.83928e-08, 0.997158) +bones/24/rotation = Quaternion(0.489795, 0.157149, -0.362178, 0.777324) +bones/24/scale = Vector3(0.930604, 0.991784, 1.12157) +bones/25/rotation = Quaternion(2.84627e-08, -0.0268707, -8.92876e-08, 0.999639) +bones/26/rotation = Quaternion(0.108116, -0.0285145, 0.0551622, 0.992197) +bones/26/scale = Vector3(1.02701, 0.95145, 1.02424) +bones/27/position = Vector3(-0.0507796, 1.02537, 0.279933) +bones/27/rotation = Quaternion(-0.48861, 0.279179, 0.410502, 0.717501) +bones/28/position = Vector3(-0.242455, 1.03981, 0.183393) +bones/28/rotation = Quaternion(-0.441368, -0.374735, 0.656881, 0.482987) +bones/28/scale = Vector3(0.977517, 1.04653, 0.977517) +bones/29/rotation = Quaternion(3.64394e-08, -0.0261059, -1.17329e-07, 0.999659) +bones/30/rotation = Quaternion(0.246061, -0.0941126, 0.282867, 0.922271) +bones/30/scale = Vector3(1.10041, 0.829838, 1.09826) +bones/31/rotation = Quaternion(-2.75172e-08, -0.12437, 2.27328e-07, 0.992236) +bones/32/rotation = Quaternion(0.407446, -0.119636, 0.222306, 0.877641) +bones/32/scale = Vector3(0.942804, 1.01712, 1.08527) +bones/33/position = Vector3(0.1184, 0.999387, 0.144015) +bones/33/rotation = Quaternion(-1.3553e-14, 0.56265, 0.826695, -2.07129e-14) +bones/34/position = Vector3(-0.1184, 0.999387, 0.144015) +bones/34/rotation = Quaternion(-1.3553e-14, 0.56265, 0.826695, -2.07129e-14) [node name="AnimationTree" type="AnimationTree" parent="."] tree_root = SubResource("AnimationNodeBlendTree_8to0y") From 4ff2351922dca6626fe4318e78df0f0784ac9fda Mon Sep 17 00:00:00 2001 From: Solomos Date: Fri, 23 Aug 2024 10:30:13 +0300 Subject: [PATCH 05/11] Restored brawler --- examples/forest-brawl/scenes/brawler.tscn | 114 +++++++++++----------- 1 file changed, 57 insertions(+), 57 deletions(-) diff --git a/examples/forest-brawl/scenes/brawler.tscn b/examples/forest-brawl/scenes/brawler.tscn index 8fa8e41..65be7ea 100644 --- a/examples/forest-brawl/scenes/brawler.tscn +++ b/examples/forest-brawl/scenes/brawler.tscn @@ -62,7 +62,7 @@ fadeout_time = 0.2 [sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_ofns8"] [sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_8to0y"] -graph_offset = Vector2(-629.987, -38.9762) +graph_offset = Vector2(-680.797, -57.1155) nodes/Float/node = SubResource("AnimationNodeBlend2_qv2tk") nodes/Float/position = Vector2(-80, 0) "nodes/Float Anim/node" = SubResource("AnimationNodeAnimation_gdp4i") @@ -82,7 +82,7 @@ node_connections = [&"output", 0, &"Throw", &"Float", 0, &"MoveScale", &"Float", [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_qgusj"] radius = 0.25 -height = 1.02102 +height = 1.0 [sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_4cjl8"] properties/0/path = NodePath(".:player_name") @@ -104,71 +104,71 @@ respawn_time = 8.0 transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, -0.5, 0) [node name="Skeleton3D" parent="bomber-guy/rig" index="0"] -bones/0/position = Vector3(3.20916e-15, 0.564345, -0.0802626) +bones/0/position = Vector3(3.20746e-15, 0.583857, -0.0893679) bones/0/rotation = Quaternion(0.255292, -7.97688e-15, 1.00226e-14, 0.966864) -bones/1/rotation = Quaternion(0.00554604, 1.19207e-07, 6.61126e-10, 0.999985) -bones/1/scale = Vector3(1.01796, 0.965026, 1.01796) -bones/2/rotation = Quaternion(0.0613979, -1.76925e-12, 1.46527e-08, 0.998113) -bones/2/scale = Vector3(1.05093, 0.904654, 1.05186) -bones/3/rotation = Quaternion(-0.153191, -1.17801e-07, -1.82615e-08, 0.988197) -bones/3/scale = Vector3(0.934505, 1.12794, 0.955181) -bones/4/rotation = Quaternion(0.361614, 1.11142e-07, 4.31077e-08, 0.932328) -bones/4/scale = Vector3(0.943733, 1.12283, 0.943733) -bones/5/rotation = Quaternion(-0.0808111, -5.7328e-08, -1.53898e-08, 0.99673) -bones/5/scale = Vector3(1.00007, 1.00512, 0.996411) -bones/6/rotation = Quaternion(-0.39994, -1.09739e-07, -4.78794e-08, 0.916541) -bones/6/scale = Vector3(1.05956, 0.985516, 0.972068) -bones/7/position = Vector3(-3.6176e-08, 0.564345, -0.0802626) +bones/1/rotation = Quaternion(0.0205548, 1.19184e-07, 2.45031e-09, 0.999789) +bones/1/scale = Vector3(1.01931, 0.96247, 1.01931) +bones/2/rotation = Quaternion(0.096395, -4.59033e-12, 2.30305e-08, 0.995343) +bones/2/scale = Vector3(1.04897, 0.907002, 1.05131) +bones/3/rotation = Quaternion(-0.181044, -1.17239e-07, -2.15821e-08, 0.983475) +bones/3/scale = Vector3(0.935252, 1.1196, 0.963441) +bones/4/rotation = Quaternion(0.376178, 1.10453e-07, 4.48439e-08, 0.926548) +bones/4/scale = Vector3(0.922825, 1.17435, 0.922825) +bones/5/rotation = Quaternion(-0.0765415, -3.93158e-08, -1.58714e-08, 0.997066) +bones/5/scale = Vector3(1.00009, 1.00661, 0.995893) +bones/6/rotation = Quaternion(-0.43687, -4.72473e-08, -2.26897e-08, 0.899525) +bones/6/scale = Vector3(1.08356, 1.00264, 0.945663) +bones/7/position = Vector3(-3.6176e-08, 0.583857, -0.0893679) bones/7/rotation = Quaternion(-0.135651, -0.571304, -0.59224, 0.551781) -bones/8/position = Vector3(3.6176e-08, 0.564345, -0.0802626) +bones/8/position = Vector3(3.6176e-08, 0.583857, -0.0893679) bones/8/rotation = Quaternion(-0.135651, 0.571304, 0.59224, 0.551781) -bones/9/position = Vector3(0.185305, 0.592382, -0.0248328) -bones/9/rotation = Quaternion(0.891643, -1.66456e-05, -0.000114878, 0.452739) -bones/9/scale = Vector3(1.0078, 0.984584, 1.0078) +bones/9/position = Vector3(0.185305, 0.611893, -0.0339381) +bones/9/rotation = Quaternion(0.905251, -2.21189e-05, -0.000117811, 0.424877) +bones/9/scale = Vector3(1.00629, 0.987535, 1.00629) bones/10/rotation = Quaternion(1.23085e-07, -5.52346e-06, -2.98159e-11, 1) -bones/11/rotation = Quaternion(0.445553, 3.63516e-06, -3.33166e-05, 0.895256) -bones/11/scale = Vector3(1.00151, 0.982414, 1.01663) +bones/11/rotation = Quaternion(0.385459, 6.31284e-06, -3.32111e-05, 0.922725) +bones/11/scale = Vector3(1.0012, 0.988229, 1.01087) bones/12/rotation = Quaternion(-9.67563e-08, 8.29257e-06, -2.16274e-09, 1) -bones/13/rotation = Quaternion(-0.535122, 0.000110158, 1.71806e-05, 0.844775) -bones/13/scale = Vector3(0.990819, 0.995858, 1.0137) +bones/13/rotation = Quaternion(-0.505198, 0.000109451, 2.25149e-05, 0.863003) +bones/13/scale = Vector3(0.992628, 0.997842, 1.00979) bones/14/rotation = Quaternion(5.02433e-08, 0.977548, -0.210714, 2.33145e-07) bones/14/scale = Vector3(0.99948, 1.00078, 0.999746) -bones/15/position = Vector3(-0.185305, 0.592382, -0.0248328) -bones/15/rotation = Quaternion(0.996581, 4.55381e-05, -0.000130205, -0.0826243) -bones/15/scale = Vector3(1.00716, 0.985841, 1.00716) -bones/17/rotation = Quaternion(0.424016, 1.44527e-05, -3.79543e-05, 0.905655) -bones/17/scale = Vector3(1.00138, 0.984866, 1.01419) +bones/15/position = Vector3(-0.185305, 0.611893, -0.0339381) +bones/15/rotation = Quaternion(0.99633, 4.19078e-05, -0.000130651, -0.08559) +bones/15/scale = Vector3(1.00638, 0.987357, 1.00638) +bones/17/rotation = Quaternion(0.389683, 1.45563e-05, -3.68506e-05, 0.920949) +bones/17/scale = Vector3(1.00122, 0.987896, 1.0112) bones/18/rotation = Quaternion(-4.84353e-08, 4.04099e-06, 1.10813e-08, 1) -bones/19/rotation = Quaternion(-0.888135, 8.55944e-05, 7.63393e-05, 0.459583) -bones/19/scale = Vector3(0.991558, 1.00018, 1.00862) +bones/19/rotation = Quaternion(-0.871762, 8.53352e-05, 7.82363e-05, 0.48993) +bones/19/scale = Vector3(0.992445, 0.99873, 1.0091) bones/20/rotation = Quaternion(1.02643e-08, 0.977516, -0.210861, -2.46051e-07) bones/20/scale = Vector3(1.00003, 0.999961, 1.00001) -bones/21/position = Vector3(0.0507796, 1.02537, 0.279933) -bones/21/rotation = Quaternion(-0.48861, -0.279179, -0.410502, 0.717501) -bones/22/position = Vector3(0.242455, 1.03981, 0.183393) -bones/22/rotation = Quaternion(-0.309552, 0.183926, -0.847827, 0.38928) -bones/22/scale = Vector3(1.10351, 0.821224, 1.10351) -bones/23/rotation = Quaternion(7.62656e-09, 0.0753405, 1.83928e-08, 0.997158) -bones/24/rotation = Quaternion(0.489795, 0.157149, -0.362178, 0.777324) -bones/24/scale = Vector3(0.930604, 0.991784, 1.12157) -bones/25/rotation = Quaternion(2.84627e-08, -0.0268707, -8.92876e-08, 0.999639) -bones/26/rotation = Quaternion(0.108116, -0.0285145, 0.0551622, 0.992197) -bones/26/scale = Vector3(1.02701, 0.95145, 1.02424) -bones/27/position = Vector3(-0.0507796, 1.02537, 0.279933) -bones/27/rotation = Quaternion(-0.48861, 0.279179, 0.410502, 0.717501) -bones/28/position = Vector3(-0.242455, 1.03981, 0.183393) -bones/28/rotation = Quaternion(-0.441368, -0.374735, 0.656881, 0.482987) -bones/28/scale = Vector3(0.977517, 1.04653, 0.977517) -bones/29/rotation = Quaternion(3.64394e-08, -0.0261059, -1.17329e-07, 0.999659) -bones/30/rotation = Quaternion(0.246061, -0.0941126, 0.282867, 0.922271) -bones/30/scale = Vector3(1.10041, 0.829838, 1.09826) -bones/31/rotation = Quaternion(-2.75172e-08, -0.12437, 2.27328e-07, 0.992236) -bones/32/rotation = Quaternion(0.407446, -0.119636, 0.222306, 0.877641) -bones/32/scale = Vector3(0.942804, 1.01712, 1.08527) -bones/33/position = Vector3(0.1184, 0.999387, 0.144015) -bones/33/rotation = Quaternion(-1.3553e-14, 0.56265, 0.826695, -2.07129e-14) -bones/34/position = Vector3(-0.1184, 0.999387, 0.144015) -bones/34/rotation = Quaternion(-1.3553e-14, 0.56265, 0.826695, -2.07129e-14) +bones/21/position = Vector3(0.0507796, 1.02886, 0.287226) +bones/21/rotation = Quaternion(-0.472842, -0.270157, -0.416495, 0.727989) +bones/22/position = Vector3(0.242455, 1.04749, 0.191412) +bones/22/rotation = Quaternion(-0.280276, 0.143785, -0.88237, 0.349562) +bones/22/scale = Vector3(1.07211, 0.87008, 1.07211) +bones/23/rotation = Quaternion(3.18531e-08, 0.0853649, 8.32473e-08, 0.99635) +bones/24/rotation = Quaternion(0.421944, 0.147999, -0.308633, 0.839527) +bones/24/scale = Vector3(0.960023, 0.997541, 1.06918) +bones/25/rotation = Quaternion(2.97979e-08, -0.026165, -1.54692e-07, 0.999658) +bones/26/rotation = Quaternion(0.143976, -0.0275267, 0.0637975, 0.987139) +bones/26/scale = Vector3(1.00575, 0.989855, 1.00455) +bones/27/position = Vector3(-0.0507796, 1.02886, 0.287226) +bones/27/rotation = Quaternion(-0.472842, 0.270157, 0.416495, 0.727989) +bones/28/position = Vector3(-0.242455, 1.04749, 0.191412) +bones/28/rotation = Quaternion(-0.425562, -0.363618, 0.693798, 0.453127) +bones/28/scale = Vector3(0.983063, 1.03476, 0.983063) +bones/29/rotation = Quaternion(3.98409e-08, -0.0370571, -2.15209e-07, 0.999313) +bones/30/rotation = Quaternion(0.232389, -0.0893491, 0.253375, 0.93478) +bones/30/scale = Vector3(1.06864, 0.878868, 1.06637) +bones/31/rotation = Quaternion(-3.48398e-08, -0.117463, 1.57868e-07, 0.993077) +bones/32/rotation = Quaternion(0.41303, -0.11386, 0.189505, 0.883476) +bones/32/scale = Vector3(0.954337, 1.01045, 1.05417) +bones/33/position = Vector3(0.1184, 1.00881, 0.15031) +bones/33/rotation = Quaternion(-1.44276e-14, 0.544482, 0.838773, -2.01673e-14) +bones/34/position = Vector3(-0.1184, 1.00881, 0.15031) +bones/34/rotation = Quaternion(-1.44276e-14, 0.544482, 0.838773, -2.01673e-14) [node name="AnimationTree" type="AnimationTree" parent="."] tree_root = SubResource("AnimationNodeBlendTree_8to0y") From bed38a57250d4e941b150941bacf1f0bb75fd345 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tam=C3=A1s=20G=C3=A1lffy?= Date: Mon, 26 Aug 2024 20:39:16 +0200 Subject: [PATCH 06/11] version bump --- addons/netfox.extras/plugin.cfg | 2 +- addons/netfox.internals/plugin.cfg | 2 +- addons/netfox.noray/plugin.cfg | 2 +- addons/netfox/plugin.cfg | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/netfox.extras/plugin.cfg b/addons/netfox.extras/plugin.cfg index fe401cf..fb7015e 100644 --- a/addons/netfox.extras/plugin.cfg +++ b/addons/netfox.extras/plugin.cfg @@ -3,5 +3,5 @@ name="netfox.extras" description="Game-specific utilities for Netfox" author="Tamas Galffy" -version="1.8.0" +version="1.8.1" script="netfox-extras.gd" diff --git a/addons/netfox.internals/plugin.cfg b/addons/netfox.internals/plugin.cfg index 3cbcba1..e9e57d6 100644 --- a/addons/netfox.internals/plugin.cfg +++ b/addons/netfox.internals/plugin.cfg @@ -3,5 +3,5 @@ name="netfox.internals" description="Shared internals for netfox addons" author="Tamas Galffy" -version="1.8.0" +version="1.8.1" script="plugin.gd" diff --git a/addons/netfox.noray/plugin.cfg b/addons/netfox.noray/plugin.cfg index aa39409..11d3689 100644 --- a/addons/netfox.noray/plugin.cfg +++ b/addons/netfox.noray/plugin.cfg @@ -3,5 +3,5 @@ name="netfox.noray" description="Bulletproof your connectivity with noray integration for netfox" author="Tamas Galffy" -version="1.8.0" +version="1.8.1" script="netfox-noray.gd" diff --git a/addons/netfox/plugin.cfg b/addons/netfox/plugin.cfg index 1d34259..c1f0367 100644 --- a/addons/netfox/plugin.cfg +++ b/addons/netfox/plugin.cfg @@ -3,5 +3,5 @@ name="netfox" description="Shared internals for netfox addons" author="Tamas Galffy" -version="1.8.0" +version="1.8.1" script="netfox.gd" From 6c8404585e99f379ce44abee8f5da4b99d890f86 Mon Sep 17 00:00:00 2001 From: Solomos Date: Sun, 22 Sep 2024 23:56:27 +0300 Subject: [PATCH 07/11] Added boolean for spawning host exclusively --- examples/forest-brawl/scripts/brawler-spawner.gd | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/examples/forest-brawl/scripts/brawler-spawner.gd b/examples/forest-brawl/scripts/brawler-spawner.gd index 154fc62..b423c80 100644 --- a/examples/forest-brawl/scripts/brawler-spawner.gd +++ b/examples/forest-brawl/scripts/brawler-spawner.gd @@ -5,6 +5,7 @@ extends Node @export var camera: FollowingCamera @export var joining_screen: Control @export var name_input: LineEdit +@export var spawn_host: bool = true var avatars: Dictionary = {} @@ -28,8 +29,9 @@ func _handle_connected(id: int): joining_screen.visible = false func _handle_host(): - # Spawn own avatar on host machine - _spawn(1) + if (spawn_host): + # Spawn own avatar on host machine + _spawn(1) func _handle_new_peer(id: int): # Spawn an avatar for new player From 5d23d6b83e42984c976de2a85af4dc7ece8a4cb4 Mon Sep 17 00:00:00 2001 From: TheYellowArchitect Date: Sat, 5 Oct 2024 01:09:13 +0300 Subject: [PATCH 08/11] Update plugin.cfg reverted 1 version bump --- addons/netfox/plugin.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/netfox/plugin.cfg b/addons/netfox/plugin.cfg index 9c1c5e0..2107fd8 100644 --- a/addons/netfox/plugin.cfg +++ b/addons/netfox/plugin.cfg @@ -3,5 +3,5 @@ name="netfox" description="Shared internals for netfox addons" author="Tamas Galffy" -version="1.8.4" +version="1.8.3" script="netfox.gd" From 69e963bd10276bdb7467ae100861ee47f652afb0 Mon Sep 17 00:00:00 2001 From: TheYellowArchitect Date: Sat, 5 Oct 2024 01:09:29 +0300 Subject: [PATCH 09/11] Update plugin.cfg reverted 1 version bump --- addons/netfox.noray/plugin.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/netfox.noray/plugin.cfg b/addons/netfox.noray/plugin.cfg index 72369f7..6a12a3c 100644 --- a/addons/netfox.noray/plugin.cfg +++ b/addons/netfox.noray/plugin.cfg @@ -3,5 +3,5 @@ name="netfox.noray" description="Bulletproof your connectivity with noray integration for netfox" author="Tamas Galffy" -version="1.8.4" +version="1.8.3" script="netfox-noray.gd" From f3f75ccc35e4099c1f2af7e80deab3209c6602bb Mon Sep 17 00:00:00 2001 From: TheYellowArchitect Date: Sat, 5 Oct 2024 01:09:44 +0300 Subject: [PATCH 10/11] Update plugin.cfg --- addons/netfox.internals/plugin.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/netfox.internals/plugin.cfg b/addons/netfox.internals/plugin.cfg index 04a5888..f450722 100644 --- a/addons/netfox.internals/plugin.cfg +++ b/addons/netfox.internals/plugin.cfg @@ -3,5 +3,5 @@ name="netfox.internals" description="Shared internals for netfox addons" author="Tamas Galffy" -version="1.8.4" +version="1.8.3" script="plugin.gd" From 70ae4da675842f16d70817618d899d7d9cc3bac9 Mon Sep 17 00:00:00 2001 From: TheYellowArchitect Date: Sat, 5 Oct 2024 01:09:59 +0300 Subject: [PATCH 11/11] Update plugin.cfg reverted 1 version bump --- addons/netfox.extras/plugin.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/netfox.extras/plugin.cfg b/addons/netfox.extras/plugin.cfg index 1c1fe3d..5368f81 100644 --- a/addons/netfox.extras/plugin.cfg +++ b/addons/netfox.extras/plugin.cfg @@ -3,5 +3,5 @@ name="netfox.extras" description="Game-specific utilities for Netfox" author="Tamas Galffy" -version="1.8.4" +version="1.8.3" script="netfox-extras.gd"