Jump to content
Unity Insider Forum

MaZy's Blog

  • Einträge
    14
  • Kommentare
    32
  • Aufrufe
    46.288

Auto-Matchmaking #2: Natürlich selber schreiben! Aber mit Unity Networking?


MaZy

1.819 Aufrufe

[size=5][font=lucida sans unicode,lucida grande,sans-serif]In diesem Blog geht es darum wie ich meinen eigenen Auto-Matchmaking-system schreibe (bin schon viel weiter).[/font][/size]

[font=lucida sans unicode,lucida grande,sans-serif]Hallo,

so da ich unbedingt Fan von Unity Networking bin habe ich auch damit angefangen. Viele finden den Unity Networking "schlecht", aber es liegt teilweise an der Programmierung. Ich habe ca. 90 Spieler auf einem Server simuliert und da fing erst an leicht zu ruckeln. Aber es war klar. Denn es war eine Loop schleife mit ein paar Berechnungen. Wie dem auch sei.


[size=5]Es gibt jede Menge tricks wie man ein Server optimieren kann[/size]

Ich bin zum Beispiel bin Fan von RPC. Mit RPC habe ich die ideale Möglichkeit auszusuchen, wohin meine Daten senden möchte. Ich baue auch dazu meisten einen autoritativer Server.
Das Bild soll zeigen wie ich das meine:

[img]http://www.gabrielgambetta.com/img/fpm1-01.png[/img]

Quelle: [url="http://www.gabrielgambetta.com/fpm1.html"]http://www.gabrielga...a.com/fpm1.html[/url]

Wir ihr sieht sendet ihr nur, dass ihr euch bewegen WOLLT und schickt quasi ein Request zum Server. Der Server sagt danach ja du hast dich erfolgreich bewegen können bzw. darfst dich dahin bewegen und dann bewegt ihr euch dahin. In anderen Worten. Der Server weißt immer besser ob du das kannst.

Der Vorteil ist. Du brauchst nicht immer deine Position senden sondern sagst einmalig wohin du bewegst. Es kann einfach eine Taste W sein für vorne. Ein riesen vorteil ist auch hier, dass du hier kein Lerp oder sonst was brauchst, da man sich exakt gleich bewegt. Aus Sicherheitsgründen überprüft man trotzdem, ob man sich doch zu weit bewegt hat oder nicht. Dann setzt man quasi das Objekt zu der richtigen Position. [/font]
[font=lucida sans unicode,lucida grande,sans-serif]Noch habe ich dazu keine bessere Idee gefunden.

Weiter mit RPC. Mit den Verfahren könnte ich quasi dann per Server steuern wohin, welche Daten geschickt werden soll. Wenn sich jetzt zwei Spieler von ein ander entfernen, sagen wir mall 500 Meter und sie brauchen dann nichts mehr von einander wissen, dann braucht der Server dann das auch nicht schicken. Schon spart man Messages und es wird auch weniger Laggs verursacht ;). [/font]Zusätzlich gibt es auch in RPC Gruppen, wo man nochmal etwas unterteilen kann.

[font=lucida sans unicode,lucida grande,sans-serif]Mit OnNetworkViewSerialize wird nicht so klappen, da man Daten nicht auslassen kann. Falls ich mich irre dann korrigiert mich :)[/font]

[b]Mal kleinen Hinweis[/b]: Ich vermute, dass viele Spiele aus so ähnliches Gründen in Multiplayer laggen. Z.B. Arma 3, Space Engineers. Wobei zu Arma 3 nicht viel sagen kann, da ich lange nicht mehr anprobiert habe, aber Space Engineers war am Anfang nicht toll in Multiplayer zu spielen. Irgendwann update zu update wurde das so gut optimiert, dass es fast laggfrei spielbar war. Nun stellt euch vor das Ganze wäre in Unity Networking. Natürlich würden am Anfang die Spieler sagen "ja Unity halt" oder die Entwickler "Ja Unity Networking halt". Aber, wenn man es optimiert läuft es halt ;). Deswegen sucht man schnell alternativen.
Dummerweise wird in Tutorials-Videos gesagt, dass es Unity Networking schlecht sei, oder peer2peer (was nicht stimmt!), MMO ist unmöglich. Doch klar ist es möglich.

[font=lucida sans unicode,lucida grande,sans-serif]Im nächsten Blogeintrag geht es um das Konzept.[/font]

3 Kommentare


Recommended Comments

Der Client kann eigentlich schon so tun als wenn der Server die passende Antwort schon gesendet hat um den IstZustand dann anzupassen wenn der Server endlich antwortet.

Hat den Vorteil dass man das laggen nicht mehr stark bemerkt und wenn dann auch nur dann wenn Server und Client Ergebnisse stark voneinander abweichen. Aber auch da kann man wiederum gut Inter und extrapolieren.
Link zu diesem Kommentar
Hey danke @[url="http://forum.unity-community.de/user/2321-diekuenstedesbosses/"]DieKuensteDesBosses[/url]. Freut mich :).

Hey @Mark. Ich habe das jetzt nicht bewusst rein getan, da ich eigentlich nur das Bild übersetzt haben wollte. In dem Artikel, was verlinkt ist, wird natürlich dies auch noch erklärt. Ich beziehe mich hier etwas auf den Client im Menü, wenn man Auto-Matchmaking starten will. Drückt der Spieler auf "Spiel suchen" Button, so sollte er warten bis der Server bestätigt, dass man suchen kann. Danach kann da von mir aus "Wird gesucht..:" stehen oder so.
Link zu diesem Kommentar
Gast
Kommentar schreiben...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...