Accueil > Forum > > > > optimisation affichage image bitmap en dynamique
optimisation affichage image bitmap en dynamique
lundi 26 juillet 2010 à 15:30:57 |
optimisation affichage image bitmap en dynamique

juliens81
|
Bonjour,
Je fait un jeu de carte. Il fonctionne comme suit, un serveur reçoit les changements d'états des parties en cours et renvoi la partie modifiée, X clients affichent aux joueurs la partie telle que communiquée par le serveur.
Comme le client ne sait pas ou seront les cartes ni combien elles seront, j ai un tableau dynamique d image.
mon problème est le suivant, entre chaque "rafraichissement" de partie je dois attendre entre 1000 et 2500ms (ce qui fait pas vraiment temps réel)
j'ai vérifié au niveau du serveur, il ne met pas plus de 50ms secondes à répondre et au niveau du client pas plus de 200ms entre l'envoi et la réception de la requête. Ce qui place le ralentissement au niveau de l'affichage des images.
avez-vous une idée pour afficher rapidement un tableau d'images bitmap de manière dynamique?
pour le moment je charge les images au fur et à mesure qu'elles arrivent pour ne pas prendre trop de mémoire.
est ce que j'y gagnerais à toutes les charger au départ quitte à les rendre visible/invisible et à les déplacer si besoin est?
merci d avance
ps si vous avez besoin de précisions n'hésitez pas
|
|
lundi 26 juillet 2010 à 16:26:43 |
Re : optimisation affichage image bitmap en dynamique

Francky23012301
|
Salut,
Ta question n'est pas clair en fait  :
1)Utilises tu TCP ou UDP pour transférer tes données ? Pour un jeu en réseau, on utilise souvent UDP  .
2)Tu parles d'images et de BitMap mais ce n'est pas la même chose. Don concrètement tu transfères quoi : des BitMap ou des TImages ?
3)Tu affiches tes images mais tu ne présises pas comment : tu utilises des TImages ?
Perso j'utiliserai un tableau de JPeg  . Par contre ne surtout pas utiliser un tableau de TImages qui va méchamment allourdir le temps de téléchargement et d'affichage 
|
|
lundi 26 juillet 2010 à 16:27:26 |
Re : optimisation affichage image bitmap en dynamique

Bacterius
|
Salut,
moi ce que j'aurai fait, c'est que j'aurai fait en sorte que le serveur envoie tout d'abord un nombre, qui indique le nombre de cartes à recevoir. Quand le client lit ce nombre, il alloue juste la place nécessaire, lit une carte, traite, lit une autre carte, traite, ...
Pour ce qui est des cartes, moi je les chargerai toutes en mémoire dès le début du programme dans un tableau de bitmaps, et j'enverrai que le numéro des cartes sur le réseau, comme ça l'affichage est rapide (copie mémoire locale) et le trafic est bas.
Après, ça dépend de comment tu as conçu ton jeu. Es-tu passé directement par les sockets, ou as-tu utilisé une librairie réseau, genre Indy ?
Salut, dans ce cas, je ferais un tableau dynamique de taille maximale (il y a quand même une limite supérieure dans le nombre de cartes j'imagine)
Cordialement, Bacterius !

|
|
lundi 26 juillet 2010 à 16:29:12 |
Re : optimisation affichage image bitmap en dynamique

Bacterius
|
Oups échec à la fin de mon post, ignorer les deux dernières lignes.
Salut Francky,
pourquoi pas des PNG ? Car les JPG pour des jeux de carte, ça va mettre des problèmes de couleur (le rouge est souvent beaucoup plus "rouge bordeaux"), et la compression sera meilleure en PNG. En transmettant non pas les images mais des numéros correspondant aux cartes. Mais bon, c'est une idée.
Cordialement, Bacterius !

|
|
lundi 26 juillet 2010 à 16:57:05 |
Re : optimisation affichage image bitmap en dynamique

Francky23012301
|
Pourquoi pas des PNG car il me semble que le composant TImage ne gère pas ce format  . Alors tu vas me dire qu'il y a des libs mais bon s'il peut éviter ce genre de chose c'est mieux.
Sinon effectivement, la façon de voir Juliens81 (Qui a pas mal floodé sur sa dernière question et risque de se faire disputer  ) est à revoir. La meilleur des solutions serait la tienne, stratégiquement parlant (Bon après on peut améliorer le concept en créant des types et des records). Mais il est clair que de transférer des images, des bitmaps, des jpeg, des png est surement pas la bonne méthode pour avoir un truc optimisé. 
|
|
lundi 26 juillet 2010 à 17:08:04 |
Re : optimisation affichage image bitmap en dynamique

juliens81
|
re bonjour,
tout d abord merci pour toutes ces reponses.
c est vrai que je n ai pas ete tres clair par rapport aux images que j utilisent. elles sont deja sur la machine du client dans un repertoire a part. le probleme ne vient donc pas du telechargement.
J ai essayer de mettre des JPG a la place de mes BMP mais ca n accelere pas l affichage (j ai meme l impression que c est l inverse)
pour mon affichage je fais un strech sur mes images, est ce que ca peut poser probleme?
pour ce qui est du protocole de communication je fais des sockets
j espere avoir ete plus clair cette fois ci
|
|
lundi 26 juillet 2010 à 17:24:27 |
Re : optimisation affichage image bitmap en dynamique
|
lundi 26 juillet 2010 à 17:33:53 |
Re : optimisation affichage image bitmap en dynamique

juliens81
|
la procedure de chargement en soit ne pose pas de probleme (j ai fait un log et en 200ms maximum mes donnees sont chargees)
pour la procedure d affichage d image la voici.
function creation_carte(cpt,identifiant_carte,hauteur,largeur:integer;position:Tpoint;lien_image:string):integer;
var temp,temp2:string;
begin
result:=0;
if cpt>nbcartes then begin
try
tabcartes[cpt]:=timage.Create(Form1);
tabcartes[cpt].Parent:=Form1;
// nbcartes:=cpt;
// nbcartes:=nbcartes+1;
inc(nbcartes);
except
result:=1;
end;
end;
tabcartes[cpt].Height:=hauteur;
tabcartes[cpt].Width:=largeur;
tabcartes[cpt].Stretch:=true;
if lien_image<>'' then begin
{if pos('.bmp',lien_image)>0 then begin
if fileexists(StringReplace(lien_image,'.bmp','.jpg',[rfReplaceAll, rfIgnoreCase])) then begin
lien_image:=StringReplace(lien_image,'.bmp','.jpg',[rfReplaceAll, rfIgnoreCase]);
end;
end;}
// si la carte est trop petite on charge une carte deja reduite pour accelerer l affichage
if hauteur<=150 then begin
temp:=lien_image;
temp2:='';
while pos('\',temp)>0 do begin
temp2:=copy(temp,1,pos('\',temp));
delete(temp,1,pos('\',temp));
end;
temp2:=temp2+'\mini\'+temp;
if fileexists(temp2) then
lien_image:=temp2;
end;
tabcartes[cpt].Picture.LoadFromFile(lien_image);
tabcartes[cpt].Visible:=true;
tabcartes[cpt].Enabled:=true;
end else begin
tabcartes[cpt].Visible:=false;
tabcartes[cpt].Enabled:=false;
end;
tabcartes[cpt].Left:=position.X;
tabcartes[cpt].top:=position.Y;
// tabcartes[cpt].Height:=235;
// tabcartes[cpt].Width:=161;
tabcartes[cpt].Tag:=identifiant_carte;
tabcartes[cpt].OnClick:=form1.Image1.OnClick;
tabcartes[cpt].OnDblClick:=form1.Image1.OnDblClick;
tabcartes[cpt].OnMouseMove:=form1.Image1.OnMouseMove;
end;
elle est appelle environ 40 fois et au maximum 90 fois (j ai fait en sorte de ne pas afficher les cartes qui se superpose.
pour la taille des images elles font 348x475 de base et dans le repertoire mini (les memes en reduites) elle font 144x200
|
|
lundi 26 juillet 2010 à 17:45:15 |
Re : optimisation affichage image bitmap en dynamique

juliens81
|
je viens d essayer sur une autre machine et l affichage se fait correctement.
je vous remercie du temps que vous avez passez a m aider.
a une prochaine fois, pour une question que j espere plus pertinente.
|
|
Cette discussion est classée dans : dynamique, image, serveur, affichage, bitmap
Répondre à ce message
Sujets en rapport avec ce message
Convetir une imag en Bitmap [ par sebastienbro ]
Je veux convertirune image en ICO, mais il me met une erreur : Image icône incorrectAidez moi !!!!!
Affichage rapide d'image [ par zorg63 ]
Désolé pour le tire qui n'est pas très clair, je ne savais pas comment résumer mon problème. Le voici :Je viens de poster une source utilisant l'affic
Prob DLL des ressources bitmap [ par ahmed12 ]
Je utilise une dll qui contient des bitmaps a pris avoir compiler une ressource.Et j'ai arrivé de charger ces bmp dans la l'application Hote avec ce
Affichage d'image avec WebSnap [ par mourad_kharrat ]
je travail actuellement sur un site web ou il m'est demander de charger des images a partir d'une base de données MsSql Server (champs de type image)
Affichage d'un bitmap avec scrollbar [ par jmic ]
Bonjour, Je cherche, depuis bien longtemps, le moyen d'afficher dans une fiche (qui contient d'autres choses) un fichier bitmap de grande taille, avec
Copie d'une partie d'un image [ par Rapakooti ]
Alors mon pb viens du fait que j'essaie de faire une applique skinnable et par soucis de facilite lors de la creation des futur skins , toutes les ima
affichage dynamique des form ? [ par SaintAL ]
salutj'utilise Delphi 6 pour faire une application de gestion commerciale. j'ai utilisé un module des donnée pour mettre tous les composants ADO utili
Pb conversion image. [ par Becracker ]
Salut les gars, Je suis entrain de faire un convertisseur d'image Bmp à Gif. J'ai mis le code suivant mais il ya une er
Question sur les streams [ par Francky23012301 ]
Salut à tous,J'ai besoin de faire une application qui utilise les flux malheureusement il n 'y pas grand chose sur le sujet :Voila j'ai un serveur et
Image d'affichage d'un composant [ par Sloridan ]
Salut, J'aimerais savoir comment on peut changer l'image d'affichage d'un composant (pas son icone). Mon composant hérite de TGraphicsControl, donc il
Livres en rapport
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|