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

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

11

23.06.2017, 17:40

Wenn ich das gemeint hätte, dann hätte ich es auch so geschrieben.

Nachtrag: Auch Flash kann kein UDP. Wenn also das Spiel, das hier als "Vorbild" genannt wurde, erträglich spielbar ist, dann sollte man Ähnliches auch mit JavaScript hinkriegen.

Azasel

unregistriert

12

23.06.2017, 19:42

Trotzdem klingt die Antwort für mich wie: "Vergiss es, geht nicht". Und es kommt mir ebenfalls so vor, als habe Azasel genau dasselbe verstanden.

Das war mein erster Gedanke ja, aber nach längerer Überlegung kam ich dann auf dem Entschluss, es trotzdem mit TCP zu versuchen, auch wenn es dann Probleme geben wird (, falls ich das irgendwann mal vorhabe).

Nachtrag: Auch Flash kann kein UDP. Wenn also das Spiel, das hier als "Vorbild" genannt wurde, erträglich spielbar ist, dann sollte man Ähnliches auch mit JavaScript hinkriegen.

Gut zu wissen, dann reiht mir das als Bestätigung, vielen Dank nochmal.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Azasel« (23.06.2017, 20:52)


13

17.09.2017, 20:41

Der Client läuft mit JavaScript (da gibt's eigentlich keine Alternative, wenn es im Browser laufen soll), und das kann halt kein UDP, wodurch es bei Echtzeit-Spielen zu Problemen mit der Netzwerkkommunikation kommen könnte.

Die neusten Browserversionen haben doch WebRTC (http://caniuse.com/#feat=rtcpeerconnection) - und das ist ein User-Datagram-Procotol [UDP] (https://w3c.github.io/webrtc-pc/), das man durchaus auch für Multiplayer-Games verwenden kann.

WebRTC: the future of web games
https://www.html5rocks.com/en/tutorials/webrtc/datachannels/

Nachtrag: Auch Flash kann kein UDP.

Flash kann schon seit Version 10.1 UDP-Verbindungen übers Real-Time Media Flow Protocol (RTMFP).

Adobe RTMFP FAQ
"RTMFP is based on UDP [...] RTMFP can help reduce the bandwidth costs for direct, live, real-time communication solutions, such as audio and video chat and multiplayer games."


Ich frage mich schon seit einiger Zeit folgendes:
Ist ein Multiplayer 2d Jump&Run Browsergame mit Javascript realisierbar.

Kommt immer auf die Anzahl der Spieler an, wie synchron das ganze laufen soll und auch wie hektisch das Spiel ist. Du könntest es durchaus auch mit TCP und einem Lockstep-Protocol versuchen. Grob gesagt sendet man beim Lockstep-Protocol nur Tastatur-Commandos an einen GameServer - und der sammelt die Tastatur-Commands aller Spieler und verteilt sie mit zwei GameTicks Verzögerung zeitgleich an die Spieler, damit jeder exakt das gleiche sieht. Die empfangenen Tastatureingaben werden dann auf den User-Clients auf die diversen Spielfiguren angewandt - gleiche Berechnungen führen dann zu gleichen Animationen. Dadurch ist gewährleistet, dass alle zeitgleich das gleiche sehen. Lockstep hat man auch schon in älteren Games wie Doom, Age Of Empires oder FIFA eingesetzt - und viel weiter sind Browser technisch gesehen ja auch nicht. So kramt man heutzutage eben die alten Techniken für Browsergames wieder aus, was aber nicht heißt, dass das in heutigen Games überhaupt nicht mehr verwendet wird. Das gibts durchaus noch.

Interessante Artikel dazu:
Deterministic Lockstep - Keeping simulations in sync by sending only inputs[/
1500 Archers on a 28.8: Network Programming in Age of Empires and Beyond

Aber bei einem Multiplayer-Jump&Run müsste man wohl noch ein bisschen tricksen und die Grafiken leicht interpolieren, damits wirklich flüssig aussieht. Evtl könnte man auch auf eine Snapshot Interpolation setzen. Hängt aber wie gesagt stark vom Spiel ab, welchen Weg man geht. Das eine, das andere, was ganz anderes, oder irgendeinen Mix davon. Bei Multiplayer-Games wirds halt immer kompliziert, wenn die Latenz nicht passt. Und da kommts immer auf den schwächsten Spieler an. Da muss man halt viel rumexperimentieren, was sich am besten eignet. Normale TCP-Websockets halte ich für so ein Game aber für ausreichend.

Werbeanzeige