Hallo Zusammen,
ich habe mir ein Simples Network und Server System gebaut alles kein Thema aber wie kann ich dem Unser den Spielernamen zuweisen ? Ich habe es versucht via String / Text aber nichts wird angenommen.
Habt ihr da eine Idee ?
Hallo Zusammen,
ich habe mir ein Simples Network und Server System gebaut alles kein Thema aber wie kann ich dem Unser den Spielernamen zuweisen ? Ich habe es versucht via String / Text aber nichts wird angenommen.
Habt ihr da eine Idee ?
Versuche es mal mit der GameInstance deines Projektes.
Habe ich schon versucht selbst über den weg über nen Set InGame alles wird nicht übernommen sondern knallt ins leere. Meine Idee war dann
[Blockierte Grafik: http://playlost.de/idee.png]
Ich meinte circa so:
Weil die GameInstance ist persistent. Natürlich musst du den Namen dann auch wieder aus der Instance laden.
Bei Blueprints kann ich leider nur bedingt Auskunft geben. Mein Ansatz wäre folgender:
Der Client kann in seinen Optionen einen Namen setzen, der in seiner GameInstance gespeichert wird. Wenn er sich nun zu einem Server verbindet teilt er ihm nach dem Verbinden über ein "Server Event" (Event, dass auf dem Server ausgeführt wird) seinen Namen mit. Der Server speichert diesen Namen in dem zugehörigen PlayerState Objekt des Spielers, damit der Name auch zu allen anderen Spielern repliziert werden kann. (Voraussetzung dabei ist, dass die GameInstance eines Clients beim Verbinden zu einem Server nicht zurückgesetzt wird)
Um das ganze in C++ zu machen gehst du folgendermaßen vor:
Verbinde zu dem Server mit einer URL: "127.0.0.1:7777?PlayerName=<name>"
1) Erzeuge eine Klasse für deinen eigenen GameMode
2) Überschreibe die Methode "InitNewPlayer"
3) Diese Methode erhält die Verbindungsparameter als String "Options"
4) Lies den Namen des Clients folgendermaßen aus:
5) Speichere den Namen im PlayerState Objekt des Spielers und repliziere diese Eigenschaft zu allen Clients.
Wenn du das in Blueprints auf dem selben Weg schaffst wäre das zu bevorzugen.
Siehe:
Dokumentation - APlayerController::ClientTravel
Dokumentation - AGameMode::InitNewPlayer
Wiki - Passing arguments to server during connection
EDIT:
Beachte auch, dass es bereits eine Eigenschaft "PlayerName" in dem PlayerState Objekt gibt. Unter Umständen reicht dir dieser Name aus. Bei Steam oder anderen OnlineSubSystemen entspricht der Name üblicherweise dem Anzeigenamen (dein Steam Name). Wenn du ohne Steam o.Ä. spielst wird aktuell der Hostname deines PCs mit einer zufällig generierten ID am Ende verwendet.
Ahh Super viele dank das hat gefunzt