NEWS

Imprimé et poli

News officielle Rust par Facepunch

Imprimé et poli
OFFICIEL

Refonte du plan

Les établis ne nécessitent plus de fragments de plans pour être fabriqués, et la ferraille n’est plus utilisée dans les arbres technologiques. À la place, nous introduisons trois niveaux de plans ; fragments de plans, pages de plans et livres de plans. Ce sont les nouvelles monnaies dépensées pour progresser dans les arbres technologiques. Une pour chaque niveau de l’arbre technologique.

Les objets peuvent toujours être recherchés avec des ferrailles sur la table de recherche. L’accent est beaucoup plus mis sur la recherche, l’échange ou la création d’alliés pour obtenir les objets dont vous avez besoin. Cette partie de Rust a été quelque peu perdue en chemin.

Le thème principal de cette refonte est le changement de difficulté. Le système précédent de fragments de plans causait beaucoup de frictions dans la progression du début de partie, surtout pour les joueurs ayant moins de temps libre. En raison des emplacements d’apparition des fragments de base, passer à un établi niveau 2 pouvait être une tâche difficile. Si vous ne pouviez pas rivaliser, vous n’étiez pas seulement ralenti, vous étiez bloqué. Le plan de niveau le plus bas se trouve désormais dans des sources de butin courantes comme les tonneaux et les boîtes, mais surtout, il peut être amélioré au niveau suivant. Les salles de puzzle et le contenu plus difficile resteront le moyen le plus rapide de progresser.

Les améliorations de l’établi qui affectaient la ferraille utilisée dans l’arbre technologique ont également été retravaillées. Au lieu de réduire la quantité de ferraille utilisée, la mise à niveau de l’établi de récupération a désormais 20 % de chances de ne pas consommer de plan. La mise à niveau de l’établi prototype aura désormais un taux de réussite fixe de 25 %, avec le coût doublé.

Nous ne savons pas exactement comment cela va se dérouler, et nous nous mentirions à nous-mêmes en pensant que la première édition est parfaite. Des ajustements seront faits quand ce sera nécessaire et nous n’attendrons certainement pas aussi longtemps que la dernière fois pour ce moment.

Uzi 9mm

Voici la nouvelle mitraillette emblématique UZI 9mm. Cette arme propose deux modes de tir différents selon la configuration de la crosse. Une fois replie, l’arme est automatique et compatible avec les boucliers. Une fois déployée, l’Uzi devient semi-automatique et gagne en précision accrue. Maintenez le bouton de mode tir pour passer de l’un à l’autre.

Prise en charge de la manette

Le support de la manette est arrivé dans Rust, avec une fonctionnalité de manette désormais disponible dans le gameplay principal via Steam Input.

L’inventaire et l’interface d’artisanat sont gérés par défaut via un curseur de stick, mais il y a un bouton de bascule de la croix directionnelle dans l’écran des nouvelles options de la manette, qui vaut vraiment le coup d’être essayé ! Vous pouvez aussi y trouver plein d’autres réglages pour ajuster la sensation de la manette.

Cette première version offre déjà une expérience assez solide, mais toutes les fonctionnalités ou fonctionnalités n’auront pas encore un support dédié pour les manettes. Je continuerai à ajouter un support supplémentaire au fil du temps, donc si vous sentez qu’il manque quelque chose en particulier, faites-le nous savoir !

REFONTE DU BÉTAIL

Ce patch, l’accent a été mis sur rendre le bétail plus intuitif et moins punitif.

• Vous êtes désormais simplement le propriétaire de la vache si vous l’achetez ou la faites manger à votre abreuvoir, il n’est plus nécessaire de rester près de la vache ou de craindre qu’elle vous oublie sauf pour la guider.

• Les vaches ne meurent plus de vieillesse, et au lieu de mourir de faim, elles s’allongent simplement à 1 PV.

• La durée pendant laquelle une auge peut soutenir un groupe de vaches est désormais indiquée dans l’interface de la mangeoire, similaire à l’entretien.

• Les vaches peuvent désormais manger n’importe quelle nourriture qu’un cheval peut.

• Le surpâturage « broutage nu » a disparu. Avoir assez d’herbe dans votre enclos fera simplement que les vaches mangeront deux fois moins souvent à l’abreuvoir et économiseront de nourriture.

• Afficher tout dans l’interface, propriétaire, statut de grossesse, père et temps de recharge, refroidissement des bouses et du lait/laine...

• Les vaches stockent jusqu’à 3 laits pour réduire la microgestion.

• Suggérer des gènes récessifs avec l’interface utilisateur et l’acheteur PNJ, et aussi les suggérer dans l’interface.

• Le besoin d’espace personnel est simplifié, il mesure simplement la surface de l’enclos et vérifie si suffisamment de vaches peuvent tenir, cela ne devrait pas autant fluctuer et nous devrions avoir la même valeur pour tout le troupeau.

• Les vaches appartenant à des animaux en liberté cessent de se reproduire après 6 ans, les vaches d’intérieur cessent de se reproduire lorsqu’il n’y a pas assez d’espace (par exemple, le besoin d’espace personnel n’est pas complet), les vaches sans propriétaire ne se reproduisent pas

• Les noms des vaches ne sont plus échantillonnés en fonction des ratios linguistiques sur le serveur, les vaches sauvages n’ont pas de nom et, une fois possédées, ont un nom basé sur votre localisation.

• Augmenter la distance de rupture de la tête, et faire en sorte que les vaches reflètent la vitesse du joueur lorsqu’elles sont menées pour permettre de sprinter instantanément.

• Les bugs pouvant empêcher les vaches de manger, l’interface utilisateur incorrecte, pas de collision, ou les têtes traversant les murs ont été corrigés.

• Il y a une nouvelle statistique pour les animaux : le potentiel. Cela mesure le bonheur d’un animal durant son enfance, qui est ensuite verrouillé une fois adulte. Les récompenses sont multipliées par le potentiel, donc s’assurer que vos petits sont heureux est une priorité absolue. Seuls les animaux nés en captivité peuvent avoir du potentiel.

Le plus important, c’est que vous pouvez maintenant montrer à vos vaches et moutons un peu d’amour et de reconnaissance !

animal de compagnie

Cisailles

Faites passer votre ferme de moutons au niveau supérieur avec la nouvelle arme de cisailles. Les cisailles produiront plus de laine et ne peuvent pas blesser le mouton si vous ratez accidentellement la laine et touchez sa peau.

C’est un nouveau plan par défaut qui nécessite un établi de niveau 1 pour être fabriqué.

Phare des profondeurs océaniques DÉVERROUILLER

Le cycle normal des eaux profondes commence désormais une fois le phare réparé. Il s’ouvre immédiatement après la réparation, et le cycle continue alors normalement.

Plusieurs phares partagent tous la même ressource et la même progression, et en réparer un seul les réparera tous.

Les cartes sans phare commencent avec le cycle des profondeurs déjà actives.

Crocodile Pie

Vous pouvez maintenant utiliser toute cette viande de crocodile que vous avez récoltée dans la jungle sur l’établi de cuisson – créer une nouvelle tarte ! La tarte au crocodile intimidera les animaux proches et les fera garder leurs distances.

Cela inclut des animaux communs comme les loups, ours, sangliers, etc., ainsi que les requins et les abeilles. Les béliers et les taureaux ne fuiront pas mais ne vous factureront pas non plus, ce qui en fait un outil utile pour quelqu’un qui installe une ferme d’élevage.

Inclut aussi une version riche avec une durée doublée.

Insert d’armure en laine

Préparez vos moutons, car ce mois-ci inclut un nouvel insert d’armure en laine. Il offre un petit bonus à la protection contre le corps à corps et les projectiles, mais un gros bonus à la résistance au froid, rendant ces nuits froides dans l’Arctique plus faciles à survivre.

Vous le trouverez dans l’arbre technologique de niveau 1 de l’établi.

Bateaux scientifiques du continent

Nous introduisons un rare ensemble de bateaux scientifiques itinérants qui patrouillent dans et autour de l’île principale. Jusqu’à deux groupes entreront sur l’île et patrouilleront les mers pendant jusqu’à une heure avant de partir.

Ces bateaux n’interagiront qu’avec des joueurs équipés (suivant les mêmes règles que l’hélicoptère de patrouille), contrairement aux « événements » traditionnels, ils n’ont ni marqueurs ni notifications sur la carte.

Rafraîchissement du pistolet à clous

Après près de 9 ans dans le jeu, le Nailgun a enfin reçu une mise à jour bien méritée visuellement, apportant un look modernisé à l’une des armes les plus improvisées de Rust.

Cette mise à jour introduit un modèle tout nouveau et très détaillé, des textures en haute résolution et des animations fantastiques qui l’accompagnent, tout en conservant l’aspect improvisé et bricolé pour lequel le Nailgun est réputé.

Corbeaux et mouettes

Des volées d’oiseaux ont été ajoutées dans le cadre d’une petite expansion de la faune.

Des groupes de corbeaux et de mouettes traversent la carte à la recherche de choses qui les intéressent.

À l’intérieur des terres, les groupes de corbeaux seront attirés par les cadavres de toute sorte, tournant au-dessus pour observer un repas potentiel. Les explosions les effrayeront si les nuisibles trahissent votre position.

Des groupes de mouettes grouilleront au-dessus des monuments côtiers et aquatiques lorsque les joueurs seront à l’intérieur. Au bout d’un moment, ils perdront intérêt, certains rats sont un peu trop gros pour qu’ils puissent être mangés...

De plus, dans les monuments côtiers, vous verrez des groupes de mouettes atterrir pour se reposer. Quand quelque chose s’approche, elles sursautent et s’envolent. Gardez un œil sur elles lorsque vous essayez de retrouver une cible. Ces mouettes, contrairement aux volées rapides, peuvent être abattues si vous voulez rester discret.

Animations de rotation sur place

Nous avons ajouté un nouvel ensemble d’animations pour quand un joueur tourne debout. Avant, elles glissaient simplement pendant que vous regardiez autour, ce qui paraissait assez daté. Il a fallu beaucoup de temps pour ajuster les timings, les zones mortes et d’autres paramètres afin que ces tours soient réactifs. Beaucoup d’autres jeux ont l’avantage de limiter la vitesse de rotation d’un joueur, ce qui rend ces tours beaucoup plus contrôlés, alors que dans notre cas, nous devions les garder 100 % fidèles aux mouvements et aux rotations rapides du joueur. Nous avons essayé plusieurs approches différentes, comme utiliser IK pour les mouvements de pieds, qui semblait très robotique malgré beaucoup de randomisation, nous avons aussi essayé une approche hybride entre animations et IK, mais au final, nous avons utilisé uniquement des animations.

Je pense qu’il y a encore beaucoup de façons de les améliorer et nous continuerons à le faire dans les futurs patchs.

Escaliers miroirs

Nous avons ajouté des versions miroir des escaliers en L et en U.

Vous pouvez les retourner avec SHIFT + R pendant le déploiement, ou avec le marteau dans les 10 minutes suivant leur position.

Inventaire de départ de voitures modulaires

Les voitures modulaires générées aléatoirement commenceront désormais avec la moitié de leurs moteurs remplis de pièces de mauvaise qualité. Nous avons trouvé que mettre une voiture en marche était un peu trop frustrant. Ainsi, vous devrez quand même fournir quelques pièces, mais cela devrait demander un peu moins de travail.

Pour éviter que les pièces ne soient simplement volées pour être recyclées, ces pièces préremplies sont désormais verrouillées jusqu’à ce qu’une voiture soit chargée sur un élévateur pour la première fois.

Améliorations des bateaux Scientist

Il y a eu plusieurs améliorations sur les bateaux scientifiques ce patch. Un nouveau système de déplacement, un système de ciblage et plusieurs améliorations des tourelles des vedettes PT.

Les bateaux scientifiques peuvent désormais mieux éviter et naviguer à travers les obstacles, ainsi que suivre et changer de cible plus fluidement.

Déplacement et ciblage -

Si le conducteur est tué, alors un de leurs collègues scientifiques prendra la relève en tant que nouveau conducteur.

Échange de sièges -

Les tourelles des PT Boats ont été réécrites de toutes pièces, et elles sont désormais beaucoup plus réactives. Ils disposent de leurs propres modèles dédiés, ainsi qu’un nouveau système de tir.

Tourelles de vedettes PT -

Nouvelles animations explosives de largage et d’attache

Nous avons mis à jour les animations lors du largage et de l’attachement d’objets de type grenade – auparavant, ils partageaient tous les mêmes animations de lancer.

Vous remarquerez aussi ces animations mises à jour la prochaine fois que vous surprendrez quelqu’un en train de coller une grenade sur votre base, car elles s’appliquent aussi bien aux modèles de joueurs à la troisième personne qu’à la première personne.

Changements notables

Extraction de graines

Les baies disposent désormais d’une option « Extrait » pour retirer les graines sans les manger.

Icône de caisse piratable

L’icône de la carte de caisse verrouillée piratable a été mise à jour pour refléter le modèle 3D.

Buff DPV

Consommation de carburant plus faible, aucune perte d’état au moment du ramassage, accélération plus rapide.

Petit arbre frappe pardon

Les petits arbres sont désormais plus faciles à toucher.

Marqueurs de carte traînables

Les marqueurs de la carte peuvent être glissés en maintenant le bouton central de la souris.

Buff de mitraillettes artisanales

La mitraillette artisanale inflige maintenant un peu plus de dégâts.

Couleur du chanvre

Ajout d’un réglage de couleur d’accessibilité pour le bouton floral des plants de chanvre.

Renommage d’animaux

Les joueurs peuvent désormais renommer leur bétail, ainsi que leurs chevaux.

Conversations téléphoniques des PNJ

Nous avons ajouté un support pour initier des conversations téléphoniques, dans le style des conversations PNJ existantes. Il y a 4 nouveaux numéros de téléphone disponibles dans l’annuaire, chacun lançant une nouvelle conversation – ce sont toutes des conversations distinctes de celles que vous pouvez initier avec les PNJ en personne. Ces nouvelles conversations fournissent :

• Une prévision météorologique globalement fiable

• L’état actuel du réseau électrique

• Le compte à rebours de l’événement du vendeur itinérant

• Le nombre de chambres disponibles

Arbres fruitiers

Les pommes et les noix de coco ont désormais une faible chance d’apparaître sur certains chênes et palmiers. Cela devrait offrir aux joueurs plus d’occasions de trouver des pommes pour cuisiner de délicieuses tartes aux pommes et des noix de coco afin d’étancher leur soif en explorant les îles profondes !

Veillez à récolter les fruits avant d’abattre les arbres, car cela réduirait considérablement le rendement, surtout pour ces pommes délicates.

Corrections de rampes

Certains désagréments de longue date concernant les rampes ont été corrigés.

Les rampes ne sont plus bloquées à travers les toits par des rampes déployables ou autres, y compris lors d’une mise à niveau.

Ils devraient aussi sembler plus faciles à poser sur les fonds de teint.

Incohérences de construction des skins

Nous avons corrigé des incohérences involontaires entre les apparences du bâtiment.

Les surplombs de toit sur certains apparences pourraient vous empêcher de placer des blocs de construction à côté. Les surplombs ne bloquent désormais que les éléments déployables, quel que soit le skin.

Les surplombs carrés sur les côtés du toit ne bloquent plus les fondations placées à côté.

Enfin, les cadres ont désormais les mêmes collisionneurs sur chaque peau de même grade, de sorte que les toits triangulaires ne sont plus obstrués par des cadres en pierre selon leur orientation.

Réparation des dégâts d’éclaboussures des planchers/cadres en triangle

Pendant des années, les cadres triangulaires ont subi des dégâts d’éclaboussures d’explosifs traversant les murs dans certaines situations, selon leur position.

On a réparé ça.

Performances

Nous savons que le jeu n’est pas là où il devrait être en termes de performances.

L’optimisation est une tâche sans fin, chaque mise à jour apporte des améliorations. Parfois, nous faisons des erreurs et le nouveau contenu grignote nos efforts.

Ce mois-ci est rempli d’optimisations. CPU, mémoire, réseau... Nos données de staging montrent de bonnes améliorations :

• Le framerate médian pour tous les joueurs est ~10 % plus élevé

• ~1,6 Go de mémoire en moins au total

• Nous avons poursuivi les pires saccades : tirer, charger une base, transporter du fret

• La collecte des ordures a lieu deux fois moins souvent (toutes les ~12 minutes au lieu de toutes les ~6)

• Jusqu’à 25 % de trafic réseau en moins sur un serveur de 500 joueurs

Les articles ci-dessous détaillent les principales améliorations à venir dans cette mise à jour. D’autres seront publiées dans les mois à venir.

Performance - Privilège de construction

Le privilège de construction a toujours été une gourmande en performance. Chaque fois que vous placez un bloc, déployez quelque chose ou vous déplacez autour d’une base, le jeu vérifie quel armoire à outils contrôle cet endroit.

Jusqu’à présent, chaque vérification lançait une requête physique cherchant chaque bloc de construction à proximité pour trouver le privilège de bâtiment le plus proche. Plus la base était grande, plus elle devenait lente. Dans une grande base, une seule vérification pouvait prendre jusqu’à 5 ms.

Nous avions déjà un système de cache en place, mais c’était quand même cher. Pour le serveur et le client.

Le jeu maintient désormais une grille de blocs de construction qu’il peut vérifier à bas prix au lieu de lancer la requête physique à chaque fois. Dans cette même grande base, un test est passé de à sous , sur le serveur et le client, avec exactement les mêmes résultats qu’avant.

5,7 ms

0,02 ms

Performance - Effets de tir de canon

Nous avons travaillé à réduire les baisses de framerate notables lors des tirs d’armes à feu.

Tirer avec une arme peut provoquer de petits accrocs, surtout la première fois après avoir rejoint un serveur.

• Réparer un attelage jusqu’à ~1 ms lorsqu’un son était coupé, ce qui arrive souvent lors du tir

• Correction des éclairs de bouche déclenchant un contrôle moteur lent jusqu’à ~7 ms

• A examiné la distance à laquelle nous éliminons les effets

• Tous les effets de l’arme sont désormais préchauffés en quantité suffisante (éclairs de bouche, bruit de tir, impacts de balles, etc.)

Préchauffer plus d’effets ne coûtait pas de mémoire au total : on gardait 100 copies de chaque arme et outil à lancer prêtes, maintenant 3. C’est moins de mémoire, même avec les effets supplémentaires de l’arme.

~30MB

Performance - Charge de base

Quand vous entrez dans une grande base et que vous entrez dans sa portée réseau, cela génère des milliers d’entités en même temps. Chaque déploiable exécute son propre code, les canalisations industrielles sont en cours de reconstruction, les systèmes LOD et de batching sont occupés, beaucoup de choses se passent en même temps.

Nous avons mis beaucoup d’efforts pour réduire les petits obstacles visibles lors du chargement d’une base.

• Diverses entités qui activent ou désactivent les choses selon leur état apparaissent maintenant 10 fois plus vite (~26ms -> ~2ms pour 248 d’entre elles)

• La génération de maillage industriel de tuyaux se fait désormais hors filetage principal

• Les dispositifs déployables les plus utilisés sont désormais regroupés (adaptateurs de stockage, convoyeur, éoliennes...)

• Le système LOD répartit désormais son travail sur plusieurs images lorsqu’une partie dense d’une base doit être mise à jour, au lieu de tout faire d’un coup (~15ms -> ~1ms pour les pires images)

• Les serrures à code, les adaptateurs de stockage et d’autres entités sont désormais traités comme statiques sans bouger, auparavant tout ce qui était connecté à un parent était automatiquement supposé être en mouvement permanent, prenant plus de travail que nécessaire

• Une douzaine de bugs supplémentaires de LOD et de culling corrigés, comme des lumières et des particules restant visibles à n’importe quelle distance après le chargement de la base

• Correction des blocs de construction qui restaient bloqués sans lot, ce qui les rendait plus coûteux à rendre

Tout cela rendra le chargement et le déplacement des bases non seulement un peu plus rapides dans l’ensemble, mais surtout en améliorant les faibles FPS de 1 % et en réduisant les pics de latence.

Plus lisse

Nous travaillons aussi activement sur un système d’occlusion de base. Cela va essentiellement arrêter de charger quoi que ce soit à l’intérieur d’une base jusqu’à ce que vous puissiez le voir. Ces optimisations restaient nécessaires car l’occlusion de base ne retarde que le moment où tout est chargé.

Performance - Éviter les allocations

Nous essayons généralement déjà d’éviter autant que possible d’allouer de la nouvelle mémoire pendant le jeu, car tout ce qui se trouve sur le tas doit être nettoyé par le rambeau-ordures plus tard, ce qui peut provoquer des pics de latence.

Ce mois-ci, j’ai parcouru la base de code pour trouver des endroits où les choses pourraient être faites plus efficacement, que ce soit en utilisant notre système de pooling d’objets, ou simplement en programmant un peu plus intelligent (et parfois moins joli).

La plupart de ces éléments étaient dans des systèmes plus anciens, par exemple la mise à jour du texte à chaque image lors de la consultation des plantes, les icônes d’inventaire qui se rafraîchissent même cachées, les marqueurs de cartes du sac de couchage qui reformatent leurs minuteries, etc.

Chaque gain est faible, mais une douzaine s’additionne, donc le GC tourne moins souvent et ces pics de lag sont moins fréquents.

Performance - Système sonore

En plus de la compression audio, nous avons également travaillé à réduire la surcharge causée par le système sonore.

• Réparer un attelage pouvant atteindre ~1 ms lorsqu’un son était coupé (comme mentionné dans le poste de tir ci-dessus)

• Occlusion : étouffer les bruits derrière les murs est désormais plus de 10 fois moins cher en dehors d’une base

• Allocations : les sons n’allouent désormais presque aucune mémoire lors de la lecture, ce qui signifie moins de collecte de déchets

Performance - Mémoire des profondeurs marines

Jusqu’à présent, tout ce qui se trouvait en haute mer était chargé quand tu rejoignais un serveur. Cela restait gravé dans la mémoire pendant toute ta session, même si tu n’y avais jamais navigué.

Le contenu en haute mer n’est désormais chargé que lorsque vous passez par le portail et est déchargé à nouveau une fois que vous repartez.

En dehors des grandes profondeurs de mer, cela permet de sauver autour de .

~260 Mo de RAM

Les serveurs moddés qui génèrent du contenu en haute mer sur l’île principale fonctionnent toujours. Le jeu le charge dès qu’il est nécessaire et le garde pour le reste de la session.

Performance - Textures de terrain

Dans le cadre des enquêtes de mémoire ce mois-ci, nous avons remarqué qu’un nombre surprenant de textures de terrain étaient chargées. Cela incluait plusieurs niveaux de qualité pour le continent et plusieurs niveaux de qualité pour les profondeurs marines, tous chargés simultanément. Nous ne déchargeons généralement pas les assets pendant que le jeu tourne, car le coût de rechargement des ressources en mémoire est mauvais pour les performances (cela provoque généralement des saccades lors des déplacements dans le monde), mais dans ce cas, la transition en profondeurs a un écran de chargement, ce qui nous permettrait de nous en sortir.

Les joueurs devraient désormais avoir seulement leur niveau de qualité actuel chargé pour l’environnement actuel, ce qui a permis d’économiser 138 Mo au niveau de qualité le plus élevé et devrait économiser encore plus pour les niveaux de qualité inférieurs.

Performance - Lampes torches et lasers

Les lampes torches et les lasers ont tous deux reçu des optimisations similaires, les lasers étant un peu plus complexes mais souffrant toujours du même problème. Comme nous utilisons Unity, les deux scripts reposaient sur la mise à jour du laser/lampe torche à chaque image, et même si ces mises à jour par image étaient assez bon marché, les faire tourner pour chaque instance s’additionne quand on en a 100.

Les lampes torches étaient en fait assez simples, nous travaillions à la fin de chaque image, pour chaque lampe, ce qui aurait pu être fait sur le shader. Le code que nous utilisions à chaque image était minuscule, donc nous payions surtout le coût de son existence. Les laserbeams avaient déjà un problème similaire par le passé et ont été remplacés par un système qui ne mettait à jour que X nombre de lasers par image, nous aurions pu faire pareil ici mais cela aurait juste retardé la résolution du problème plus tard. La solution la plus simple était de faire tous les calculs dans le shader.

Pour les laserbeams, c’était un peu plus compliqué, nous avions déjà un système pour ne mettre à jour certains lasers que par image sous un budget de 0,25 ms, mais cela nous a conduits à ne mettre à jour que 5 à 10 lasers par image. Nous ne pouvions pas simplement faire la même réparation que les lampes torches, les lasers sont un peu plus compliqués car ils se réduisent à ce qu’ils reçoivent finalement en raycast. La solution se résumait essentiellement à regrouper les raycasts pour tous les lasers en même temps plutôt que de les vérifier un par un, mettre à jour le point visuel à la fin du raycast, puis reconstruire un maillage pour chaque laser sur l’écran. Nous avons essayé des solutions comme simplement agrandir les quads avec des opérations de transformation en lots, mais au final tout a été plus lent que de simplement créer un nouveau maillage à chaque image. La nouvelle solution peut gérer 5 fois plus de lasers à moitié du budget de l’ancienne. ( )

0,125 ms

performance - Mémoire d’animation

Nous avons ajouté de nombreuses nouvelles animations le mois dernier pour tous les nouveaux animaux, ce qui nous a poussés à examiner les réglages de compression d’animation à l’échelle du projet. Nous avons constaté qu’appliquer des réglages de compression conservateurs aux clips d’animation d’animaux nous permettait d’économiser pas mal de mémoire sans différence visuelle perceptible. Cela s’applique désormais à toutes les animations animales et nous avons économisé environ 100 Mo de mémoire.

Il pourrait y avoir plus d’améliorations dans les animations des joueurs, mais cela nécessitera plus d’investigations car nous ne voudrions pas perdre la fidélité du modèle du joueur.

Performance - compression audio

Nous avons pas mal d’audio dans Rust - nous avons récemment passé plus de 0,5 Go d’audio chargé sur le client, donc j’ai regardé quels changements nous pouvions apporter. Dans beaucoup de cas, nous utilisions de l’audio sans aucune compression, ce qui prenait pas mal de place en mémoire. En appliquant une compression vorbis très conservatrice, nous avons pu réduire la consommation totale de mémoire audio de 84 % sans perte de qualité audible. Cela a permis d’économiser environ de la mémoire.

470 Mo

Performance - Skins d’atelier

Quand nous sortons de nouveaux skins, le jeu les télécharge depuis le Steam Workshop dès que vous les découvrez.

Chaque mois, nous regroupons les skins nouvellement sortis dans les fichiers du jeu pour que vous n’ayez plus à les télécharger.

Une fois téléchargées, leurs textures étaient envoyées à votre GPU, mais une copie complète était aussi conservée dans une RAM que rien n’utilisait jamais. Cette copie est maintenant supprimée dès que possible. Avec 22 skins de workshop chargés, la RAM est sauvegardée.

~300MB

Cela devrait avoir un impact plus important sur les serveurs moddés utilisant plus de skins non approuvés du workshop que dans le vanilla. Sur le même sujet, nous travaillons sur des moyens de supporter le streaming de textures pour ces skins téléchargés, en réduisant l’utilisation de la VRAM.

Performance - Plus de textures de terrain

Ce mois-ci, j’ai examiné nos textures de terrain actives et j’ai trouvé plusieurs canaux et textures désormais inutilisés ou remplaçables. Par exemple, avec Rust Render Pipeline, nous pouvons utiliser de meilleures techniques pour découper de fines trous dans le terrain, tandis que dans l’ancien système, nous avions besoin d’une toute nouvelle texture d’espace écran (qui a disparu). Il devrait y avoir quelques optimisations mineures des performances des GPU de terrain grâce à une meilleure utilisation des textures + mise en cache et une meilleure géométrie LOD pour des niveaux de qualité inférieurs. Au total, vous devriez voir une amélioration de la mémoire autour de la mémoire

~115 Mo

Performance - démarrage du serveur

Les serveurs redémarrent maintenant plus vite !

Le premier problème, c’est que nous avons passé la majorité du temps à reconnecter toutes les fondations et murs sur un serveur après avoir chargé la sauvegarde. Nous pouvons en fait sauvegarder et réutiliser les connexions lors d’un redémarrage, économisant 3 minutes ! Même idée pour la trajectoire du cargo : la réutiliser permet d’économiser encore 20 secondes.

Le deuxième problème était que certaines parties du code « chargement de sauvegarde » étaient mal adaptées avec un nombre élevé d’entités. Corriger cela a sauvé encore 1m30s.

Cela fait passer les serveurs à plus forte population de 10 minutes à > 2 minutes pour redémarrer.

Performance - Génération de cartes

La génération procédurale de cartes est une pierre angulaire de Rust. Cependant, à mesure que Rust a grandi, le temps qu’il prend a aussi augmenté. Ce mois-ci, j’ai passé un peu de temps à optimiser le processus de génération de cartes, tout en gardant les mêmes résultats. L’objectif principal ici était de faire la même chose, mais plus rapidement.

Après avoir amélioré l’érosion et le placement des falaises/rochers, il faut maintenant générer la carte pour la première fois, tout en obtenant le même résultat.

presque deux fois plus vite

Performance - Aplatissement préfabriqué

Dans Unity, un préfab est un modèle réutilisable pour un objet de jeu. C’est ainsi que nous sauvegardons nos assets puis les chargeons dans le jeu – que ce soit une caisse de butin, un animal ou un outil déployable, pratiquement chaque objet dans Rust est un préfab.

Lorsque nous créons ces préfabs, ils contiennent souvent des paramètres supplémentaires, des composants et des objets de jeu vides dont le seul but est de maintenir leur hiérarchie organisée et maintenable.

Mais en jeu, à l’exécution, tout cela n’a pas d’importance et nous avons juste besoin que les données soient emballées aussi efficacement que possible pour les performances, donc il y a différentes étapes qui se passent pendant la compilation pour transformer le préfab et gérer le démontage des éléments inutiles.

Ce mois-ci, nous avons développé cela avec un nouveau mécanisme visant à aplatir la hiérarchie des préfabs, permettant ainsi de supprimer complètement de nombreux autres objets de jeu.

Le principal gain ici vient des blocs de construction. Chaque instance contenait auparavant des objets de jeu supplémentaires qui n’étaient pas nécessaires à l’exécution, une base classique par exemple en avait 20, qui après ce changement sont tous supprimés.

Sur un serveur peuplé, ces objets de jeu inutiles étaient pris en compte sur le serveur, ce qui se traduisait directement par .

~43 % du total des objets

-1,44 Go d’utilisation de la mémoire

PERFORMANCES - NOUVEAU NAVMESH

Les blocages du navmesh sur le fil principal causés par les vaisseaux fantômes et les mégabases ont été atténués.

Les vaisseaux fantômes n’étaient pas construits de façon asynchrone parce qu’ils bougeaient, la construction de navmesh pour eux ne repose plus sur des requêtes physiques et se contente d’itérer via des collisionneurs en SPCE local.

La reconstruction du navmesh a été limitée pour que les tuiles soient construites une par une, et si on dépasse le budget de 1 ms pour la trame, cela s’arrête jusqu’à la frame suivante. Certaines tuiles dans certaines mégabases prennent cependant bien plus de 1 ms, donc la répartition par case ne suffit pas.

Nous pouvons maintenant reporter la construction à la prochaine trame en milieu de tuile, en les divisant en 4 blocs et en itéreant les collisionneurs un par un, en vérifiant le budget à chaque étape.

Sauvegarder les navmeshes a été déplacé vers un thread en arrière-plan, ce qui rend le poids beaucoup moins important sur le thread principal.

L’ancien navmesh qui peut encore être utilisé avec l’arg de démarrage -useOldNavmesh sera supprimé au prochain patch.

Performance - optimisation réseau

Ce mois-ci, nous avons réduit la surcharge réseau. Réduire cela est important pour plusieurs raisons : cela donne aux serveurs plus de bande passante pour jouer (ce qui pourrait augmenter le nombre de joueurs), ainsi que la réduction des envois pour permettre au serveur de mieux gérer les cycles CPU. Quelques réductions notables ont été réalisées, totalisant une réduction moyenne d’environ 100~ joueurs. Avec le nombre de joueurs, ces économies augmenteront de façon exponentielle.

Réductions générales

~270 KB/s

LODs réseau

Nous déployons maintenant un nouveau système pour envoyer moins d’informations réseau sur les entités éloignées. Cela a beaucoup de sens : puisque les entités éloignées n’ont pas besoin d’être mises à jour aussi fréquemment que celles à proximité. Lors des premiers tests, nous rapportons une réduction d’environ 30 % du trafic réseau de position globale.

Les LOD réseau peuvent être contrôlés avec deux convars :

• net.position_lod (0 = désactivé pour tout, 1 = uniquement pour les entités (PNJ, animaux, autres), 2 = 1 + entités du réseau global (avion cargo, cargo, chinook)

• net.position_lod_players (0 = désactivé pour les joueurs, 1 = les joueurs sont inclus mais seulement à taux moyen ou plein, 2 = même configuration que les entités)

Les LODs réseau seront activés sur quelques serveurs FP sélectionnés pour des tests avant d’être déployés correctement à la mi-mois.

performance - Batching réseau

Résumé : jusqu’à

-25 % de bande passante

Notre bibliothèque réseau RakNet a étonnamment bien fonctionné malgré les abus que nous lui avons subis. Nous pouvons envoyer jusqu’à 500 000 paquets par seconde à 800+ lecteurs avant qu’elle ne commence à se plaindre ! Cependant, ce n’est pas parce que nous pouvons que nous devrions...

Les paquets individuels font plus qu’appliquer une charge supplémentaire à la couche réseau : nous payons également un surcoût de chiffrement de 22 octets pour chaque paquet que nous envoyons. Dans certains cas, la surcharge du chiffrement était supérieure à celle des données réelles que nous envoyions !

Ce mois-ci, j’ai regroupé les paquets avant qu’ils ne soient envoyés aux joueurs, ce qui réduit significativement la surcharge liée au chiffrement. Cela a réduit le trafic réseau de 25 % grâce à la capture d’un serveur de 500 habitants. Bonus : cela réduit aussi la charge sur la couche réseau.

Cette fonctionnalité est activée par défaut et peut être activée par les serveurs via les « batchpackets » de ConVar

Performance - Modifications PhysX pour le cargo

Dans notre implémentation personnalisée de physx, plusieurs structures d’arbres sont utilisées pour accélérer à la fois la détection de collisions et les requêtes physiques. Elles sont divisées en deux : une pour les objets qui bougent, et l’autre pour ceux qui ne bougent pas.

Le problème avec Cargoship est que, pour diverses raisons, nous ne pouvons pas le rendre vraiment « dynamique » en ce qui concerne la physique. Cependant, cela signifie que chaque fois que Cargoship est actif, il doit effectuer des mises à jour plus lentes et plus coûteuses de ces structures arboricoles statiques. Cela nuit aux performances tant pour les clients que pour le serveur.

Nous avons maintenant une solution personnalisée pour cela : tout statique qui bouge trop est promu (ou rétrogradé, c’est une question de perspective) dans un arbre tertiaire. En pratique, cela inclura certaines choses comme les portes, mais en général c’est rempli uniquement de collisionneurs cargoship. Sur les clients, nous nous attendons à ce que cela remarque des gains pour des choses comme les voitures, qui sont dynamiques sur le serveur mais gérées comme des statiques mobiles sur le client.

Les pics que vous pouvez voir ci-dessus apparaissent lorsque le cargoship est actif sur un serveur, on voit que les pics ont considérablement diminué après que la mise à jour ait été poussée au 22/10 à 12h00 en interne.

Performance - Emplois 4 désormais stables

Le dernier niveau Convar, 4, est désormais considéré comme stable et est livré par défaut. Les derniers bugs notables ont été découverts et corrigés, et nous l’utilisons sur nos serveurs officiels depuis 3 semaines.

UsePlayerUpdateJobs

Pour rappeler rapidement, UsePlayerUpdateJobs paralléllise le travail lié au traitement des joueurs. Le nouveau niveau, 4, parallélise encore davantage l’occlusion serveur et déplace la sauvegarde de la file réseau des joueurs vers le pool de threads. Cela aide à mieux évoluer les performances des serveurs à haute population – un serveur communautaire a rapporté une amélioration de 30 % du temps d’image à 1 000 joueurs (10 images par seconde - > 13 images/seconde ou 100 ms/image -> 70 ms/image).

Au prochain patch, je prévois de supprimer le mode Jobs 3 et le code associé.

Nuages volumétriques toujours activés

Nous avons mis à jour les paramètres graphiques pour supprimer l’option de désactiver les nuages volumétriques.

Parallèlement à ce changement, nous avons identifié et résolu un problème de performance avec les clouds volumétriques. Leurs performances devraient désormais être au même niveau que les anciens clouds des panneaux publicitaires.

Notre objectif depuis le départ a été que les clouds volumétriques remplacent complètement les clouds des panneaux publicitaires hérités. La suppression permet également une meilleure cohérence visuelle entre les joueurs, le matériel marketing, etc.

Scrap King Building Skin DLC

Devenez roi de la ferraille avec ce dernier skin pour le niveau Sheet Metal Building.

Construit à partir des décombres de batailles sans fin. Verrouille une porte, soude les murs et prends le trône.

Fais juste attention au tétanos.

Le skin de bâtiment Scrap King peut être acheté en jeu ou auprès de la

Magasin d’objets Rust Steam

Changements softcore

Quelques changements au softcore ce mois-ci.

• système de cadavres déployables retiré

• Limite de TC de 6 places par joueur

Le système de cadavres déployables servait à protéger la moitié de votre butin lors des raids, ce qui facilitait le rebond. Malheureusement, c’est devenu trop une fois que nous avons ajouté la protection 2x rassemblement et hors ligne, donc nous l’avons retiré pour l’instant.

La limite de TC a été ajoutée pour décourager les joueurs de spammer des TC pour revendiquer de grandes zones sur la carte. Nous pensons que cela nuit à l’objectif du softcore en mode casual et avons estimé qu’il était sujet à des abus pendant la fenêtre de raid hors ligne, quand les joueurs pouvaient spammer des TC qui ne pouvaient être détruits que le lendemain.

Demoui2

Depuis ce patch, la nouvelle interface de démo est activée par défaut. Vous pouvez toujours activer l’ancienne via le convar.

demo.oldui

Nous l’utilisons en interne pour les bandes-annonces et les clips sur les réseaux sociaux, et même s’il y a encore des gens qui préfèrent l’ancienne interface, pour la plupart des nouveaux utilisateurs, c’est l’outil plus facile à apprendre.

Pour certaines améliorations récentes, vous pouvez désormais créer des projecteurs en mode bac à sable pour éclairer vos scènes. Les lumières ont également reçu de nouveaux gadgets et la possibilité d’animer leur position/rotation.

Depuis ce patch, vous pouvez aussi exporter des démos en vidéos. Cela nécessite d’avoir FFmpeg configuré dans votre PATH, une fois détecté vous pouvez exporter en utilisant n’importe lequel des formats vidéo du menu déroulant. Selon la vitesse de votre stockage, exporter en format vidéo est bien plus rapide que d’enregistrer soi-même avec un programme externe et cela vous permet d’utiliser des fréquences d’images plus élevées (jusqu’à 600fps) pour le ralenti.

Nouveau Atelier Skinnable : Pistolet à clous

L’atelier de ce mois-ci coïncide avec une refonte d’armes ! Le tout nouveau pistolet à clous est également disponible pour la communauté du dépecage.

Que vous soyez un maître artisan ou simplement aimez tirer des clous sur les ours, autant le faire avec le matériel le plus récent. Laissez les idées à la communauté du dépecage !

Pour créer votre propre skin de Nailgun, rendez-vous dans l’atelier du jeu et trouvez l’objet de l’arme Nailgun. À partir de là, vous pouvez télécharger les fichiers de maquettes et ajouter vos propres matériaux.

Retrait du support Mac Intel x86

À partir de ce patch, nous ne proposons plus de versions x86 pour les Mac basés sur Intel. Seuls ARM64 / Apple Silicon seront pris en charge à l’avenir.

Nous avions déjà les exigences minimales définies depuis de nombreuses années, donc cela ne devrait pas être une surprise. Le principal facteur est le manque de support des pilotes graphiques pour ces anciens Macs, ce qui commence à poser de plus en plus de problèmes.

Mise à jour anti-triche

Nous avons partagé quelques statistiques sur les bannissements, les signalements et les comportements généraux de triche. Bien que nous conservions encore une mise à jour complète pour janvier, nous avons quelques détails à partager en attendant.

En janvier

Scripting

Le scripting est un problème de longue date dans Rust et reste un problème plus large dans les jeux de tir, la détection et l’application peuvent être difficiles, et ils perturbent gravement l’équilibre du jeu, donnant aux joueurs un avantage injuste lors des fusillades. Nous sommes heureux de partager que, suite à certains développements récents, nous sommes mieux placés pour le scripting de combat.

Au début de cette suppression, nous allons déployer des bannissements aux utilisateurs de fournisseurs de scripts publics et privés, totalisant plus de comptes ! Nous espérons que cela rappelle que nous avons une politique de tolérance zéro envers les logiciels tiers qui offrent un avantage injuste.

3,000

Temps de jeu du tricheur

Nous avons récemment recalculé certains de nos indicateurs clés pour déterminer combien de temps un tricheur reste en jeu (en moyenne), et nous sommes heureux de partager que nous avons continué à faire baisser ce chiffre d’année en année ; nos calculs précédents, que vous avez peut-être vus dans certains de nos anciens articles de blog sur ce sujet, exagéraient la valeur.

Bien qu’il soit agréable de partager un grand nombre de bannissements que nous avons appliqués, le temps de jeu des tricheurs est l’un des indicateurs les plus importants sur lesquels nous nous concentrons. Rust est unique en ce sens que la triche impacte nos joueurs plus que la moyenne des parties : si vous mourez, vous risquez de perdre des heures de progression, si vous êtes pillé, vous perdez des jours ou des semaines de progression. C’est pourquoi il est important de minimiser le temps que les tricheurs passent en jeu et nous espérons que vous avez remarqué un changement positif ces derniers mois.

Rust Premium - Bientôt disponible

Rust Premium arrive, donc nous voulions partager quelques informations sur ce qu’est ou n’est pas Premium. Tout d’abord, Rust Premium n’est pas un Battlepass. Il n’y aura pas de progression bloquée ni de piste de récompense, ni de façon définie de jouer au jeu.

Rust Premium sera un service mensuel payant qui propose des skins exclusifs en jeu et quelques avantages premium.

• Les récompenses mensuelles incluront des skins de haute qualité pour les objets déployables, les vêtements et plus encore, ainsi que des objets à collectionner et autres objets.

• Les avantages incluront des fonctionnalités supplémentaires utiles hors du gameplay tout au long du jeu.

Nous sommes très enthousiastes à vous présenter Premium bientôt, alors restez à l’écoute pour plus de détails.

Modding - Rechargement de la carte

Il y a environ un an, j’enquêtais sur des problèmes liés à des clients qui recevaient des NRE dans tous les endroits différents – c’était un peu sporadiques et n’avait pas de sens. Comme si quelqu’un avait pris un fusil à pompe sur l’état d’exécution du client.

À peu près à la même époque, un développeur/propriétaire de serveur de mods m’a partagé quelque chose d’incroyable : ils ont trouvé un moyen de changer la carte sur le client, voire de forcer le chargement à quelque chose de différent de ce que le serveur utilise. Et ça a semblé fonctionner.

Il s’avère que ça fonctionnait mais laissait le client lourdement boitant. Nous ne pouvons pas vraiment nous permettre ces problèmes aléatoires, donc nous faisons quelques changements :

• L’ancienne méthode de forcer le chargement de la carte client est obsolète et sera bloquée en décembre. Pour plus de complétude, l’ancienne méthode consistait à envoyer un message « Approuvé » au client avec des informations potentiellement différentes sur le monde

• Nouvelle méthode, « CL_LoadMap » RPC sert désormais comme un mécanisme « béni » permettant au serveur de contrôler ce qui est chargé sur le client. J’ai laissé un exemple de son utilisation dans ServerMgr.ChangeLevelFor

En ce qui concerne ce qui se passe avec CL_LoadMap, c’est essentiellement la même chose que l’ancien flux approuvé :

• détruit toutes les entités (joueurs, conteneurs, objets, PNJ, etc.) sur le client, sauf le joueur

• réinitialise le joueur (objets, convars)

• recharge la scène, ou en change une nouvelle

• charge la nouvelle carte et exécute sa configuration

• envoie un rpc ClientReady au serveur

Cela devrait suffire pour divers besoins de modding. Je vais chercher quelques bugs restants.

Serveurs Facepunch

Nous apportons quelques modifications à nos serveurs ce mois-ci avec une nouvelle addition, une augmentation de la population et une certaine consolidation.

Nouveau

• [EU Est] Facepunch Softcore 1

Population maximale augmentée

• [EU Est] Facepunch 1

• [EU] Facepunch 1

• [EU] Facepunch Premium 1

• [US Est] Facepunch Premium 1

Retraite

• [EU] Facepunch 12

• [EU] Facepunch 13

• [EU] Facepunch 14

• [EU] Facepunch Large 2

• [EU] Facepunch Small 4

• [EU] Facepunch Small 5

• [EU] Facepunch Small 6

• [EU Est] Facepunch Premium 3

• [EU Est] Facepunch Premium 4

• [US Est] Facepunch 5

• [US East] Facepunch 6

• [US] Facepunch Small 2

• [US] Facepunch Small 3

• [US West] Facepunch 3

• [US West] Facepunch 4

• [US West] Facepunch Premium 3

• [US West] Facepunch Premium 4

• [US West] Facepunch Premium 5