-
Cache.. Cache !
Bonsoir à tous !
Voilà, j'ai débuté le dev AS3 il y a quelques jours, et mon but est de réaliser un jeu par navigateur (entièrement en AS3 donc, côté client).
Le problème, c'est qu'à l'heure actuelle (et je n'en suis qu'au début) le poids total des images, zippé, est de 250ko (et je pense qu'on pourra multiplier cette valeur par au moins 6 pour le poids final).
J'aimerais donc limiter au maximum les échanges serveur pour choper les images.
J'ai pensé à 3 solutions :
1) faire une appli "lourde" (et non web), et stocker tous les fichiers sur la machine cliente (comme n'importe quel jeu "lourd"), mais ça forcerait les utilisateurs à la télécharger, et de plus à ce moment-là je ferais mieux d'utiliser un autre langage que AS3 (un langage plus optimisé genre C++)
2) utiliser le cache du navigateur (mais là déjà ça pose des problèmes de taille max. du cache, conservation des images entre deux connexions au jeu, etc.)
3) utiliser les sharedobject (mais deux points : il faudra que l'utilisateur accepte d'augmenter la taille allouée à 2 ou 3Mo - au lieu de 100ko de base, et point deux : est-ce que c'est fait pour cette utilisation ?)
Voilà, pour l'histoire du cache du navigateur, je ne sais pas comment cela se passe en AS3, est-ce que c'est transparent et ça garde en cache comme n'importe quelle page HTML garderait les images chargées, ou bien y a-t-il un code à utiliser ?
Je suis preneur de tous les éclaircissements que vous pourriez m'apporter :)
Très bonne soirée à vous !
-
Coucou !
Pour le cache du navigateur sa se fait de maniere automatique suivant le navigateurs donc sa optimisera tout seul !
Pour pas chargé 45 image , si tes images sont petites tu peux les regrouper en une image et la découper en as3 en te basant sur un fichier de config xml ( tres utiles pour les jeux utilisant des centaines de tiles 32x32 par exemple )
Tu peux aussi optimisé le poids des images en les stockant dans le swf et en faisant joujou avec leur optimisation ( gagné quelques ko par ci par là ;) ).
Tu peux décomposer ton jeu par phase rendant tout moins long ( on charge d'abord le menu ) , puis les images du level 1 puis celle du level 2 sans redondance , etc ...
A mon avis dans la solution 1 que tu donne avec une appli lourde coté client on perd beaucoup du fun des jeux flash (pas de telechargement/installation/dezip , jouable partout , etc ... )
Voila quelques pistes ;)
Salut !
-
Oui pour la solution 1, disons que je pensais à ça comme une alternative qui permettrait à ceux qui jouent toujours chez eux de pas devoir lancer Firefox pour pouvoir jouer, puis rentrer l'adresse du site, etc !
Et ça permettrait d'économiser des masses de bande passante du serveur.
Ok merci pour les infos de la solution 2. Il était en effet prévu de charger les "packs" d'images importantes uniquement lorsqu'ils sont nécessaires.
Mais le but était de les stocker en cache "persistant" histoire de ne pas avoir besoin de les retélécharger après (si on économise 1Mo par joueur et par connexion, ça fait beaucoup à la fin :) )
Et les SharedObjects, je me demandais si on pouvait dévier leur utilisation dans ce but ! :)
-
Tu peux mais sa fait chier l'utilisateur qui veut faire juste une partie et la taille par site est limité ainsi que la taille total.
Puis le cache du navigateur te fera gagner de toute façon du poid coté serveur.
A mon avis faut optimisé globalement surtout pour les nouveaux users que pour les users réguliers.
puis a 1Mo par users , t'en faudrais quand meme 1000 pour 1Go et 100.000 pour atteindre le 100Go ce qui reste tres raisonnable d'autant que je connais pas ton jeu mais la plupart ne prendrons pas forcément les 1Mo ;)
-
Oui mais je ne parle pas du poids en base de donnée ou autre. Je parle surtout de transférer plus de 1Mo par personne et par connexion. S'il y a 1.000 joueurs, ça fait 1Go par connexion. Vu qu'il pourra y avoir 2 ou 3 connexions par jour (voire plus pour les plus vaillants), ça fait beaucoup !
Et tout ça est inutile... Car les images ne changeront jamais.
Donc si je pouvais économiser au moins 2Go de bande passante par jour, je serais content :)
Je pense qu'il ne me reste plus qu'à tester les sharedobject à grande échelle alors ?!
Je vous tiendrai au courant de l'évolution des choses. Mais c'est important d'économiser la BP... Ca garantit un chargement très rapide du jeu, donc pas d'attente pour jouer (entre autres)