Jump to content
Unity Insider Forum

MaZy's Blog

Sign in to follow this  
  • entries
    14
  • comments
    32
  • views
    42,553

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

Sign in to follow this  
MaZy

443 views

[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]
Sign in to follow this  


3 Comments


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.

Share this comment


Link to comment
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.

Share this comment


Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

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

Loading...
×
×
  • Create New...