Unity Web & WebAssembly

Unity

Unity est un moteur de jeux vidéo multiplateforme qui fournit aux développeurs un éditeur.

Parmi les plateformes cibles supportées par Unity, le développeur peut choisir WebGL pour compiler une version web de son jeu.

Auparavant, Unity utilisait ASM.js pour transpiler le code du jeu en JavaScript, car c'était le moyen standard d'exécuter des instructions dans un navigateur. Depuis 2018, Unity se base sur le WebAssembly, car cette solution apporte un gain de performance et de nombreux avantages par rapport à ASM.js.

WASM vs ASM.js

Les performances sont similaires entre WASM et ASM.js, dans le cas où le navigateur est optimisé pour ASM.js. Ce qui rend WASM meilleur est son temps de démarrage plus rapide, car le JavaScript doit être parsé et interprété. De plus, la taille du binaire est réduite d'environ 10-15%, ce qui est significatif, car le fichier doit être téléchargé à chaque chargement de page s'il n'est pas mis en cache ou en cas de mise à jour.

Les deux solutions s'appuient sur les mêmes étapes et outils de compilation pour être compilées. Ainsi, le processus de compilation d'un jeu pour la plateforme web n'a pas beaucoup changé.

image.png

Démonstration

Nous allons partir d'un projet existant, puis définir le web comme plateforme cible et analyser la composition du build avec WASM sur Unity.

image.png

Afin de définir la plateforme cible, nous devons sur notre éditeur Unity :

  1. Aller dans le menu file et sélectionner l’option Build Settings… qui contient tous les paramètres relatifs à la création d’un livrable de notre jeu
  2. Ensuite, nous sélectionnons dans la liste des plateformes l'option WebGL pour créer une version WebAssembly de notre jeu.
  3. En cliquant sur le bouton Build, l'éditeur lancera les différentes étapes de construction.
  4. Et pour finir, nous sélectionnons le dossier dans lequel notre build sera situé.

image.png

Une fois le build effectué, on retrouve les fichiers suivants :

image.png

Dans le dossier build, nous retrouvons les fichiers suivants :

Ressources

Organisation d’un projet Unity

image.png

https://zenn.dev/okuoku/articles/5a7a04e75234b3

https://medium.com/wasmer/wasmer-io-devices-announcement-6f2a6fe23081

https://blog.unity.com/technology/webassembly-is-here


Revision #2
Created 5 May 2023 13:46:00 by Noé Larrieu-Lacoste
Updated 5 May 2023 14:21:54 by Noé Larrieu-Lacoste