Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

16.06.2020, 18:44

Online Multiplayer Game

Hallo liebe Programmierer :)

Nach langer Zeit melde ich mich mal wieder hier in diesem Forum und habe auch gleich eine Frage die mich zurzeit sehr beschäftigt.

Ich arbeite nun seit einiger Zeit mit Unity und habe auch bereits ein Jumpn Run Game erstellt,
bei dem ein Spieler sich in der Welt bewegen kann, Bonis zerstören und den darin befindlichen Inhalt einsammeln kann und sogar Inventar öffnen und Waffen verwenden kann. Nun wollte ich anfangen, die Multiplayer basierenden Eigenschaften mit einzubauen, sprich,
wenn ich Beispielsweise mit einer der "Geschossen" einen anderen Spieler treffe, dann soll dieser Schaden erleiden.

Also habe ich den Spieler dupliziert und habe es versucht, aber das resultierte damit, das die Input Eingabe für beide Spieler synchron ist.

Jetzt habe ich mir überlegt, ob es evtl. daran liegen könnte, dass ich den Spieler mit seinem "Tag" suche und nicht das Objekt selbst?
Hat jemand Erfahrung damit bzw. kennt sich jemand von euch mit Unity und Multiplayer Games aus?
Würde mich über jede Hilfe freuen :)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

16.06.2020, 20:31

Jedes Spieler-Objekt muss sich irgendwie von den anderen unterscheiden, denn sonst können sie nicht wissen, auf welche Eingaben sie reagieren sollen. Ein ganz einfacher Ansatz wäre im Spieler-Objekt zu speichern, mit welchen Tasten er gesteuert wird.

PS: Deine Frage hat nichts mit Online-Multiplayer zu tun, oder?

3

16.06.2020, 20:54

Danke für die Antwort :)

Ja genau ich rede von einem Online Multiplayer. Noch ist mein Spiel nicht online aber ich möchte jetzt schonmal die Funktionen usw. errichten, um daraus ein Online Game zu machen.

Also lag ich mit meiner Vermutung, dass ich die Spieler mit ihren "Namen" und nicht mit ihrem "Tag" ansprechen soll richtig?

Weil zurzeit erstelle ich Prefabs und suche nach den Instanzen mit via "Tag".
z.B GameObject.FindWithTag("Player"); <- ich schätze mal da liegt auch der Fehler, denn wenn ich 2 Instanzen des Spielers in der Scene habe, und mich z.B mit dem Spieler nach links bewege, dann bewegen sich beide Spieler Instanzen.

Jetzt ist meine Frage halt ob das so normal ist und ob es sich später im Online Modus ändert oder ob ich die Instanzen per "Namen" ansprechen soll also mit dem Aufruf GameObject.Find("Spieler(Clone)"); ?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

16.06.2020, 21:29

Wieso suchst du überhaupt den Spieler? Die Steuerung sollte in einem Skript passieren, das du an das Spieler-Objekt anhängst.
Tipp von mir: Lass erstmal die Finger weg von Online-Multiplayer. Das ist ein extrem kompliziertes Thema und selbst für alte Hasen eine echte Herausforderung.

5

16.06.2020, 21:37

Die Steuerung selbst ist durch ein Script an das Objekt gebunden. Nur wenn ich 2 dieser Objekte rufe, dann weiß ich nicht wie ich es so machen kann, dass ich mit der Steuerung also mit dem Input nur einen einzigen Spieler davon bewegen kann. Wenn du möchtest schicke ich gerne mal den Code der Steuerung rein ^^

Und ja das Thema ist wirklich kompliziert aber ich möchte unbedingt mehr darüber wissen bzw. lernen wie man so ein Multiplayer Game erstellen kann. Aufgeben war noch nie meine Stärke :)

Das Einzige womit ich mich noch wirklich gar nicht auskenne ist, die Verarbeitung zwischen Server und Client oder kurz gesagt wie Online Games funktionieren. Kannst du mir evtl. Bücher empfehlen oder eine Quelle von wo ich meine Infos herbekomme, bzw wo man das am besten lernen kann?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

16.06.2020, 21:46

Wie gesagt: In deinem Skript kannst du in Variablen speichern, mit welchen Tasten der Spieler bewegt werden soll. Dann prüfst du, ob diese Tasten gedrückt sind, und wenn ja, bewegst du den Spieler entsprechend. Dem einen Spieler gibst du dann meinetwegen die Pfeiltasten und dem anderen W, A, S, D.
Nein, mit Büchern/Quellen kann ich dir leider nicht dienen. Unity sollte aber schon entsprechende Tutorials haben.

7

19.06.2020, 12:56

Habe geschafft was ich wollte :)
So sieht das bisherige Ergebnis aus:
https://www.youtube.com/watch?v=GP9NaAOB4kk&t=2s

Noch sind einige kleine Fehler mit dabei. Hier und da noch kleine Bugs die ich entfernen muss aber mit der Zeit kriege ich auch das hin ^^

Falls jemand Interesse haben sollte mitzuwirken bzw. mich zu unterstützen, jede Hilfe ist willkommen :)

Falls jemand die selbe Fragen haben sollte wie ich, könnt ihr mich gerne privat anschreiben denn ich habe mehr oder weniger jetzt verstanden wie das ganze funktioniert ^^

Werbeanzeige