Messagerie


Fichier image JPG qui rend le jeu trop lourd

Yazorius
200 messages
Fusion 2.5 Dev
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5
vendredi 29 janvier 2016 à 23:34
Hop ! Me revoilou ! ^_^

Je compte évidemment sur vos lumières pour m'éclairer, car je ne comprends pas trop ce qui arrive avec mon jeu : je réalise petit à petit un moteur Omni-3D pour jeu à la Myst, et du coup, chaque écran est une image complète. Sauf que ... la taille de mes images est énorme (4320 * 1080) pour faire un panorama, et si le fichier jpg fait 450ko, lorsqu'il est intégré au jeu, ce dernier gagne 10 mo d'un coup. Ca donne la nette impression que chacune de ces images est convertie en BMP ou autre format lourd.

Ces images sont chargées en tant que "Décors Rapide" pour tourner en boucle indéfiniment à 360°. Ca ne poserait pas de soucis si c'était un joli fond d'écran utilisé plein de fois pour un seul chargement d'image, mais là, c'est pour chaque écran ! Et le jeu comptera plusieurs centaines d'images différentes. Et comme ces images sont incluses dans l'exécutable final, pour lancer le jeu, il faudra lancer un exécutable de plusieurs dizaines de Go : ingérable !

J'aimerais donc savoir s'il était possible de forcer Fusion à conserver le format jpg, ou du moins, éviter que chaque nouvelle image implémentée ajoute 10 mo au projet.

Une idée ?
ValLoche23
1452 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
samedi 30 janvier 2016 à 00:28
T'a pensé à convertir en PNG ?

Normalement, c'est le format de "base" qu'opère Fusion !
Yazorius
200 messages
Fusion 2.5 Dev
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5
samedi 30 janvier 2016 à 01:11

T'a pensé à convertir en PNG ?

Normalement, c'est le format de "base" qu'opère Fusion !


Je crains que justement ce soit ce type de format de base (BMP, TIFF, TGA, PNG, ... des formats très lourds) qui apporte autant de lourdeur dès l'ajout d'une image.
N'y a-t-il pas un moyen de vérifier dans les options que les fichiers graphiques conservent leur format JPG ?
Franchement, j'ai 3 noeuds à mon test de moteur et je dépasse déjà les 30 mo.
Mon PC met déjà 2 secondes pour afficher la première image : ça va vite devenir impossible à lancer.
ValLoche23
1452 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
samedi 30 janvier 2016 à 01:44
Je me permet de te corriger sur un point : Le format PNG est l'un voir même le format d'image le plus optimisé qui existe.
On utilise généralement le JPEG ou JPG uniquement pour des photos.

C'est pour cela que je te conseille de faire un test de comparaison. Essaie, et dit moi les résultats ^^

Ensuite, il faut savoir que ton format d'image est un poil grand. Plus une image est grande, plus elle mettra de temps à charger. Au pire des cas, si tu n'arrive pas à réglé ce problème, je te conseille d'essayer de couper ton image en deux objets différents et de les placer côté à côté. On ne verra pas la différence si tu active dans les options de ton application la case "Synchronisation Vertical". Tu verras, ce sera sans doute plus chiant certes, mais tu gagnera en optimisation, je peut te le garantir ^^

Ensuite, quand à la conversion des poids des fichiers images, ça je ne sais pas, je n'ai jamais eu ce problème ! Aucune de mes images insérer dans un jeu à peser plus que son poids d'origine 
Monos
2713 messages
Fusion 2.5 Dev
Fusion 2.5+ Exporteur Android Exporteur HTML5
samedi 30 janvier 2016 à 06:42
Bon aller sauf si je me trompe que tu places un BMP, un PNG ou un JPEG dans l'éditeur internet de fusion cela ne changera pas le poids ajouté car il transforme l'image dans son propre format !

Le Jpeg n'est pas spécialement utilisé pour la photo, il est utilisé aussi pour le web car c'est un format compressé et léger mais avec une perte de donnée. Le png est un format compressé sans perte de donnée donc image égale le png sera donc plus lourd que le jpeg dans les mêmes options de compression.

Patrice
2784 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
samedi 30 janvier 2016 à 09:01
Il n'y a pas 36 solutions pour alléger les images.
Soit réduire le nombre de couleurs (mais c'est moche), soit utiliser un système de scanlines (ça donne un style..).
Sinon, pour ton projet il me semble que l'idéal serait d'avoir les fichiers images externes en jpg, le plus léger possible et de les appeler en début de scène avec l'objet Image active.
Il me semble que c'est ce que j'ai fait dans mon exemple QTVR ici : http://comptoir-mmf.eu/Forum/index.php?topic=1371.0
Kloug
1497 messages
Fusion 2.5
samedi 30 janvier 2016 à 10:51
Salut,

Il y a un truc très simple à faire, des tests.

Plusieurs réglages sont possibles, le juste milieu, mode graphique >> 32768 couleurs.

Le format d'une image, ne change rien via un objet actif, seulement le mode graphique, plus le mode graphique est élevé, plus c'est lourd à gérer pour CTF.

Pour le chargement d'une image, via image active, même principe faire des tests, regarder quel format donne le meilleur, rendu, fluidité, etc.

A+

Édit:
Il existe pléthore de cartes graphiques, à mon humble avis, à la base CTF, fait ce qu'il peut en mode graphique 256 couleurs, mode à déconseiller, sauf pour du rétrogaming, où alors avec une palette spécifique, avec TGF 1.6 on peut changer la palette, je subodore qu'avec CTF c'est possible (à vérifier).
Patrice
2784 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
samedi 30 janvier 2016 à 11:06
Oui et attention (Mega Warning !!!) si vous changer de nombre de couleurs dans les propriétés les couleurs des sprites vont se dégrader (normal) mais en revenant en 16 millions de couleurs ils resteront dégradé (normal).
Faites une sauvegarde avant l'opération.
Kloug
1497 messages
Fusion 2.5
samedi 30 janvier 2016 à 11:23
Merci de préciser Patrice, je confirme, il y a dégradation de l'image, quand on passe de 16 M à 32 768 couleurs.

Donc faire très attention, il est possible de revenir en arrière, en chargeant à nouveau les images en mode 16 M, mais on perd forcément beaucoup temps (si beaucoup d'images).
Yazorius
200 messages
Fusion 2.5 Dev
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5
samedi 30 janvier 2016 à 16:31
Bonjour.

Merci pour vos réponses. Comme toujours, c'est impressionnant de voir la vitesse à laquelle vous cherchez à apporter votre aide.

Hélas, aucune solution ne semble réellement possible. Si Fusion utilisait le jpg en tant que tel, mon fichier "exe" prendrait moins de 2 mo (450 ko pour 3 images). Actuellement, je suis à 31 mo, et si je tente de passer en 32 768 couleurs, j'obtiens un jeu moche pour une diminution peu efficace de la taille du fichier (il prend toujours 20 mo). Je suis donc assez déçu de ne pas pouvoir profiter de la qualité de rendu de mes images tout en bénéficiant de la faible taille du format choisi. Evidemment, je peux toujours appeler les images conservées en externe, mais ... j'aimerais que mes rendus soient intégrés au programme, et non accessibles librement dans un répertoire.

Il n'y a aucune autre solution ? Je risque fort devoir faire un jeu très lourd, car je ne me  vois pas changer la qualité des images (pour le peu que ça réduit en taille), ni prévoir une résolution plus petite (en plein écran sur une résolution standard 1920*1080, en panoramique, on ne peut pas faire plus petit).

Merci encore à vous.
Seyjin
1471 messages
Fusion 2.5 Dev
Exporteur Android Exporteur HTML5 Fusion 2.5+
samedi 30 janvier 2016 à 17:09
Pour limiter l’accès aux utilisateurs, tu peux changer l’extension de tes images. Ils pourront quand même les afficher mais seulement si ils essayent de les ouvrir avec un visionneur d'images.
Tu peux aussi utiliser Text Blitter pour les afficher. Par exemple, tu divise tes images suivant une grille de 3 * 8 tiles, et tu les mélange. Puis avec le texte tu remets les tiles dans le bon ordre.
Modifié le samedi 30 janvier 2016 à 17:20 par Seyjin
conceptgame
429 messages
Fusion 2.5 Dev
Fusion 2.5+ Firefly Exporteur iOS Exporteur Android
samedi 30 janvier 2016 à 17:30
Tu peux stocker tes images en tant que fichier binaire. Ils ne prendront pas plus de place que sur le disque jusqu'à ce que tu décides d'en  afficher une à la volée avec Image Active comme le suggérait Patrice.
Yazorius
200 messages
Fusion 2.5 Dev
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5
samedi 30 janvier 2016 à 17:41
Le soucis, c'est que la rotation à 360° est fondée sur le fait  que l'image est un "décor rapide", non une "image active" : la rotation est magnifique, fluide, mais je ne peux pas charger d'image externe du coup. Et si je remplace le décor rapide par une image active, la rotation ne fonctionne plus. C'est pourquoi j'espérais avoir loupé une case à cocher quelque part qui m'aurait permis de conserver ce que j'ai fait, tout en réduisant considérablement le poids de mon image (qui passe de 450ko sur le disque dure à 10mo dans le jeu). Et, je maintiens que je préfère qu'il n'y ait pas de fichier externe : en fait, je voudrais faire un jeu en un simple exécutable qui ne s'installe pas  :-[
conceptgame
429 messages
Fusion 2.5 Dev
Fusion 2.5+ Firefly Exporteur iOS Exporteur Android
samedi 30 janvier 2016 à 17:51
J'avais  raté la rotation à 360. A ce moment l'extension Surface peut s'en charger. Les images ne sont pas externes quand tu les charges en tant que fichier binaire, elles sont stockées dans l'exe.
Patrice
2784 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
samedi 30 janvier 2016 à 19:40
Je ne vois pas où est le problème avec la rotation à 360°. Image active est beaucoup plus malléable qu'un décor ou un actif, on peut faire absolument ce qu'on veux avec y compris du glissement d'offset.
Kloug
1497 messages
Fusion 2.5
samedi 30 janvier 2016 à 21:59
Il existe plusieurs façons de protéger une image, la plus simple la stégano.
Yazorius
200 messages
Fusion 2.5 Dev
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5
dimanche 31 janvier 2016 à 01:40

Il existe plusieurs façons de protéger une image, la plus simple la stégano.


Je ne désire pas protéger l'ensemble de mes images, mais juste éviter qu'elles soient récupérables dans leur état : elles sont prévues pour être intégrées à un moteur qui les dévoile peu à peu, avec effet déformant lors de la rotation. Je désire donc qu'elles ne soient tout bonnement pas accessibles séparément, tout comme le reste de mes médias (musiques, bruitages, curseurs, ...).

Pour ce qui est de l'extension "Surface", j'ai bien du mal à en comprendre le fonctionnement. J'ai beau être un vieil utilisateur des logiciels Clickteam, je n'ai jamais eu grande aisance là où vous savez en quelques clics faire de véritables prouesses. D'un rien, je bloque, et je cherche durant des semaines, voire des mois, quand vous ne prendriez qu'une minute pour voir où est le problème. Je commence à peine à m'habituer à ce Décors Rapide qui tourne tout seul avec grande fluidité, je n'ose imaginer le temps qu'il me faudrait si je changeais cet objet contre un autre qui ne répond pas aux même principes. Pour l'heure, je ne saurais même pas adapter mon projet pour passer par des "images actives" à la place des "décors rapides".

Au final, mon post était avant tout de savoir s'il était possible de cliquer quelque part pour que Fusion conserve mon format jpg d'origine. A cela, la réponse semble être que non. Les autres solutions (fichiers externes, fichiers internes appelés par image active, Surface, ...) chamboulent ce que j'ai mis des mois à mettre au point. Je me suis d'ailleurs inspiré des travaux proposés sur ce forum (notamment ceux de Patrice, je crois), et certaines zones de programme me sont complètement opaques ^^

Je ne doute pas que je dois vous paraître bien ridicule de me noyer ainsi dans un verre d'eau. Mais si je suis capable de bien des choses (musique, graphismes, concepts, ...), la programmation, même avec un outil qui fait presque tout à ma place, est vraiment quelque chose de très laborieux. Je le fais car je veux faire mon jeu, mais moins ce sera complexe et mieux ce sera pour moi ^^" J'escompte bien tricher en jouant sur la qualité de rendus graphiques, d'ambiance et musicaux, pour masquer les imperfections techniques et la simplicité du programme.

Du coup, tant pis, je vais sûrement devoir finir par un jeu qui prend 7 go ^_^" On verra bien ce que ça donne.

Pour le test, voici ce que j'obtiens (3 lieux uniquement) :
www.yazorius.com/big.rar
Si vous testez, cliquer sur "Echap" pour quitter ^_^
Kloug
1497 messages
Fusion 2.5
dimanche 31 janvier 2016 à 02:51
Un forum propose des solutions au coup par coup, pas des notions de programmation.

Ici les gens donnent des conseils, rien n'oblige à les suivre, chaque projet est différent, perso, je ne prétends pas détenir la solution, et encore moins juger un cliqueur.
Cyberclic
664 messages
Fusion 2.5 Dev
Exporteur iOS Exporteur Android Exporteur HTML5
dimanche 31 janvier 2016 à 09:12
Plutôt que d'utiliser une image énorme, il faut la découper en petits morceaux d'objet actif. Comme un puzzle. Ça prendra moins de place en mémoire et dans l'exécutable final.

Et pour y appliquer une rotation, en jouant avec les points chaud, tu peux faire tourner tout ces bouts ensemble pour donner l'illusion qu'il n'y a que une seule grosse image qui tourne.

Sinon il suffit d'appliquer la rotation à un calque.
Modifié le dimanche 31 janvier 2016 à 09:18 par Cyberclic
Seyjin
1471 messages
Fusion 2.5 Dev
Exporteur Android Exporteur HTML5 Fusion 2.5+
dimanche 31 janvier 2016 à 09:24
Pour réduire efficacement le nombre de couleurs de tes images, ne baisse pas le nombre de couleur du jeu. Ça va rendre celles ce dégueulasses. Il faut faire ça avant d'importer les images, dans Photoshop par exemple, c'est avec l'option « Enregistrer pour le web ». Et tu joue avec les réglages pou avoir un redu qui te plait.
Utilisateurs en ligne
  • Aucun utilisateur en ligne
  • 54 visiteurs au total

Derniers messages