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

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

21

24.06.2016, 10:30

Mal davon abgesehen. Dass ein Item aufgenommen werden soll und das Inventar voll ist wird nichts sein was durchgängig passiert. Ich vermute auch einfach mal frei heraus dass dabei keine riesigen Datenmengen gesendet werden. Falls das der Fall wäre könnte man ja zuerst hier optimieren. Ansonsten würde es sich vermutlich gar nicht lohnen groß an dieser Stelle zu optimieren. Wie BlueCobold sagt kann es hier zu hässlichen Fehlern kommen um die man sich gesondert kümmern muss und die Optimierung die ich damit vornehme hat im Endeffekt einen viel zu kleinen Stellenwert. Der Rest der Kommunikation wird da vermutlich viel viel mehr Arbeit bereiten. Ansonsten würde ich da den Netzwerkverkehr vielleicht erst mal tracken und gucken was sich lohnt einzuschränken.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

22

24.06.2016, 10:31

Angenommen ich lasse die Variablen komplett vom Server syncen(d.h. der Server erkennt einen desync der Werte) würden wir hier nur von GUI-Fehlern sprechen(die ja in der Regel clientseitig bleiben). Schließlich nimmt der Client zum Check auch die Variablen, die der Server ihm gibt. Der Client hat ja gar keine Authorität mehr, diese Werte selber zu ändern.

Aber da hab ich halt auch keine MMORPG-Erfahrung. Meine Netzwerkspiele sind ne Nummer kleiner. :D Von daher denke ich mal, dass OP sich eher an eure Erfahrungen halten sollte.
WIP Website: kevinheese.de

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »KeksX« (24.06.2016, 10:36)


Superwayne

Treue Seele

  • »Superwayne« ist der Autor dieses Themas

Beiträge: 242

Beruf: Student & App Entwickler (Xamarin)

  • Private Nachricht senden

23

24.06.2016, 11:18

Der Client darf lediglich einen Request an den Server senden, diese auszuführen. Der Client reagiert dann letztendlich nur auf die Aufnahme des Items.

Genau das passiert eben zurzeit nicht. Der Client schickt keinen Request an den Server. Der Server bekommt lediglich die Spielerposition (die braucht er sowieso) und wenn der Server erkennt, dass der Spieler in der Nähe eines Items steht, schickt er eine entsprechende Nachricht an den Client. Die Kommunikation Client->Server->Client habe ich also nicht, sondern ein einfaches Server->Client.


Mal davon abgesehen. Dass ein Item aufgenommen werden soll und das Inventar voll ist wird nichts sein was durchgängig passiert.

Das ist richtig. Ich möchte nur vermeiden, dass sich hier ein potenzieller Bug einschleicht, der später sehr schwer zu erkennen und zu beheben wird.

BTW: Ich plane auch kein MMORPG, sondern ein Spiel, dass man auch mal mit ein paar wenigen Freunden spielen kann. Die genaue Anzahl hängt einfach davon ab, wieviel Leistung das den Host später kostet.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

24

24.06.2016, 12:47

Das ist richtig. Ich möchte nur vermeiden, dass sich hier ein potenzieller Bug einschleicht, der später sehr schwer zu erkennen und zu beheben wird.

BTW: Ich plane auch kein MMORPG, sondern ein Spiel, dass man auch mal mit ein paar wenigen Freunden spielen kann. Die genaue Anzahl hängt einfach davon ab, wieviel Leistung das den Host später kostet.

Mir ging es dabei um die ganzen Optimierungen die vorgeschlagen wurden. Wie schon gesagt, der Client möchte ein Item aufnehmen. Er fragt den Server ob er das darf, dieser Wertet aus und gibt dem Client die Antwort. Wurde ja schon mehrfach so erklärt und ist für den Anfang ein einfacher Weg welcher wenig Fehlerpotential hat.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

25

24.06.2016, 15:35

Klang in der letzten Antwort eher so, als würde der Client gar nicht fragen. Der Server erkennt, dass der Spieler nahe dran ist, prüft auf Platz im Inventory und macht gegebenenfalls ein automatisches Pickup. Dazu braucht er den Client ja gar nicht, außer um ihm das Ergebnis mitzuteilen ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Superwayne

Treue Seele

  • »Superwayne« ist der Autor dieses Themas

Beiträge: 242

Beruf: Student & App Entwickler (Xamarin)

  • Private Nachricht senden

26

24.06.2016, 16:06

Klang in der letzten Antwort eher so, als würde der Client gar nicht fragen. Der Server erkennt, dass der Spieler nahe dran ist, prüft auf Platz im Inventory und macht gegebenenfalls ein automatisches Pickup. Dazu braucht er den Client ja gar nicht, außer um ihm das Ergebnis mitzuteilen ;)

Genau. Da spare ich mir einmal die Übertragungszeit.

Werbeanzeige