#Can't get host to move on multiplayer

12 messages · Page 1 of 1 (latest)

dense hazel
#

Hi there, I am unable to get the host player to move/sync once I spawn the host player.

This is my multiplayer script:

extends Control


var player_tscn := preload("res://scenes/entities/player.tscn")
var peer := ENetMultiplayerPeer.new()
const port := 2000
const address := "127.0.0.1"


signal player_connected(player_tscn)
signal player_disconnected(id)


func _ready():
    multiplayer.peer_connected.connect(on_peer_connected)
    multiplayer.peer_disconnected.connect(on_peer_disconnected)
    multiplayer.connected_to_server.connect(on_connected_to_server)
    multiplayer.connection_failed.connect(on_connection_failed)
    multiplayer.server_disconnected.connect(on_server_disconnected)


#server
func on_peer_connected(id):
    create_player(id)


#server
func on_peer_disconnected(id):
    remove_player(id)


#client
func on_connected_to_server():
    pass


#client
func on_connection_failed():
    pass


#client
func on_server_disconnected():
    pass


#server
func _on_host_pressed():
    self.visible = false
    peer.create_server(port)
    multiplayer.multiplayer_peer = self.peer
    create_player()


#client
func _on_join_pressed():
    self.visible = false
    peer.create_client(address, port)
    multiplayer.multiplayer_peer = self.peer


func create_player(id = 1):
    var player = player_tscn.instantiate()
    player.name = str(id)
    player_connected.emit(player)


func remove_player(id):
    player_disconnected.emit(id)

The error in the video is:

E 0:00:15:0314   on_spawn_receive: Condition "parent->has_node(name)" is true. Returning: ERR_INVALID_DATA
  <C++ Source>   modules/multiplayer/scene_replication_interface.cpp:602 @ on_spawn_receive()

Going to post a video below, sec

glass lantern
#

I think there may be a bug with the synchronizer. I'm not sure, though.

dense hazel
dense hazel
# glass lantern correct

ok so i simply did:

func _process(delta):
    if is_multiplayer_authority():
        var direction = Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down")
        self.position += direction * speed * delta
        rpc("update_player_position", self.global_position)


@rpc
func update_player_position(authority_position):
    global_position = authority_position

and removed the synchronizer however now there is another weird thing going on, the host is moving correctly and it works across all clients + host however non hosts can see a ghost host?

#

so only the host cant see itself

#

it also does not move

#

its static when the host moves around

#

also when i do

#server
func _on_host_pressed():
    self.visible = false
    peer.create_server(port)
    multiplayer.multiplayer_peer = self.peer
    #create_player()

(comment out create_player() in order to make the server not be a player it still spawns a player