Rust – Naval Update Trailer
Von Spielern gebaute Boote
Von Spielern gebaute Boote sind hier und bieten eine neue Möglichkeit, die Meere zu erkunden, einschließlich der Tiefsee!
Platziere die neue Bootsbaustation im Wasser und fang mit deinen Schiffskameraden an und baue mit deinen Schiffskameraden! Verwenden Sie den neuen Bootsbauplan, um Ihr Traumboot zu bauen und dabei einen neuen Satz bootsspezifischer Bausteine zu verwenden.
Füge ein Steuerrad, Anker, Segel, Motoren, Planken, Rampen und Kanonen hinzu, um dein Schiff zu vervollständigen und in die Tiefsee aufzubrechen!
Eine sorgfältige Überlegung und Platzierung von Motoren und Segeln ist wichtig, wenn Sie ein seetüchtiges Schiff wollen, da dies das Fahrverhalten und die Geschwindigkeit beeinflusst. Segel und Motoren können beide über die radialen Menüoptionen umgekehrt werden, um ein geschicktes Rückwärtsparken zu ermöglichen.
Stellen Sie sicher, dass Sie einen Sperrcode an Ihrem Lenkrad einstellen, um unerwünschten Zugang oder Diebstahl Ihres glänzenden neuen Bootes zu verhindern.
Reguläre Deployables können auf deinen Booten platziert werden. Wenn sie auf dem Schlepper arbeiten, arbeiten sie auch hier.
Müssen Sie eine Änderung vornehmen, nachdem Sie gemerkt haben, dass Ihr Boot nur im Kreis fährt? Nutze den Modus "Deploy & Edit" (nicht verfügbar in der Tiefsee), um schnell und einfach eine Bootsbaustation um dein Boot herum aufzustellen.
Viel Spaß beim Bauen und Erkunden der Meere!
Neue aussetzbare Boote
Um Ihr Schiff seetüchtig zu machen, haben wir jetzt neue aussetzbare Ausrüstungen – speziell für Ihr Boot!
Bootsbaustation
Die Bootsbaustation ist in tiefem Wasser platzierbar, sie wird genutzt, um Ihr Boot zu bauen und zu bearbeiten.
Bauplan
Der Bootsbauplan ähnelt dem des Bauplaners, den du kennst und liebst, aber für Boote.
Segel
Ein Blatt aus gehärtetem Stoff, das den Wind auffängt und das Boot vorwärts antreibt.
Helm
Ein Muss für jedes seetüchtige Boot. Wird genutzt, um zu steuern und die Richtung zu steuern, mit einem eingebauten Schloss, um das Schiff zu sichern, wenn man nicht am Steuer sitzt.
Motor
Ein leistungsstarker Motor, der mit minderwertigem Kraftstoff läuft und ihn schnell verbraucht. Laut, durstig und ineffizient, aber unbezahlbar, wenn man der Gefahr entkommen, anderen Spielern nachjagen oder sich aus einer schlechten Situation herauskämpfen muss. Manchmal ist Geschwindigkeit den Preis wert.
Anker
Ein schwerer Anker, der das Treiben deines Bootes verhinderte. Lass es ab, um die Position zu halten, und halte dein Schiff genau dort, wo du es haben willst. Ohne sie könnte Ihr Boot ans Ufer treiben.
Kanone
Eine mächtige Marinewaffe, mit der die Boote anderer Spieler versenkt werden. Lade sie mit Kanonenkugeln auf.
Kleine Rampe
Überbrücke Lücken und schaffe schnelle Zugangspunkte. Ideal, um andere Schiffe zu entern oder vom Wasser aus Land zu erreichen.
Plank
Er wurde genutzt, um Lücken zu überbrücken, andere Boote zu besteigen und kleinere Meinungsverschiedenheiten zu klären, indem sie Freunde ins offene Wasser schob.
die Tiefsee
Die Tiefsee ist eine neue Offshore-Region, zu der du mit Booten reisen kannst. Es ist ein hohes Risiko, eine hohe Belohnung und absichtlich unerbittlich.
Du kannst ihn erreichen, indem du mit einem starken Boot wie von Spielern gebauten Booten, RHIBs oder den neuen PT-Booten zum Rand der Karte segelst.
Dies ist kein Ort zum Leben: Du kannst nicht bauen, und nichts respawnt. Wer zuerst kommt, mahlt zuerst. Die Tiefsee wird sich intermittierend öffnen und schließen, wie ein Weltereignis.
Im Inneren können Sie im Folgenden in diesem Blog neue Inhalte entdecken:
• Tropische Inseln
• Schwimmende Städte
• Geisterschiffe
• Von Wissenschaftlern gesteuerte Boote
Wir haben viele Pläne, die Tiefsee zu erweitern und sie als Brücke zwischen den Welten zu nutzen.
Geisterschiffe
Ähnlich wie Monumente sind Geisterschiffe stationäre Schiffe, die über die Tiefsee verstreut und mit Beute gefüllt sind, die Menschen beim Navigieren auf ihren Booten sammeln können.
Jedes Geisterschiff wird von Wissenschaftlern geschützt, sowohl auf dem Schiff als auch auf nahegelegenen Patrouillen, die versuchen, dich vom Schiff fernzuhalten. Einige Geisterschiffe enthalten auch verschlossene Kisten, die du hacken musst, während du unter Druck von anderen Spielern und Wissenschaftlerbooten stehst.
Wir hoffen, dass Geisterschiffe zusammen mit anderen Beuteorten wie tropischen Inseln genug Anreiz bieten, um häufig die Tiefsee zu besuchen.
Tiefsee-Schwimmende Städte
Während du die Tiefsee erkundest, kannst du auf die Schwebenden Städte stoßen. Erbaut aus verlassenen Lastkähnen und dem Gerüst einer unfertigen Ölplattform, dienen diese baufälligen Monumente als Zufluchtsort für alle Arten von Spielern.
Derzeit gibt es vier Varianten von Schwebenden Städten, die auf einem Server spawnen können, wobei jede schwebende Stadt die gleichen Arten von Einrichtungen bietet. Dazu gehören Docks, an denen du dein Boot sichern kannst, sowie verschiedene NPC-Händler, die Waffen, Ausrüstung, Essen und medizinische Versorgung verkaufen.
Ein nahegelegener landwirtschaftlicher Lastkähn ist gegen eine kleine Gebühr zugänglich, sodass Sie die Möglichkeit haben, frische Ernten zu ernten. In jedem Denkmal sind auf den Plattformen vertraute Sicherheitszonen-Annehmlichkeiten verteilt, darunter Recycler, Werkbanken, Forschungstische und Raffinerien.
Im Zentrum jeder schwimmenden Stadt befindet sich das Deep Deck Casino, ein einladender Ort, der Unterhaltung und einen Ort zum Entspannen für alle müden Seeleute bietet. Hier können Sie andere Überlebende treffen, im Pool entspannen, Musik genießen und Ihren Schrott nach Herzenslust verspielen.
Denk einfach daran, dich dort nett zu verhalten – mach Ärger, und die Sicherheitstürme erinnern dich daran, warum das eine schlechte Idee war.
Tiefseeinseln
Jahrelang war der Ozean nur eine blaue Leere zwischen dir und den Ölplattformen. Mit diesem Update führen wir ein brandneues Biom in der Tiefsee ein, die Tropischen Inseln.
Diese Mikroinseln sind vollständig vom Festland getrennt. Erwarten Sie weiße Sande, dichte Palmen und sogar eine neue, köstliche natürliche Leckerei. Hier wirst du keine Kiefern sehen.
Ihre halbprozedurale Natur führt zu unterschiedlichen Erfahrungen. Einige von ihnen könnten alte Ruinen haben, andere eine Erzquelle – oder beides.
Aber sei vorsichtig. Du bist nicht der Einzige, der da draußen ein Vermögen sucht.
WISSENSCHAFTSBOOTE
Wir haben ein neues Boot hinzugefügt – das PT-Boot. Nur in der Tiefsee zu finden – er ist langsamer als der RHIB und verbraucht mehr Treibstoff, ist aber stärker und hat eine starke Kraft.
Vorsicht, die Tiefsee ist voller neuer Wissenschaftlerboote. Diese Schiffe (einschließlich RHIBs und des neuen PT-Boots) werden von Wissenschaftlern bemannt, die in koordinierten Gruppen auf der Tiefsee umherstreifen und nach Spielern suchen, an denen sie teilnehmen können. Vielleicht findest du sie beim Schutz der gehackten Kiste an Bord eines Geisterschiffs. Jedes Boot kann von Wissenschaftlern befreit und vom Spieler gestohlen werden. Wir fragen uns, was Sie an Bord finden werden?
Jedes PT-Boot ist mit zwei Türmen ausgestattet. Eines war mit zwei 50-Kaliber-Maschinengewehren ausgestattet, das andere mit einer einzigen, präziseren 50-Kaliber-Kanone. Jeder kann mit Standard-5,56-Liter-Gewehrmunition nachgeladen werden.
RHIB Refresh
Das RHIB braucht ein wenig Zuwendung, und es gibt keinen besseren Zeitpunkt dafür als das Naval Update. Das Modell und die Texturen wurden aktualisiert, ebenso wie ein neues Storage-Box-Modell.
Der RHIB ist jetzt mit einem funktionierenden Kompass und Kartenanzeigen ausgestattet – die Ihnen helfen, sich im Ozean zu orientieren.
Neue Wissenschaftler-KI auf Ölplattformen UND AUF SEE
Wenn du gegen viele Wissenschaftler gekämpft hast, weißt du, ist es der perfekte Weg, sie zu umgehen oder zu flankieren, um getötet zu werden.
Sie wissen immer, wo du bist, und drehen sofort um und beamen dich, wenn du versuchst, klug zu spielen und sie auszumanövrieren.
Deshalb ist es sehr verlockend, sie entweder aus großer Entfernung zu erschießen oder hinter einem Engpass zu campen und darauf zu warten, dass sie unweigerlich einzeln hereinstürmen.
Das macht die Aufnahme eines von Wissenschaftlern bewachten Denkmals zu einem Ressourcentest mit geringer Fähigkeitsgrenze.
Es lässt sich darauf reduzieren:
d
Du kennst den Cheese, und hast du genug Munition und Verbände, um sie durchzuarbeiten?
Neue Wissenschaftler-KI kommt schrittweise auf den Markt, aber nur bis , und vorerst.
Ölplattformen
Geisterschiffe
Tiefseeinseln
Man erkennt sie an ihrem Marinetarnanzug und dem quadratischen Visier.
Im Gegensatz zu ihren Verwandten sehen sie nicht durch Wände und müssen sich auf Geräusche und aktuelle Sichtungen verlassen, um dich zu finden.
Das bedeutet, du kannst sie locken, indem du spickst oder ein Geräusch machst, und dann herumgehen und sie in den Rücken schießen.
Dies wird zusätzlich durch ihre geringere Reaktionszeit erleichtert.
Wenn du aus einem Winkel erscheinst, den sie nicht erwartet haben, sind sie überrascht, und dann kannst du sie abschießen, bevor sie überhaupt reagieren können.
Außerdem stürmen sie nicht in Engpässe, um von einem campierenden Spieler abgeschlachtet zu werden, sondern versuchen stattdessen zu flankieren, Rauchgranaten zu werfen und gemeinsam zu stürmen oder einfach auf der anderen Seite im Hinterhalt zu warten.
Sie sind auch viel vorsichtiger gegen Scharfschützen; wenn sie getroffen werden oder einen Schuss hören, tauchen sie alle in Deckung und warten.
Wir werden Ihr Feedback genau beobachten und sie weiter anpassen.
Wenn sie in einem ausreichend guten Zustand sind, werden wir in Erwägung ziehen, die anderen Wissenschaftler auf der Hauptinsel auf die neue KI umzustellen.
GEBÄUDEPLANER-ANSICHTSMODELL
Der Planer hatte beim Bauen oder Bereitstellen eines Objekts immer ein Third-Person-Modell, das alle anderen sehen können, aber nie ein First-Person-Viewmodel.
Wir finden es schön, wenn das, was alle anderen sehen, mit dem übereinstimmt, was du siehst, deshalb haben wir ein Viewmodel zum Planer hinzugefügt.
Neue Missionen
Wir haben in diesem Monats-Update fünf neue marinethematische Missionen. Diese können von einer Mischung aus neuen und bestehenden Missionsanbieter-NPCs übernommen werden. Einige davon erfordern, dass man sich in die Tiefsee wagt, andere halten einen auf dem Festland verwurzelt.
Dieses Update bringt viel Arbeit mit sich, um zu verbessern, wie wir intern Missionen erstellen und modifizieren. Es gibt noch mehr, was wir mit Missionen tun wollen, aber wir sind jetzt in einer besseren Lage, daran zu arbeiten als zuvor. Diese Arbeit bringt zudem mehrere QOL-Korrekturen und Verbesserungen bestehender Missionen und NPC-Gespräche sowie zugehörige Hintergrundoptimierungen mit sich.
Große Ölplattformboote
Wissenschaftlerboote spawnen nun an der Large Oilrig mit der Kiste – was den Spielern eine zusätzliche Herausforderung beim Ölbergen aus dem Meer bietet.
Die RHIBs patrouillieren rund um die große Ölplattform und verhindern, dass Spieler in die Nähe kommen. Diese respawnen jedes Mal, wenn die Oilrig zurückgesetzt wird.
Du kannst die Wissenschaftler töten und die Beute an Bord stehlen. Gestohlene Boote bleiben nach dem Oilrig-Reset.
Künstlerpaket-DLC
Rust hat eine der vielfältigsten Spielerbasen aller beliebten Spiele, von Hardcore-PVPern bis hin zu freundlichen und weniger freundlichen RPern. Um das widerzuspiegeln, haben wir unsere besten digitalen Pinsel herausgeholt und das Artist DLC Pack erstellt; Eine Sammlung cooler und cleverer Gegenstände, die dir helfen, dich auszudrücken – egal, ob du ein charmantes Porträt malen oder die Basis deines Nachbarn anmerken möchtest.
Paintball-Pistole und Latzhosen
Verwandle taktischen Angriff mit der Paintball-Pistole und dem Overalls in Kunst. Mit einem einzigartigen Munitionstyp laden Sie den Behälter mit Paintballs, wählen Sie Ihre Teamfarbe und machen Sie eine Szene. Gibt es in 5 Farben für mehrere Teams.
Paintballs verursachen unterschiedliche Schadensmengen, je nachdem, ob sowohl der verletzte als auch der Initiator einen Latzzug tragen. Es gibt separate Server-Convas, um diese zu skalieren, wenn Admins möchten, 'paintballstandarddamage' und 'paintballoverallsdamage'.
Natürlich kannst du die Paintball-Pistole auch benutzen, um zu markieren, was du willst, nicht nur andere Spieler! Außerdem haben die Paintball-Overalls ein einzigartiges Merkmal, bei dem die Kapuze je nach Kopfbedeckung dynamisch hoch- oder runtergezogen wird.
Lackierbares reaktives Ziel
Leuchte deine eigenen Ziele mit dieser einsetzbaren Hülle für das Reaktive Ziel an. Du kannst sowohl auf das Zielbrett als auch auf den Eimerhelm malen. Als zusätzliche Funktion fungiert der Eimer wie der Kopf eines Spielers, sodass du deine Kopfschussfähigkeiten verbessern kannst.
Verzierte Rahmen
Bringen Sie mit diesen Ornate Rahmen einen Hauch von Klasse in Ihre Basis. Malen Sie darauf oder fügen Sie ein Foto hinzu, und wenn Sie mit Ihrem Meisterwerk zufrieden sind, geben Sie dem Rahmen eine einzigartige Beschreibung. Gibt es in 5 Größen, von klein bis extra groß.
Leuchtende Rahmen
Hängen Sie Ihre Kunstwerke mit dieser Sammlung von 5 leuchtenden Rahmen in Lichter. Mit Unterstützung für IO kannst du diese Lichter aus- oder einschalten, was dein Werk für alle sichtbar hervorhebt.
Verschlussrahmen
Rollen Sie Ihre Designs mit den Verschlussrahmen aus. In 5 Größen erhältlich, kann man die Fensterläden sowohl manuell als auch mit IO hoch- und runterrollen, was unzählige Möglichkeiten von einem RP-Gameshow Wettbewerb bis zur ultimativen Fallen-Base-Enthüllung ermöglicht.
Rahmenlose Leinwände
Wenn der extra große Rahmen nicht groß genug für Ihre Ziele ist, suchen Sie nicht weiter als diese Serie von 5 rahmenlosen Leinwänden. Sie können diese nutzen, um Wandgemälde von wahrhaft epischen Ausmaßen zu schaffen.
Tragbare Staffelei
Bringen Sie Ihr Talent mit diesem neuen, einzigartigen Einsatzfahrzeug in die Natur. Du kannst jeden Rahmen bis Größe Large montieren und nach Herzenslust bemalen, während du die frische Luft im Windschatten von Fishing Village genießt. Im Paint-Modus kannst du den Hintergrund und sogar die Leinwand selbst umschalten, was dir bei deiner kreativen Vision hilft. Die Staffelei unterstützt jede Farbe, die du verwenden möchtest, sogar Schwarz...
Bemalbares Fenster
Egal, ob Sie Buntglas, ein Aquarium, ein Schaufenster oder eine Allein-zu-Hause-Attrappe bauen möchten – dieses bemalbare Fenster wird sehr nützlich sein! Dieses ausklappbare Fenster ist eine Hülle für das Verstärkte Glasfenster.
Rosetten-Preis-Sprays
Zu guter Letzt gibt es mit dem Artist DLC Pack vier individuelle Sprühsprüh, die mit dem Spraypaint-Tool verwendet werden können. Enthalten sind Sprays für Platz 1, 2, 3 und... Letzter Platz. Verwenden Sie diese, wie Sie es für richtig halten.
Neues Workshop-Skinnable: SKS
Diesen Monat stellen wir den nächsten Workshop-Skinner vor: den SKS
Die SKS ist eine beliebte Anfrage aus der Häutungsgemeinschaft, und wir kommen gerne dazu! Als eine unserer neuesten Waffen können wir es kaum erwarten zu sehen, wie die Community mit ihren aktualisierten Grafiken arbeitet.
Um deinen eigenen SKS-Skin zu erstellen, geh in den Ingame-Workshop und finde den SKS-Waffengegenstand. Von dort aus kannst du die Modelldatei herunterladen und eigene Materialien hinzufügen.
Serverleistung
Wenn Sie die Entwicklung dieses Updates verfolgt haben, wissen Sie wahrscheinlich, dass wir das wegen einiger besorgniserregender Serverleistungsprobleme tun mussten. Seitdem konzentrieren wir uns extrem darauf, die Serverleistung so nah wie möglich an das Niveau vor dem Naval-Update zu bringen. Obwohl viele Probleme in neuen Inhalten lagen, haben wir dort nicht aufgehört und haben viele Verbesserungen bei älteren Leistungsengpässen vorgenommen.
Es letztes Jahr verschieben
Viele dieser Erklärungen sind vielleicht etwas technisch, aber wir dachten, es könnte interessant sein, den Prozess zu sehen, den wir bei der Bearbeitung dieser Themen durchlaufen.
Kochen/Ofenleistung
Wir haben einige hohe Framezeiten bemerkt, die auf den Ofenprozess zurückzuführen sind – das ist jedes Lagerfeuer, jeder Ofen, ein Grill usw. Bei genauerem Hinsehen gab es einige Probleme. Der Kochvorgang läuft alle 0,5 Sekunden ohne Zufall, sodass sich viele Öfen gleichzeitig ansammeln würden und große Spitzen verursachen würden. In einem künstlichen Testfall mit 500 Öfen, die synchron liefen, sahen wir 18 ms, um alle Öfen durchzulaufen.
Öfen verwenden jetzt ein maximales Budget von 0,25 ms pro Frame, um die Kosten beim Betrieb im großen Maßstab zu glätten. Das würde das System nur langsamer machen, also haben wir auch Optimierungen vorgenommen, um jeden Ofen schneller laufen zu lassen. Beim Erstellen eines Output-Elements haben wir einen neuen Item erstellt (z. B. 1x Metal Fragment) und versucht, diesen Teil zum Output hinzuzufügen (was normalerweise +1 zum bestehenden Stack hinzufügt und dann den neu erstellten Item löscht). Es ist viel schneller zu überprüfen, ob bereits ein Artikel im Output ist, und einfach dessen Anzahl zu erhöhen, wodurch der neue Item-Erstellungsprozess umgangen wird (wir nutzen diesen Trick schon eine Weile im Industriesystem). Jeder Ofen hat außerdem alle seine Gegenstände durchgearbeitet, um bei jedem Tick den Brennstoff zu finden, der jetzt zwischengespeichert ist. Schließlich markierte der Ofen sein Inventar jedes Mal, wenn er den Kochvorgang aktualisierte (um den animierten Fortschritt auf dem Gegenstandssymbol zu aktualisieren), der jetzt nur noch verschmutzt wird, wenn er eine Schwelle überschreitet (5 %, 10 % usw.), was die Kostenübernahme beim Versand des aktualisierten Inventars deutlich reduziert.
Diese Änderungen reduzieren den künstlichen Test, dass 500 Öfen Metallerz schmelzen, auf maximal 0,25 ms, oft weniger als das, und ohne sichtbare Veränderungen für die Spieler.
Industrielle Leistung
Das industrielle System war schon immer eine Herausforderung in Bezug auf die Serverleistung. Basis- und Rohrdesigns sind im Laufe der Jahre immer aufwendiger und komplexer geworden, was neue Engpässe in der Logik offenlegt. Diesen Monat konnte ich eine Kopie einer extrem schlecht performenden Basis von einem unserer Live-Server erhalten, die ein nützlicher Benchmark war. In manchen Fällen verbrauchte diese Basis 20 ms pro Frame, um das gesamte industrielle System vollständig zu evaluieren, was auf jedem Server offensichtlich ein Problem ist.
Die Hauptverbesserungen bestanden darin, die Anzahl der Iterationen über Item-Container und andere Arrays zu reduzieren. In diesem Maßstab kann das einfache Beziehen eines Gegenstands aus einem Behälter langsam sein, da die Reihenfolge der Elemente im Speicher nicht mit der Reihenfolge der Gegenstände in einem Container übereinstimmt, weshalb wir möglicherweise den gesamten Behälter iterieren müssen, um herauszufinden, welcher Gegenstand sich in einem bestimmten Slot befindet. Multipliziert man das mit jedem Slot in jedem Input, bewertet man jeden Slot auf jedem Output, summiert sich der Preis schnell. Eine schnelle Recherche, auf die wir uns während des industriellen Prozesses beziehen können, war ein großer Gewinn, in manchen Fällen wurde über 20.000 Aufzählungen umgangen.
Das Überprüfen von Elementen, die die Filter bestanden, kostete uns ebenfalls Zeit; das Durchlaufen des gesamten Eingabecontainers durch den Filter zu Beginn des Prozesses ermöglichte es uns, noch mehr Aufzählungen zu umgehen. Das bedeutete auch, dass wir ein paar Schichten verschachtelter For-Loops entfernen konnten. Das Endergebnis ist, dass die obige Basis nun bei 3 ms pro Frame seinen Peak erreicht. Immer noch eine ganze Weile, aber eine deutliche Verbesserung gegenüber dem ursprünglichen Fall.
Beziehungssystem
Das RelationshipManager-System steuert das Kontaktsystem – es macht Bilder von Spielern, die du triffst, und verfolgt deine Beziehungen. Die Funktionalität ist relativ eingeschränkt, hat aber auf stark besetzten Servern ziemlich lange gedauert.
Das bedeutete, jeden Spieler auf dem Server zu durchlaufen, Spieler in Reichweite zu finden, zu prüfen, ob sie sichtbar sind (mit einem Physikcheck) und bei Bedarf eine neue Beziehung zu schaffen. Es würde auch jede bestehende Beziehung eines Spielers durchgehen, berechnen, wie viele Spieler einen Spieler als negativ markiert haben, und ihn standardmäßig als feindlich markieren (d.h. sein Namensschild ist rot). Das passierte alle 1 Sekunden, ohne Schutz für viele Spieler, die das im selben Frame auslösten, was zu gelegentlichen sehr langen Framezeiten führen konnte – bis zu 0,75 ms auf besetzten Servern.
Ich habe diesen Prozess auf eine budgetierte Warteschlange aktualisiert, sodass wir maximal 0,15 ms Verarbeitung pro Frame durchführen können. Wenn mehr Spieler ein Update brauchen, wartet es auf den nächsten Frame. Da diese Logik nicht perfekt aktuell sein muss, ist eine leichte Verzögerung akzeptabel und wird wahrscheinlich nicht bemerkbar sein. Ich habe auch die Berechnung des Feindseligen aktualisiert, sodass sie nur läuft, wenn ein Spieler einen Kontakt geändert hat (als freundlich/feindlich/neutral markiert), da diese Berechnung in den meisten Fällen jedes Mal dasselbe Ergebnis lieferte. Schließlich habe ich den Sichtliniencheck beim Erstellen neuer Kontakte aktualisiert, sodass er das Server-Occlusion-System als ersten Durchgang verwendet, was bedeutet, dass wir die physikalische Berechnung oft überspringen können.
Spieler-COllider-Größen
Wir unterstützen die Änderung der Größe des Spielerbeschleunigers in ausgewählten Szenarien – beim Niederliegen, beim Schlafen, auf Fahrzeugen montiert usw. Dies wurde angewendet, indem jeder Spieler auf dem Server über jeden Frame iteriert und bei Bedarf aktualisiert wurde. Auf einem mäßig besetzten Server dauerte das 0,25 ms, obwohl in den meisten Fällen die Collider-Größe nicht aktualisiert werden musste.
Ich habe das verbessert, um eine budgetierte Warteschlange zu verwenden, sodass nur 0,05 ms Spieler pro Frame aktualisiert werden. Da die Größe des Spielerbeschleunigers ziemlich wichtig ist, habe ich eine manuelle Größenanpassung hinzugefügt, wenn der Spieler den Zustand ändert (z. B. in den Schlafmodus), sodass die Größe trotzdem sofort aktualisiert wird und sich nicht um ein paar Frames verzögert wird.
Erziehungsbände
Wir haben in Rust ein System namens "Parenting Volumes" – wie der Name schon sagt, erkennen diese Volumes, ob sich ein Spieler oder eine andere Entität in der Nähe befindet, und sollten mit einem anderen Objekt verbunden werden. Da es viele Randfälle gibt, führen wir auch zusätzliche Prüfungen (wie Physikabfragen) durch, um Probleme zu vermeiden.
Die kommenden, von Spielern erstellten Boote sind darauf angewiesen und nutzen sie zudem viel mehr als alles andere auf der Welt. Während der Entwicklung haben wir festgestellt, dass dies hohe Kosten für die Serververarbeitung verursacht. Hier ist ein Beispiel für 100 Boote, bestehend aus 3 Blöcken und 3 schlafenden Spielern:
Und hier ist, wie viel es kostet – , was viel ist für etwas, das nicht aktiv genutzt wird:
3,5 ms
Ich habe mir Zeit genommen, diese Logik umzuschreiben, die läuft, wenn auf gesetzt ist (was standardmäßig ist). Jetzt ist es:
TriggerParent.TickMode
1
• Verwendet eine eigene Verarbeitungswarteschlange anstelle von Invokes, wodurch Stalls reduziert werden, wenn sich die Physikwelt zwischen einzelnen Aufrufen ändert
• Batchverarbeitung und Burst-Jobs wurden verwendet, um die Arbeit über Threads hinweg zu überlappen, wo möglich.
• Arbeit überspringen, wenn das Volumen und dessen Inhalt sich nicht verschoben oder verändert haben
Daher gilt das obige Szenario nun:
• 1,4 ms (-61 %), wenn jedes Boot sich bewegt
• 0,25 ms (-93 %), wenn jedes Boot statisch ist
Prozedurale Spawning-Spikes
Beim Durchsehen unserer Performance-Telemetrie ist mir aufgefallen, dass wir etwa jede Minute seltsame, häufige massive Verzögerungsspitzen erleben:
Es stellte sich heraus, dass unser Entitäten-Populationssystem Schwierigkeiten hatte, alle fehlenden Entitäten (insbesondere Schrotthaufen) wiederzubeleben. Es funktioniert, indem man die Dichte einer Population auf dem Server verfolgt und eine Reihe von Zufallsstichproben der Welt ausführt, ungültige filtert und diese Positionen schließlich nutzt, um Entitäten zu spawnen.
Ich habe ein Tool geschrieben, das das Nachbefüllen der Populationen simuliert( ), visualisiert, wie die Stichprobe funktioniert und warum Proben abgelehnt werden. Verschiedene Ablehnungsgründe sind farblich gekennzeichnet, wobei nur "Grün" als Erfolg gilt. Hier ist die Visualisierung vor den Korrekturen – (maximales Limit) versucht, 800 Schrotthaufen zu spawnen:
spawn.dump_map <popname> [Zahl=100]
25000
Es stellte sich heraus, dass wir ein paar Bugs hatten, die sowohl das Spawnen neuer Entitäten verhinderten als auch Proben verhinderten, selbst wenn wir keine Entitäten zum Spawnen hatten. Wenn wir diese beheben und das Tool erneut ausführen, bekommen wir Versuche, 800 Müllhaufen zu spawnen (man muss heranzoomen, um Pixel zu sehen):
3019
Das hatte auch einen positiven Einfluss auf unsere Max-Frametime-Telemetrie – Lagspikes sind jetzt viel seltener:
AutoTurret-Leistung
Auto-Geschütztürme sind durchweg eine enorme Belastung für Server. Das liegt daran, dass sie alle paar Sekunden häufige Winkel-Updates durchführen, das passiert bei jedem Turm auf einem Server. Jedes dieser Winkel-Updates wurde ständig über das Netzwerk an alle nahegelegenen Clients synchronisiert. Das hat die Clients mit einer Menge unnötigem Netzwerk-Overhead überflutet.
Das untenstehende Diagramm zeigt die Ausführungszeitdifferenz der Methode, mit der diese Werte über das Netzwerk gesendet wurden. Der Patch erschien um 22 Uhr auf unseren Staging-Servern (man sieht den harten Ausfall nach der Implementierung). Diese Änderung betrifft auch die Ballista und die neue Kanone und reduziert deren Netzwerkaufwand.
SendAimDir()
Diese Winkel-Updates wurden auch für jeden Turm am Hauptthread ohne viel Lastverteilung oder Drosselung durchgeführt.
Um dem entgegenzuwirken, habe ich zwei neue budgetierte Schleifen eingeführt, die verhindern, dass eine Menge Auto-Geschütztürme Serverressourcen überladen. Das wird auf größeren Servern deutlicher sein. Jedes der Serverbudgets für Geschütztürme kann mit den folgenden Convars konfiguriert werden:
Maximale Millisekunden pro Bild können für Turmwinkel-Updates und allgemeine Updates aufgewendet werden
NEU - tick_update_ms (Standard 1) -
Maximale Millisekunden pro Frame können für Turm-Munitionschecks aufgegeben werden
NEU - ammo_update_ms
(Standard 0.1) -
Wie viele Millisekunden pro Bild kann man für das Sammeln von Geschützturmwinkeln aufwenden?
scan_budget_ms
(Standard 0,5) -
Auftriebsleistung
Zur Vorbereitung auf das Naval Update brauchten wir eine Möglichkeit, dass unsere Wassersysteme eine große Menge schwimmender Objekte in der Tiefsee tragen können. Dazu gehören nicht nur die neuen Spielerboote, sondern auch vorhandene, auftriebsfähige Objekte wie Leichen oder Beute.
Der Auftriebscode selbst war bereits ziemlich optimiert und nutzte einige unserer neueren APIs, um Dinge wie die Wasserhochkunft oder das Überprüfen von Kollisionen zu ermitteln. Allerdings führte jedes auftriebsfähige Objekt Simulationen für sich selbst durch, was bedeutet, dass alle einzelnen Schritte für Auftrieb einzeln durchgeführt wurden.
Anstatt Checks einzeln durchzuführen, können wir diese Auftriebsprüfungen zusammenfassen, um über alle Objekte mit mehreren Worker-Threads zu laufen. Früher haben wir in vereinfachter Logik die Wasserhöhen für mehrere Punkte auf jedem Objekt überprüft und dann Kräfte hinzugefügt, um das Objekt zur Wasseroberfläche zu bewegen. Wir erhalten nun alle Höhen aller auftriebsfähigen Objekte gleichzeitig auf mehreren Fäden, berechnen ihre Kräfte und wenden ihre Kräfte schließlich wieder auf den Hauptfaden an.
Das ist in einem Szenario mit 200 Booten (jedes Boot hat mehrere Auftriebspunkte) viermal schneller und skaliert besser als zuvor, je mehr Objekte man hinzufügt.
Benutzerdefinierte Unity / Physx
Die Physik war schon lange der Engpass für die Leistung von Rust-Servern. Abgesehen davon, die Anzahl der Collider weltweit zu reduzieren, hatten wir keine Möglichkeit, diese Kosten wesentlich zu senken. Letztes Jahr haben wir jedoch die Möglichkeit erhalten, individuelle Änderungen an unserer eigenen Version der Unity Engine vorzunehmen und damit Updates für das Spiel bereitzustellen.
Man kann den physikalischen Tick auf viele verschiedene Arten aufschlüsseln. Der größte Engpass für Rust wird als bezeichnet. Dies ist der Teil des Physik-Ticks, bei dem man schnell Paare von Collider findet, die möglicherweise kollidieren könnten, bevor man später teurere Berechnungen anwendet, um genaue Kontaktinformationen zu finden. Allein aufgrund der Größe der Karte in Rust und der Dichte der Kollider, die große Basen haben, stellt sich das als kostspielige Operation heraus.
Breitphase
Wir haben gezielte Änderungen an der Physik-Engine (PhysX) vorgenommen, die diesen Teil des Physik-Ticks drastisch beschleunigen. Die Parallelisierung der Breitphase war die größte Wirkungsänderung, die wir vornehmen konnten, indem wir jede Region in eine eigene Aufgabe aufteilten, die über alle verfügbaren Job-Threads verteilt wird, bevor die Ergebnisse im Hauptthread erneut kombiniert werden.
Das obige Diagramm zeigt die durchschnittliche Zeit, die über einen langen Zeitraum auf einem unserer aktivsten Server auf dem Physik-Tick verbracht wurde. Der Mittelpunkt des Graphen ist, als wir auf die neue Unity-Version mit unseren eigenen PhysX-Bibliotheken umgestiegen sind. Die Leistungssteigerung ist ziemlich drastisch.
Um sicherzugehen, dass diese Änderungen sicher sind, haben wir vor dem Marine-Update ein Server-Update gestartet, nur mit dem Wechsel auf die neue Unity/PhysX-Version. Natürlich führten all diese Leistungssteigerungen dazu, dass die Spielerobergrenzen erhöht wurden, und der Kreislauf begann von vorne.
Ich habe weitere PhysX/Unity-Verbesserungen in Planung für die Zukunft, also wird sich ab hier alles verbessern.
Leistung berittener Spieler – Boote
Wenn ein Spieler geritten war, stellten wir in jedem Bild ständig seine Position auf die montierte Position ein, anstatt den Spieler nur zu erziehen. Parenting würde den Spieler automatisch relativ günstig/kostenlos in die berittene Position bringen, während unsere Einstellungsmethode ziemlich teuer ist. Es gibt einige Codebasis-Gründe, warum wir jeden Frame festlegen müssen (bezogen auf Parenting-Volumen), aber ich habe es geschafft, genug davon zu überwinden, sodass wir mountable Parenting auf ausgewählte Mountables ausrollen können. Im Moment werden es nur Boote sein, aber ich bin zuversichtlich, dass wir es in Zukunft auf mehr Mountables bekommen können. Diese Kosten wurden auch durch KIs erhöht, die an Fahrzeugen montiert sind, was in diesem Patch deutlich gestiegen ist. Glücklicherweise beheben diese Verbesserungen auch die KI, was die Kosten erhöht.
Früher, wenn man einen Testserver (ca. 0,6 ms pro Frame für das Wechseln von Spielern) mit einer geringen Anzahl von Spielern (etwa 20~) gezeigt wurde:
Mit Hunderten von KIs erreichen wir jetzt 0,02 ms auf der Eltern-Methode von und selbst wird nicht einmal aufgerufen:
MountedPlayerSync
MountedPlayerSync
Caboose-Leistung
Letzten Monat habe ich beim Herumlaufen durch den Außenposten einen ungewöhnlichen Leistungseinfall bemerkt. Es stellte sich heraus, dass der statische Caboose-Zug eine übermäßige Anzahl von Leinwänden verwendete, das ist jetzt behoben.
Dies wirkte sich auch auf Spieler in der Nähe des Caboose-Zugwagens in freier Wildbahn aus.
Schrotflintenfall-/Flammenturm-Leistung
Wir haben einige ungewöhnliche Spitzen bemerkt, die durch Flammentürme und Schrotflintenfallen verursacht werden. Es passierte alle paar Sekunden in großen Basen ohne TC. Ziemlich selten, aber dennoch behoben.
Ich habe auch den Netzwerkaufwand bei Flammengeschütztürmen reduziert. Sie schickten ihre Rotation alle 0,1 Sekunden an jeden Spieler im Netzwerkbereich, was unnötig war.
Server Profiler – Sofortiger Modus
Ein paar Tage vor dem internen Lockdown habe ich eine experimentelle Verbesserung eingeführt – die Möglichkeit, bestimmte Codebereiche zu erfassen. Das sollte nützlich sein, wenn man Lagspikes verfolgt oder selten laufenden Code messt. Hier sind ein paar Anwendungsbeispiele:
ServerProfiler
record Run() und alle internen Daten, dann einen Snapshot exportieren mit (ServerProfiler.RecordScope("IndustrialQueue", RecordIndustrialQueueServerServerVar)) { industrialQueue.Run(); } // ODER // speichern und exportieren nur, wenn mehr als 5 ms verbraucht werden mit (ServerProfiler.RecordScopeIfSlow("IndustrialQueue", TimeSpan.FromMilliseconds(5), RecordIndustrialQueueServerVar)) { industrialQueue.Run(); }
In beiden Fällen erzeugt es eine Datei, die man lokal in Server/<ident>/Profiler/ finden kann. Um nicht mit Schnappschüssen zu überfluten und nicht zu viel Overhead zu haben (die Aufnahme verlangsamt weiterhin die Leistung, der Export ist asynchron):
IndustrialQueue.json.gz
• Es wird dringend empfohlen, ein Flag zu haben, unabhängig davon, ob Scopes aktiv sind oder nicht (zum Beispiel RecordIndustrialQueueServerVar)
• ServerProfiler hat nach dem Export eine interne Wartezeit von 30 Minuten, in der die Scopes inaktiv sind. Über das Profil konfiguriert. ExportIntervalS, das Intervall kann mit dem Profil zurückgesetzt werden. ResetExportInterval, wenn du nicht abwarten willst.
• Die gesamte Funktion kann über das Profil deaktiviert werden. ImmediateModeEnabled (standardmäßig aktiviert)
• Es ist für Code konzipiert, der in 0,05 ms oder mehr läuft, also nutze es nicht, um etwas Billiges zu profilieren (das Einrichten des Profilers und die Installation von Profiler-Hooks kostet).
Twitch Drops – selbstgebraute 4
Twitch Drops sind zurück!
5. bis 15. Februar!
Schalten Sie ein, um unglaubliche Streams von einigen unserer liebsten aufstrebenden Creator in der Rust-Community zu sehen! Sichere dir unbedingt deine Drops nach dem Anschauen dieser fantastischen Creator auf Twitch.
Synchronisation
Sparen Sie 50 % auf Rust
Ahoi! Um die lang erwartete Veröffentlichung des Naval Updates zu feiern, ist Rust jetzt für eine begrenzte Zeit zum halben Preis erhältlich! Und schenke es einem Freund, damit neue Crewmitglieder an Bord kommen!
Hol es dir von Steam