Attention | Topic was automatically imported from the old Question2Answer platform. | |
Asked By | mdswamp |
Hi…
I have a 2D fighting game which i want players can fight each other from net (player vs player)
i read some high level networking tutorials/samples for that. this is my lobby code. there are two main problems (for now)
1- the one which is server move properly, but the client one does not move at all.
2- game pause does not work for synchronising the two screen.
Lobby Code:
extends Control
func _ready():
get_tree().connect("network_peer_connected", self, "_player_connected")
name_holder.text = global.Name
func _on_PlayerName_text_changed(new_text):
name_holder.text = new_text
global.Name = name_holder.text
func _on_PvPButton_pressed():
print("Hosting network")
global.client = false
var host = NetworkedMultiplayerENet.new()
var res = host.create_server(4242, 2)
if res != OK:
print("Error creating server")
global.client = true
host.create_client("127.0.0.1",4242)
get_tree().set_network_peer(host)
else:
global.client = false
get_tree().set_network_peer(host)
func _player_connected(id):
print("Player connected to server!")
global.connected_player = id
pre_start_game()
func pre_start_game():
var ring = load("res://scenes/Modes/Default/PvP-Default.tscn").instance()
var player1 = ring.get_node("Player01")
var player2 = ring.get_node("Player02")
if global.client == false:
player1.set_name(str(get_tree().get_network_unique_id()))
player1.set_network_master(get_tree().get_network_unique_id())
player2.set_name(str(global.connected_player))
player2.set_network_master(global.connected_player)
else:
player2.set_name(str(get_tree().get_network_unique_id()))
player2.set_network_master(get_tree().get_network_unique_id())
player1.set_name(str(global.connected_player))
player1.set_network_master(global.connected_player)
post_start_game()
remote func post_start_game():
get_tree().change_scene("res://scenes/Modes/Default/PvP-Default.tscn")
codes which i use in both player01 and player02 scripts:
func _physics_process(delta):
if is_network_master():
rpc_unreliable("setPosition",Vector2(position.x - velocity.x, position.y - velocity.y))
slave func setPosition(pos):
position = pos
P.S1: i removed “get_tree().set_pause(false)” from lobby codes, because it freeze everything (idk how to use it in networking for synchronising)
P.S2: Im using one button for being host and join the server, so I mix host and join codes together (func _on_PvPButton_pressed). beside i use 2 kinematic characters (player01 and player02), server is player01 and client is player02