[MY] Optimisation du stockage Unity (1 ou plusieurs scènes pour les niveaux)

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
Litorax
Messages : 67
Inscription : 07 Juin 2017 14:59

[MY] Optimisation du stockage Unity (1 ou plusieurs scènes pour les niveaux)

Message par Litorax » 30 Juin 2018 20:08

Bonjour à tous ! Je viens ici pour vous parler d'un problème dont je ne me rends compte que maintenant: le stockage que prend un jeu Unity ! J'ai un gros projet depuis un an, dont le lien est dispo ici pour la bêta: https://drive.google.com/open?id=1Um1_a ... B9Hv2Mf1Ll C'est un jeu pour Android, et je viens de me rendre compte qu'il faisait quand même pas moins de 70 Mo... ce qui est quand même énorme sachant que le jeu n'a pour l'instant que 5 niveaux... Alors, j'ai bien regardé, chaque scène pour chaque niveau pèse environ 8 Mo... ce qui est beaucoup, car ça fait quand même 80 Mo les dix niveaux, et tout le monde ne peut pas s'accorder autant de place pour un jeu comme celui-ci, surtout que c'est un jeu 2D tout simple... Alors, ce que je voudrais savoir, c'est quels sont les meilleurs choix pour optimiser la place que prend mon jeu, donc voici mes questions:

1. Premièrement je sais (ou je crois savoir corrigez moi si je me trompe) que tous les Assets, les images, tout ce qu'on met dans la partie Project du projet et qui n'est pas utilisé ne va pas rentrer dans l'apk (j'ai pour environ 800 Mo d'images dans mes assets donc c'est impossible que ça soit pris dans l'apk), donc de ce côté là je ne pense pas avoir besoin de supprimer tout ce que je n'utilise pas.

2. Si vous avez le courage (et le temps) de regarder rapidement mon jeu, vous verrez que chaque circuit (je vous mets une photo quand même que vous compreniez de quoi je parle) utilise à peu près les même composants... en fait ce sont juste des images carrées de 2 unit par image, qui sont dupliquées. Pour les images des bords de piste, y'a juste un collider dedans. Alors, déjà, pour le background, l'image de l'herbe est présente au moins 1000 fois... est-ce que ça change quelque chose (au niveau du stockage comme de l'optimisation) que je fasse ça ou une grande image tilée, ou un background, ou même que je ne mette qu'une image et que je la duplique à l'aide d'un script au démarrage de la scène ? Je pourrais gérer toutes les cases de mon circuit avec un script mais est-ce que ça aiderait ? Ou alors, est-ce que créer des prefabs aiderait ?

Image

3. Bon, point crucial: Chaque circuit est dans une scène différente... dans chaque scène, y'a deux trucs principaux:
- Le background avec toutes les tuiles comme je vous l'ai décrit plus haut, qui diffère pour chaque circuit
- Un Prefab que j'ai appelé TrackTemplate et que j'utilise dans chaque circuit, qui est tout ce qui gère: les joueurs, les scripts, le gameplay... bref, tout à part la piste.

Est-ce que le fait d'avoir ce prefab de dupliqué dans chaque scène, alors que y'a une dizaine de variables qui changent dans ce prefab pour chaque circuit, me fait perdre de la mémoire ?

4. Bon, je pense que la source du problème se trouve là: je pense que le fait d'avoir une scène pour chaque niveau bouffe de la mémoire, même si elle était vide. Mais si je mets tous les backgrounds de mes circuits dans une seule scène qui me servirait de scène de jeu, ça risque de tout charger, et de laguer à mort non ? Alors, qu'est-ce que je fais please ?

PS: Je voudrais quand même faire du tri dans mes assets... est-ce que j'ai un moyen dans l'éditeur de savoir quels assets sont utilisés par le projet ?

Merci de m'avoir lu jusqu'au bout, j'attends vos réponses avec impatience !

Edit: Bon apparemment je peux plus publier d'images sur ce forum...
Pourquoi essayer de comprendre si on ne sait pas ce que l'on cherche ?

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: [MY] Optimisation du stockage Unity (1 ou plusieurs scènes pour les niveaux)

Message par Max » 30 Juin 2018 20:41

Bonsoir,
Litorax a écrit :
30 Juin 2018 20:08
Edit: Bon apparemment je peux plus publier d'images sur ce forum...
depuis l'arrêt de HOSTING PICS, tu peux passer par d'autre sites. Une liste (non exhaustive) de sites alternatifs à consulter ici.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Litorax
Messages : 67
Inscription : 07 Juin 2017 14:59

Re: [MY] Optimisation du stockage Unity (1 ou plusieurs scènes pour les niveaux)

Message par Litorax » 30 Juin 2018 21:12

Max a écrit :
30 Juin 2018 20:41
Bonsoir,
Litorax a écrit :
30 Juin 2018 20:08
Edit: Bon apparemment je peux plus publier d'images sur ce forum...
depuis l'arrêt de HOSTING PICS, tu peux passer par d'autre sites. Une liste (non exhaustive) de sites alternatifs à consulter ici.
Ok merci, du coup j'ai un peu regardé au niveau de mes circuits, et je me suis rendu compte qu'une scène vide ne pesait presque rien. Du coup, il suffit de créer des prefabs pour des gros carrés d'herbe et ils ne seront stockés qu'une fois pour tout le projet... ce qui est génial ! Je passe de 8Mo par scène à moins de 1 Mo !
Pourquoi essayer de comprendre si on ne sait pas ce que l'on cherche ?

Avatar de l’utilisateur
E3DStef
Administrateur
Administrateur
Messages : 1646
Inscription : 14 Juil 2013 18:30
Localisation : https://www.carte-des-membres.com/fr/Unity3D-France/

Re: [MY] Optimisation du stockage Unity (1 ou plusieurs scènes pour les niveaux)

Message par E3DStef » 05 Juil 2018 11:04

Disons qu'un APK vide fait de base 30 Mo, donc 70 Mo pour un game avec quelques niveaux n'est pas catastrophique. Par contre pour le publier faudra passer par des binaires :-)

Alors oui la solution des prefab que tu instancies au besoin est la solution la plus économe en place (1 seul objet) et aussi en mémoire (1 seul objet placé x fois).

Pour les images comme dit plus haut faut utiliser d'autres services que hosting pics

A+

Stef
Le Savoir n'est Précieux que s'il est Partagé

Si besoin urgent de me contacter, faites moi un mail sur : franceunity3d@gmail.com

Avatar de l’utilisateur
Liven
Messages : 268
Inscription : 30 Nov 2017 01:48

Re: [MY] Optimisation du stockage Unity (1 ou plusieurs scènes pour les niveaux)

Message par Liven » 05 Juil 2018 18:16

Petits trucs généraux pour gagner de la place (Par contre vois ce qui est applicable à ton cas, car je n'ai pas d'androïd) :

Dans les paramètre des sprites, on peut désactiver le "generate mip maps" pour les sprites qui sont toujours à la même distance de la caméra. On peu aussi virer tous ce qui est option de transparence quand on en a pas besoin (et bien sur fixer une max-size adéquate).

Sinon il me semble qu'on peut faire le ménage dans les shader (qui sont intégrées par défaut, mais qui ne sont pas forcement utilisées), mais je ne sais pas comment.

Les fichier audio aussi peuvent éventuellement être passés en mp3 (ou autre compression) en activant une "décompression au lancement" pour éviter les pertes de perf (au prix d'un démarrage un peu plus lent).

Sinon, unity commence à parler de "unity for small things", mais c'est un peu nébuleux pour moi et c'est encore en alpha fermé, mais ça semble vouloir rendre possible des jeux très très légers (pour pouvoir être utilisé comme pub par exemple). A suivre.

Répondre

Revenir vers « Unity le logiciel »