Charger nombreuses images

Salut à tous !

Je travaille actuellement sur un jeu de zombies que j’aimerais voir jouer en multi, et à propos duquel je n’ai pas su résister à l’idée de faire des skins personnalisables, où l’on pourrait choisir séparément son pantalon, sa veste et sa tête.
Seulement, une fois le jeu compilé (je travaille sous la version Linux), le chargement de la scène est interminable, alors que je n’ai fait que 4 têtes, 4 torses et 2 pantalons ! (enfin, 2 de chaque pour chaque sexe)
Je voulais savoir s’il y avait un moyen pour commencer le chargement de toutes les images du jeu dès la première scène (ici le menu, donc une scène qui ne met pas encore en scène les persos) afin que le chargement d’une partie soit plus rapide, ou s’il y avait une quelconque technique pour charger plus rapidement les sprite.
Je tiens à préciser que pour le moment, mon jeu contient 77mo d’images et sons, et que j’ai auparavant fait un jeu qui se chargeait plus rapidement en en contenant 250.

Par ailleurs, j’aurais également aimé savoir s’il y avait la possibilité de laisser une scène jouée pendant que la suivante se charge (en gros, que je mette un écran de chargement entre le menu et la partie, où l’on verrait un sprite en mouvement continu afin de se rassurer, de ne pas se demander toutes les 2 minutes si ça aurait pas buggé).

Je vous remercie d’avance pour vos conseils avisés :wink:

Salut,
Tes images ont l’air vachement lourdes, néanmoins, il n’est pas possible de commencer le chargement en arrière-plan ni d’afficher une scène pendant le chargement de la suivante. :frowning:

Elles sont pas tellement lourdes, elles sont surtout nombreuses ! (sprite en 8 direction avec 17 animations différentes par skin, comprenant en moyenne 8 images en 200x200. Pour un équipement personnalisé, il faut ce qu’il faut !)
Et certes le 200x200 c’pt’être un peu lourd, mais un ancien jeu du même genre que j’avais fait avait des images en 480x480 et elles se chargaient relativement bien

Je crains qu’il n’y ait rien à faire, en plus, la vitesse de chargement dépend lourdement du PC sur lequel le jeu est exécuté. :wink:

Pas même un moyen de charger toutes les images une fois pour toutes dès le début du jeu ?

Serait-il prévu qu’une version ultérieure de GameDevelop permette la gestion d’un plus grand nombre d’images aisément, auquel cas je pourrais mettre ce projet en suspens ?

Enregistrer les position de tes images dans un fichier et lit les une à une au début de scène :slight_smile:
Le fait que les images mettent du temps à se charger ne vienne pas de GD mais de l’ordinateur :wink:

GD ne peut pas mieux gérer les images, il charge uniquement les images utiles pour la scène, or ton personnage possède tellement d’images qu’il doit bien toutes les charger.

Et comment je fais ça ? :smiley:

Il y a peut-être une solution : mettre “Oui” à “Toujours conserver l’image en mémoire” pour chacune des images dans la banque d’images, mais gare à la consommation de RAM qui risque d’exploser.

Bien sûr je parle des images de la scène, pour comment faire je te conseil de regarder l’exemple “Save & Load” fournit avec GD.
De plus tu peux tenter de fournir les images avec ton projet et les intégrés grâce à “Dessin primitif” qui permet de charger une image (j’ai jamais tester mais vu que tu à l’air bloqué tu peux toujours essayer :laughing: )

J’entends bien, d’où que je demande si une version ultérieure (car visiblement les améliorations vont bon train dans le développement de ce logiciel !) permettra une gestion plus rapide des images.
Je vais essayer cette option, mais je crois que je vais devoir me résigner effectivement à un jeu plus simple en terme de variété graphique.

Tu es sûr que ton problème vient bien des images ?
C’est peut-être une histoire d’évènements qui mouline pour rien.

Crées une scène sans évènement, et colles-y toutes tes images.
Regarde ensuite si elle met autant de temps à charger que les autres scènes.

Pour ton problème d’écran de chargement, tu as deux solutions :

  • Ajouter un calque au dessus de tous les autres, sur lequel tu colles une image noire (pour cacher ce qu’il y a derrière) et une anim de chargement (avec un évènement externe dédié)
  • créer une scène Chargement, dans laquelle tu gères l’anim de chargement (perso, je l’ai appelée SceneNoire et j’y gère aussi le passage d’une scène à l’autre en fonction d’une variable)

Sûr : j’ai essayé d’ajouter l’objet Torse à mon menu afin qu’il soit chargé dès le début du jeu, et il était tout aussi long à le charger. De toutes façons, je travaille sous Linux. Aussi, je lance les jeux compilés via un terminal, où je vois toutes les opérations actuellement produites par le ExeLinux et je vois bien qu’il met un bon moment à charger les sprite.

J’entends bien, particulièrement ta 2ème proposition, et je l’ai déjà exploitée. Seulement les animations de la scène Chargement se figent pendant le chargement de la scène suivante, et j’aurais aimé avoir une simple animation répétée le temps du chargement (les chargement de mon jeu étant long, j’aimerais les rendre plus agréables)

Mets en place un minijeu pour grapiller des points ou des bonus.
Genre “ecrase la mouche” ou “répète la touche fléchée indiquée à l’écran”.

J’avais déjà remarqué que GD était plus lent sous Linux que Windows. La version à venir va peut-etre améliorer les choses.

Ca serait avec joie mais voila justement le probleme, le jeu se fige completement lors du chargement de la scene suivante !

Ressalut à tous, j’ai continué malgré tout le projet.
Après une nouvelle compilation, le jeu ne met que 4 minutes à charger (ça reste long mais bon).
En revanche, GameDevelop commence à ne plus vouloir lancer le compilateur interne lorsque j’ouvre la scène du jeu (comprenant toutes les animations et skins des personnages), sous prétexte qu’il n’arrive pas à allouer de la mémoire. (je sortais la même excuse à mes profs pour ne pas réviser, je la connais celle-là !).

Y a-t-il un moyen quelconque pour permettre à GameDevelop de, je ne sais pas, utiliser une plus grande portion de mémoire vive, quelque chose comme ça ?

Je ne pense pas il faut trouvé un autre moyen :wink: