Mise à jour 26.09.08
s&box introduit la physique 2D avec Box2D et lance la Game Jam III avec un prix de 50 000 £. De nombreuses améliorations UI sont également présentes.

Physique 2D
s&box dispose désormais de la physique 2D, propulsée par Box2D (oui, comme Box3D). Changez le mode physique dans les paramètres de votre scène et les corps simuleront dans le plan XY, en utilisant les mêmes composants et API physiques que vous connaissez déjà au lieu d'avoir une séparation entre les API 2D et 3D.
Game Jam
La Game Jam III a commencé avec un prize pool de 50 000 £. Le thème est UNE TOURNÉE DE PLUS et les soumissions se terminent le vendredi 25 septembre.

Nous l'avons intégré dans le menu de la plateforme où les participations sont jouables et votables par la communauté.
La structure est en place pour de futures game jams, nous pouvons laisser la communauté en organiser, nous pouvons récompenser des objets pour cela, etc.
Adieu Yoga
Nous avons utilisé Yoga comme notre moteur de mise en page UI depuis le début, ce qui fait qu'il prend tout votre HTML & CSS et décide où cela doit aller à l'écran, de la même manière que votre navigateur le fait sur cette page en ce moment.
Cependant, Yoga ne pouvait faire que des mises en page Flexbox et nous en voulions plus. Nous l'avons donc remplacé par notre propre moteur de mise en page C# open source Sandbox.Layout.
Avec cela, nous pouvons supporter plus de façons différentes de disposer les éléments UI tels que display: block, display: grid et display: inline
Les mises en page existantes devraient être exactement les mêmes, et les performances devraient être légèrement meilleures même en passant de C++ → C#.
| Charge de travail de mise en page | Yoga | Sandbox.Layout |
|---|---|---|
| 10 001 nœuds arbre flex plat : première mise en page | 5,40 ms | 2,22 ms |
| 10 001 nœuds arbre flex plat : feuille modifiée | 3,68 ms | 1,37 ms |
| 10 101 nœuds arbre flex imbriqué : première mise en page | 4,99 ms | 3,54 ms |
| 10 101 nœuds arbre flex imbriqué : redimensionnement de la racine | 1,92 ms | 2,22 ms |
Mise en page CSS Grid
Nous supportons désormais la mise en page CSS grid, qui est comme Flex mais facilite la disposition de votre contenu dans une grille exacte.

Texte en ligne
Nous n'avons jamais vraiment eu de moyen complet pour faire du texte enrichi auparavant, des choses simples comme le texte stylisé s'étendant sur plusieurs lignes n'étaient tout simplement pas possibles, tout était un bloc de contenu.
Maintenant, vous pouvez faire display: inline pour le contenu et cela se comportera comme sur le web, vous permettant de styliser n'importe quel morceau de texte sans vous soucier de la mise en page.

Position Fixe

Nous avons ajouté position: fixed qui est comme le positionnement absolu mais le point d'ancrage est toujours l'écran. Cela est particulièrement utile pour les pop-ups de menu comme...
Menus
Il y a un nouveau système Sandbox.UI.Menu pour les barres de menus et les menus. Cela supporte tout ce que la version éditeur fait, mais vous pouvez l'utiliser dans vos jeux !
var file = new Menu( "Fichier" ); file.AddOption( "Nouveau", "note_add", New ).Shortcut = "Ctrl+N"; file.AddOption( "Ouvrir...", "folder_open", Open ); file.AddSeparator(); file.AddOption( "Sauvegarder", "save", Save ).Enabled = false;

L'objectif est de rendre ces éléments aussi natifs que possible... et pour l'instant, c'est le cas. Vous pouvez les restyler avec du CSS comme vous vous y attendez.

Barres de défilement
Barres de défilement, enfin ! Elles sont intégrées dans le système de panneaux et vous les activez avec scrollbar-width. Il est conseillé de faire scrollbar-width: auto si vous voulez qu'elles soient visibles.

Je suis assez militant sur le fait de ne pas inventer nos propres styles CSS, donc ils utilisent des styles CSS standards comme...
scrollbar-width- définit la largeurscrollbar-color- définit la couleur de fond et de la poignéescrollbar-gutter- superposition vs en ligne
Vue Arbre
Le système UI de panneaux a maintenant un TreeView, tout comme l'UI de l'éditeur. Cela fonctionne comme vous vous y attendez, comme un contrôle natif de Windows. C'est virtualisé, a une sélection, une navigation au clavier, un survol et un style de ligne, un renommage, des menus contextuels, un défilement vers l'élément... tout ce que vous attendez.

Aide contextuelle partout
Les aides contextuelles sont meilleures maintenant. Elles fonctionnent dans les PanelWindows (que le nouveau lanceur utilise).

Nous avons ajouté Panel.OnTooltip - que vous pouvez utiliser pour construire le panneau d'aide contextuelle. Cela signifie que vous pouvez créer de belles aides contextuelles riches, au lieu d'être limité à une ligne de texte comme avant.
Sélecteur de couleur
J'ai revu le sélecteur de couleur avec plusieurs mises en page différentes : carré, anneau de teinte, disque de teinte, HSV et RGB.

Keyframes de Movie Maker
Movie Maker obtient un montage de timeline plus rapide. Shift-click-drag peut peindre des blocs de keyframes dans une plage ou les supprimer, rendant le travail de timing répété beaucoup moins fastidieux.
Les aperçus d'exportation utilisent également moins de ressources, laissant plus de marge pour la scène en cours de rendu et le reste de l'éditeur.
Une primitive de porte
Les outils de cartographie ont une nouvelle primitive de porte. Cela crée une porte en une seule opération modifiable au lieu de vous faire couper et reconstruire une porte de base à la main.
Nouveau format de compression des normales de maillage
Les normales et tangentes des modèles utilisent désormais l'encodage signé-octaédrique et diamant, ce qui signifie que cela a l'air mieux.
TL;DR est que notre ancien format d'encodage avait une erreur de précision allant jusqu'à 1-2 degrés, ce qui a entraîné divers artefacts ennuyeux que les artistes compensaient en activant des tangentes coûteuses dans ModelDoc. (ce qui est mauvais en raison d'une utilisation mémoire plus élevée)
J'ai remplacé cet encodage par un nouveau format, tangent signé-octaédrique + diamant, qui offre une bien meilleure précision (environ ~0,2 degré d'erreur de précision) tout en gardant le même budget mémoire.
Que devez-vous faire en tant qu'artiste/développeur :
- Recompilez simplement tous vos modèles. Jusqu'à ce que les modèles soient recompilés, ils continueront à utiliser l'ancien format de compression.
- Je pense que vos shaders personnalisés se recompilent automatiquement lors du prochain lancement de l'éditeur, mais assurez-vous qu'ils sont à jour de toute façon.
- Les anciens actifs cloud avec des modèles et shaders obsolètes resteront fonctionnels, mais au prix d'une bande passante mémoire plus élevée. Si vous avez des modèles téléchargés sur le cloud, veuillez les recompresser et les re-télécharger si vous le pouvez !
C'est un changement assez majeur mais cela ne devrait pas affecter les actifs existants, donc même si vous ne faites rien, tout devrait rester normal. N'hésitez pas à me faire savoir si j'ai cassé l'un de vos actifs, joindre des journaux/actifs/projets de reproduction sera utile.
Meilleur rythme de trame
Certains utilisateurs ont signalé de fortes saccades même lorsque leur FPS semblait bon. Cela était particulièrement perceptible pour les utilisateurs qui avaient désactivé la planification GPU accélérée par matériel de Windows (HAGS). Nous avons retravaillé le rythme de trame afin que les images atteignent l'écran de manière plus uniforme, rendant le mouvement plus fluide.
Si vous rencontrez toujours des problèmes de rythme, faites-le nous savoir, car le problème peut persister sur certaines configurations matérielles.
Le mode plein écran exclusif a également été corrigé et est maintenant demandé correctement au pilote.
Navigation
Nous avons remplacé le reste de la simulation de pathfinding et de foule DotRecast par notre propre implémentation.
Dans des tests synthétiques, la mise à jour de la file d'attente de pathfinding était 8,4 fois plus rapide, et créer et planifier des chemins pour 100 agents utilisait 63 % de mémoire en moins sur le thread d'appel. Les mises à jour des agents peuvent également s'exécuter sur plusieurs cœurs.
Il y a aussi une nouvelle API CalculatePathAsync, ainsi que des corrections pour les agents bloqués, la traversée de liens et la génération de navmesh.
Améliorations de l'édition de Prefab
De petites modifications apportées à de grands prefabs copiaient beaucoup plus de données que nécessaire. Nous avons accéléré le calcul des remplacements et l'enregistrement des annulations, rendant la capture d'annulation des propriétés/composants environ 4 à 5 fois plus rapide, avec environ 75 % d'allocations en moins dans des tests synthétiques.
Pour un prefab avec 500 objets et 1 500 composants, l'enregistrement d'une modification de composant pour annulation est passé de 383 ms à 78 ms.
Nous avons également corrigé des problèmes avec des maillages de scène disparaissant lors de l'application ou de la sauvegarde de prefabs, ainsi que des problèmes avec des instances imbriquées et l'ordre des objets.
Docs
Et enfin, la documentation a reçu un coup de jeune bien mérité pour rendre l'information plus découvrable et lisible. La barre latérale a maintenant un filtre rapide, le contenu a une table des matières et des tailles de police plus cohérentes avec un contraste de couleur de texte global.

