Auto-Matchmaking #2: Natürlich selber schreiben! Aber mit Unity Networking?
[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]
[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