s&box-france
Toutes les actualités s&box
Facepunch·

Territoire Familier

La mise à jour d'aujourd'hui introduit la première version de Steam Workshop pour les jeux, ainsi que de nombreuses améliorations de performance et de nouvelles fonctionnalités.

Territoire Familier

Steam Workshop pour les jeux

Avec la mise à jour de ce soir, nous lançons la première version de Steam Workshop pour les jeux. Beaucoup de joueurs ont regretté la familiarité du Steam Workshop, avec cette mise à jour, nous le ramenons.

La découvrabilité est toujours soutenue par notre propre atelier, c'est un processus graduel auquel nous donnerons aux développeurs le temps de s'adapter. Finalement, lorsque nous migrerons complètement vers le Steam Workshop, les jeux et cartes qui ne sont pas encore publiés ne seront pas accessibles. Nous encourageons donc les développeurs à republier.

N'hésitez pas à discuter davantage de cela sur nos forums, où nous décrivons tout changement de flux de travail pour les développeurs essayant de publier sur l'atelier maintenant.

Changements de Récompenses

Nos récompenses hebdomadaires étaient basées sur les temps de jeu et les jeux joués. C'est terminé.

Dans le nouveau système, chaque semaine, nous choisissons des succès de jeux sur la plateforme. Si vous avez débloqué ces succès, vous obtenez une récompense. Si vous ne les débloquez pas pendant la période hebdomadaire, vous ne recevez pas de récompense.

J'aime beaucoup ce système. Il rassemble les gens dans un certain jeu pour obtenir le succès et encourage les gens à vraiment jouer aux jeux au lieu de simplement y rester. Profitez-en !

Montages Source 1

Comme Garry's Mod, les jeux que vous possédez sur Steam peuvent être montés dans le jeu et joués en mode Sandbox.
Et maintenant, nous pouvons monter Garry's Mod et d'autres jeux du moteur Source 1 - le système de montage est indépendant du moteur, nous avons déjà des montages pour Goldsrc, Unreal Engine et d'autres, ceux-ci peuvent également être codés par la communauté.

Ouvrir la vidéo

SSR Non Temporel

J'ai complètement réécrit notre SSR pour qu'il soit non temporel, plus simple, plus net et 30% plus rapide. 😎

Ouvrir la vidéo

Modulateurs de Lumière

Le nouveau composant LightModulator filtre la lumière directe à travers un rectangle texturé. Il fonctionne avec des lumières ponctuelles, des projecteurs et la lumière du soleil et affecte le brouillard volumétrique.

Je l'ai ajouté principalement pour créer une belle solution pour ajouter des effets de caustique d'eau sans grands hacks, et cela fonctionne plutôt bien :

Ouvrir la vidéo

Mais cela a d'autres usages que je pense que les gens découvriront avec le temps. Les nuages en sont un évident.

Contrôles de Brouillard

J'ai consolidé nos composants de brouillard en un nouveau composant unique Fog. Il ajoute quelques fonctions supplémentaires pour ajuster l'apparence du brouillard, comme le flou de couleur du ciel basé sur la distance et la coloration du soleil.

Plus important encore, cela a été refactorisé pour fonctionner via un PostProcessVolume - donc différentes parties d'une carte peuvent avoir différents paramètres de brouillard, et ils peuvent être mélangés.

Réfraction de Sprites et Particules

Les rendus de sprites et de particules prennent désormais en charge la réfraction de normal-map, ce qui leur permet de déformer la scène derrière eux. Cela offre une autre option pour des effets tels que la chaleur et les ondes de choc.

Température et Animation de Lumière

Les lumières ont désormais des contrôles séparés pour la température, la teinte et l'intensité. La température utilise un curseur Kelvin avec un blanc neutre à 6500K, tandis que la teinte se comporte comme le réglage de couleur de lumière précédent. Les lumières existantes conservent leur apparence.

Tous les types de lumière peuvent également être animés. Il y a douze motifs intégrés, y compris les styles classiques de Quake et Half-Life, plus des courbes d'intensité et des dégradés de couleur personnalisés. La vitesse, la durée et les décalages temporels vous permettent de coordonner les lumières ou de garder leur scintillement désynchronisé. Les aperçus d'animation dans l'éditeur peuvent être enregistrés dans des films.

Serveurs avec Mot de Passe

Les serveurs et les salons peuvent désormais nécessiter un mot de passe, défini via le classique sv_password ou avec LobbyConfig.Password. Cela s'ajoute aux salons ayant des modes amis uniquement ou invitation privée uniquement.

Plus de Têtes Humaines

Nous avons ajouté deux têtes féminines supplémentaires et une autre tête masculine aux modèles humains. Le menu d'avatar regroupe également les vignettes de peau en options féminines et masculines.

Ceci est la première version de ces têtes, avec d'autres ajustements pour les nouvelles et existantes options prévues.

Mises à Jour des Shaders Obsolètes

Une grande limitation qui bloquait l'amélioration de nos shaders, des fonctionnalités de rendu et des performances était notre peur de casser le contenu généré par les utilisateurs existants.

Les jeux et cartes pouvaient utiliser leurs propres shaders personnalisés et tout changement devait être très méticuleux pour éviter de casser ou de faire planter les shaders personnalisés. La seule façon de les corriger serait alors d'exiger que les créateurs mettent à jour et republient leur travail pour la nouvelle version.

Nous faisons maintenant deux choses :

  • Lorsqu'un changement de shader cassant est poussé et que la version du shader est augmentée, le backend recompiles et sert de nouveaux shaders à la place des anciens.
  • Si nous ne pouvons pas le trouver sur le backend ou si vous êtes hors ligne, nous mettrons à jour le shader localement pour qu'il continue à fonctionner, cela peut prendre quelques secondes à une minute selon la complexité du shader, ils seront mis en cache sur le disque.

Nous pouvons désormais apporter des changements plus drastiques au moteur de rendu sans nous soucier de la fragilité de la rupture du contenu généré par les utilisateurs 💪

Compilation de Shader en Temps Réel

Un avantage de faire cela est que les jeux peuvent désormais créer des shaders de manière procédurale à l'exécution en dehors de l'éditeur avec l'API Shader.CompileAsync. Ce qui débloque des choses amusantes dans le sandbox à l'exécution comme cette démo shadertoy.

Ouvrir la vidéo

Crashes & Stabilité

Nous avons toujours corrigé les plantages, mais dernièrement, de nouveaux apparaissaient plus vite que nous ne pouvions les corriger. Certains sont restés inaperçus trop longtemps car ils étaient enfouis parmi les anciens.

Nous avons donc amélioré notre rapport de plantage et notre filtrage, et les rapports de plantage collectent désormais plus de données. Les nouveaux plantages se démarquent dès qu'une version est publiée, ce qui nous permet d'agir beaucoup plus rapidement.

Outils de Développeur F11

Les dizaines de superpositions que nous avions verrouillées derrière des convars sont désormais regroupées en un seul endroit consolidé appelé outils de développement.

F11 ouvre maintenant un dock en bas du jeu, avec une option pour le détacher dans une fenêtre séparée, l'éditeur a également un dock pour cela.

Avec des informations sur le CPU, le GPU, la mémoire et le rendu, il regroupe la console, le trafic réseau et l'inspection de l'interface utilisateur. Vous pouvez inspecter le trafic des variables synchronisées, les pairs et la bande passante, ou examiner les temps de trame sans passer d'une superposition à l'autre.

Anti-Aliasing Moins Cher

Nous avons ajouté CMAA2 comme paramètre graphique d'anti-aliasing, qui est également utilisé dans CS2. C'est un bon compromis entre performance et qualité par rapport à MSAA tout en étant non temporel.

Nous ne parvenons plus à 8x MSAA par défaut, et avons ajusté les préréglages de qualité.

Culling d'Occlusion GPU

J'ai ajouté le culling d'occlusion GPU, ce qui signifie sauter le dessin d'objets derrière d'autres objets que vous ne pouvez pas voir.

Vous pensez probablement "ce n'était pas déjà une chose ?", non, ce n'était pas le cas, évidemment nous avions le culling de frustum mais le culling d'occlusion est un problème délicat à résoudre, mais nous avons trouvé une excellente solution qui fonctionne dans la plupart des scénarios.

Sur Construct, cela entraîne une amélioration de 15 à 20 % du FPS dans les zones avec beaucoup de géométrie occluse. Certains jeux peuvent obtenir des résultats plus grands ou plus petits.

Le culling d'occlusion est activé par défaut, si vous souhaitez comparer ou déboguer, voici ces convars :

  • r_occlusion_culling - bascule le saut des objets cachés par l'occlusion
  • r_occlusion_debug - dessine les boîtes de culling d'occlusion
  • r_occlusion_freeze - fige le culling à la position actuelle de la caméra

Transitions d'Ombre Plus Fluides


Nos ombres avaient une horrible transition dure entre les cascades - j'ai donc fait en sorte que la transition soit adoucie.

Il n'y a aucun coût de performance pour cela, c'est implémenté de la manière la plus efficace possible.



Éclairage Plus Rapide

Nous avons réécrit une partie de notre tri groupé et de la traversée de shaders afin que les lumières, les envmaps et les décalcomanies partagent le travail entre les pixels, les plus grands gains sur AMD.

Le culling de lumière sur Steam Deck est passé de ~4 ms à 0,1–0,16 ms ; sur RX 580, le passage avant était 36–52 % plus rapide dans des tests avec de nombreuses lumières, ces mesures concernent un travail de rendu spécifique dans des scènes de test, plutôt qu'une promesse de la même amélioration pour chaque jeu.

L'API groupée est également plus simple pour les modèles d'ombrage personnalisés : utilisez ClusterForEach() pour un accès optimisé à n'importe quelle lumière, envmap ou décalcomanie dans un groupe.

Moins de Rendu Gaspillé

Nous avons réduit le travail de rendu qui ne contribue rien à l'image finale.
Dans la plupart des jeux, cela devrait se traduire par des taux de trame légèrement plus élevés et une utilisation de la mémoire plus faible.

  • Les caméras qui n'utilisent pas de post-traitement ne rendent plus de tampons que personne ne lit.
  • Les ajustements de couleur, le grading de couleur et l'aberration chromatique sont ignorés lorsque leurs paramètres ne changent pas l'image.
  • L'occlusion ambiante et les ombres de contact ont également été simplifiées avec MSAA désactivé.sbox-gpu_frame_timings-new-style.png 94.68 Ko



Démarrage Plus Rapide, Encore

Nous avons continué à réduire le travail du chemin de démarrage. La préparation de la bibliothèque de types et le scan de la base de données des ressources commencent maintenant plus tôt, se chevauchant avec d'autres travaux de démarrage au lieu de faire attendre le menu.

Notre comparaison de démarrage moyen (sur ma machine) est passée de 16,31 secondes à 10,16 secondes pour accéder au menu.


Performance Réseau

Nous avons passé en revue l'ensemble de la pile réseau et nettoyé de nombreuses allocations et travaux redondants.

Maintenant, nos chemins chauds réseau sont essentiellement sans allocation et le travail redondant réduit libère un peu de temps de trame.

Publiez Seulement Ce Que Vous Utilisez

Environ 30% des actifs publiés dans les 50 meilleurs jeux sont en fait inutilisés.

Faire télécharger aux utilisateurs des fichiers que leur jeu n'utilise jamais est évidemment un gaspillage. 

Nous avons facilité la publication uniquement avec les actifs réellement utilisés dans votre jeu, afin que vous puissiez arrêter d'expédier des actifs de développement et du contenu non publié.  


Lisez plus sur cette fonctionnalité ici

Pour ne pas casser les projets existants, cette option est activée uniquement pour les nouveaux projets,
pour les jeux existants, vous devrez l'activer manuellement dans les paramètres du projet.

Nous vous encourageons vraiment à l'activer et à l'utiliser pour optimiser la taille de votre jeu.

Transformations Plus Rapides

Nous gardons désormais les tampons de transformation dans les lignes de cache et avons supprimé les verrouillages inutiles lors de l'allocation de slots de transformation.

Cela signifie que dessiner de nombreux objets à l'écran est désormais un peu plus rapide.

Contribution de la Communauté : Dormance des Objets Réseau


Contribution de la Communauté par DeadMonstor

Ouvrir la vidéo


Les objets réseau effectuaient un travail à chaque tick même lorsqu'ils n'avaient rien de nouveau à envoyer. Chaque mise à jour capturait, hachait et comparait à nouveau, donc de grandes scènes pleines de props inactifs payaient pour un état qui ne changeait jamais.

Deadmonstor a gentiment contribué un système de dormance réseau automatique, inspiré par Unreal Engine. Les objets réseau peuvent désormais s'endormir et ignorer le travail de snapshot par tick.


Sur la carte community_bowling avec 563 objets réseau et 32 pairs assis inactifs, le temps réseau par tick est passé de 0,47 ms à 0,09 ms (-81 %).

Résumé

C'était une grosse mise à jour. Nous avons essayé de nous en tenir aux points forts pour le blog, le changelog ci-dessous contient la liste complète des changements avec une énorme quantité de corrections de plantages, de bogues et de mises à jour de performances. Beaucoup de travail formidable de l'équipe et de nos contributeurs communautaires. 💖

Une grande partie de notre travail a été de faire en sorte que s&box se sente plus familier. Steam Workshop, montages Source 1 et le jeu Sandbox contribuent tous à cela. Nous voulons que les gens puissent entrer, trouver des choses qu'ils reconnaissent et savoir quoi faire.

Je sais que le passage au Steam Workshop est controversé parmi nos développeurs, mais c'est aussi quelque chose que les joueurs ont constamment demandé et nous devons trouver un équilibre entre ce qui est pratique pour les développeurs et ce qui est attrayant pour les joueurs. Aucun des deux côtés ne peut fonctionner sans l'autre.

Les outils autour de la performance et de la stabilité sont bien établis maintenant, notre taux de plantage est inférieur à 1 %, les outils de développement facilitent beaucoup le diagnostic des problèmes de performance et la compatibilité des shaders supprime un énorme obstacle aux améliorations. J'ai l'impression que nous poursuivons parfois nos propres ombres en rendant les benchmarks plus rapides plutôt qu'en améliorant les jeux et les cartes que les gens jouent réellement sur le matériel que les gens utilisent réellement. Mais nous progressons.

Encore beaucoup à venir, alors restez avec nous. 🤝