Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1201 Le 21/07/2011, à 18:50

The Uploader

Re : /* Topic des codeurs couche-tard [5] */

non, c'est juste ultra lent (upload à 86%). edit: fait! Attention pour les données, c'est une forced update (un seul commit pour les données, toujours modifié par la suite, histoire de pas ralentir encore plus l'upload, et de pas versionner du binaire, ce qui ne sert à rien). Un pull (fetch+merge) donnera un conflit. Vaut mieux refaire un clone. ^^

De toute façons, il va falloir que je nettoie tout ça (mais un autre jour. tongue ).

Bon un menu et de la zik on a dit... \o/
edit: woohoo, faire bouger la souris un peu vite en rond prend 13% du CPU selon htop. C't'un Core2Duo T5800... O_o
@screen est pourtant "HWSURFACE" (dans la mémoire vidéo) et "DOUBLEBUF".. (c'est peut-être le double buffer ? non c'est pareil).
Ben heureusement que je fais pas un shoot them up ultra nerveux.. O_o

Dernière modification par The Uploader (Le 21/07/2011, à 19:07)


- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10

Hors ligne

#1202 Le 21/07/2011, à 19:52

tshirtman

Re : /* Topic des codeurs couche-tard [5] */

je sais pas pour ruby-game, mais pour pygame HWSURFACE apporte plus de complexité au code que de perf, peu d'intérêt… ce qui fait mal ou bien au perf, c'est le format de pixel de l'image (nb couleur, profondeur…), pour qu'un blit se fasse avec des performances décentes, il faut que les deux surfaces aient le même format, on utilise la fonction convert_alpha() sur une image après l'avoir chargé, on récupère le résultat et on blit ça sur l'écran, et pouf, on gagne environ 80% de perfs…

Dernière modification par tshirtman (Le 21/07/2011, à 19:52)

Hors ligne

#1203 Le 21/07/2011, à 20:18

grim7reaper

Re : /* Topic des codeurs couche-tard [5] */

tshirtman a écrit :

je sais pas pour ruby-game, mais pour pygame HWSURFACE apporte plus de complexité au code que de perf, peu d'intérêt…

Bah ça apporte rien en complexité, sauf si tu veux bosser direct sur les pixels (là ok : faut locker l'image, la ramener en RAM, faire ta bidouille, la delocker et la renvoyer en VRAM).
Y'a d'autres complications avec pygame ?

Par contre si, ça boost les perf vu que tu utilises la VRAM au lieu de la RAM. Si tu choisis bien les images à caler en VRAM y'a moyen de sentir la différence.
Du moins en théorie, car je sais que pendant longtemps Xorg ne permettait pas d'utiliser HWSURFACE et la SDL faisait donc un fallback silencieux sur SWSURFACE, je ne sais pas ce qu'il en est aujourd'hui hmm

tshirtman a écrit :

ce qui fait mal ou bien au perf, c'est le format de pixel de l'image (nb couleur, profondeur…), pour qu'un blit se fasse avec des performances décentes, il faut que les deux surfaces aient le même format, on utilise la fonction convert_alpha() sur une image après l'avoir chargé, on récupère le résultat et on blit ça sur l'écran, et pouf, on gagne environ 80% de perfs…

Là par contre tu as totalement raison, ce truc là joue vraiment pas mal (donc faut convertir une bonne fois pour toute au moment de charger l'image comme tu le dis). Parce que sinon on se bouffe une conversion à chaque blit et ça peut pourrir violemment les perf'.

Par contre je trouve le nom de la fonction convert_alpha mal choisi pour cette tâche O_o".
Ça doit être spécifique à pygame, en C c'est plutôt la fonction SDL_DisplayFormat (ou SDL_DisplayFormatAlpha si canal alpha il y a) qu'on utilise.
Mais bon ça c'est l'un des premiers trucs que t'apprends en SDL normalement (même sur le Site du Zéro y'en a qui le savent, c'est dire tongue).


Tiens, tant que tu passes par là j'ai une requête : tu pourrais me faire disparaître des scores du TdCT stp ? Ça fait un moment que je n'y passe plus et, après avoir réfléchi, je ne compte pas y revenir. Donc disparaître des scores serait une manière pour moi « d'officialiser » cette décision ^^"
Merci d'avance wink

Dernière modification par grim7reaper (Le 21/07/2011, à 20:24)

Hors ligne

#1204 Le 21/07/2011, à 20:24

tshirtman

Re : /* Topic des codeurs couche-tard [5] */

en fait, la fonction de base s'appelle "convert" et la version pour les images avec canal alpha s'appelle convert_alpha… oui, du coup c'est pas tout à fait évident…

pour HWSURFACE j'avoue que je pas personnellement vérifié, mais dans l'un des tutos que j'avais lu au début, quand les perfs d'USF étaient juste inexploitable, il expliquait à la fois le coup des convert, et le peu d'intérêt des HW. Bon sinon, faudrait que je vérifie, je fais pas mal de traitement d'images au vol, mais pas au pixel (enfin, pas moi, le C oui par contre) donc je ne sais pas si ça marcherait ou pas… je regarderais… (mais c'est loin d'être les perfs graphique, mon problème le plus important à ce jour).

edit: et oui je m'en occupe wink

Dernière modification par tshirtman (Le 21/07/2011, à 20:24)

Hors ligne

#1205 Le 21/07/2011, à 20:28

grim7reaper

Re : /* Topic des codeurs couche-tard [5] */

tshirtman a écrit :

en fait, la fonction de base s'appelle "convert" et la version pour les images avec canal alpha s'appelle convert_alpha… oui, du coup c'est pas tout à fait évident…

Ouais, une fois n'est pas coutume je trouve le C plus explicite sur ce coup.

tshirtman a écrit :

pour HWSURFACE j'avoue que je pas personnellement vérifié, mais dans l'un des tutos que j'avais lu au début, quand les perfs d'USF étaient juste inexploitable, il expliquait à la fois le coup des convert, et le peu d'intérêt des HW.

Si t'as le lien du tuto, je ne serais pas contre y jeter un œil smile

Hors ligne

#1206 Le 21/07/2011, à 20:45

The Uploader

Re : /* Topic des codeurs couche-tard [5] */

grim' a écrit :

Mais bon ça c'est l'un des premiers trucs que t'apprends en SDL normalement

Ben de fait ça va l'être (j'ai regardé MicroMachines, y'a bien des MapRGB, mais pas de DisplayFormatAlpha), car 13% d'un Core2Duo pour bouger la souris c'est juste ignoble! ^^'

Sinon dans Rubygame c'est Rubygame::Surface.convert, semble-t-il :

(gem-server)-http://0.0.0.0:8808/doc_root/rubygame-2.6.4/rdoc/Rubygame/Surface.html#method-i-convert a écrit :

convert( other=nil, flags=nil )

Copies the Surface to a new Surface with the pixel format of another Surface, for fast blitting. May raise SDLError if a problem occurs.

This method takes these arguments:
other   

The Surface to match pixel format against. If nil, the display surface (i.e. Screen) is used, if available; if no display surface is available, raises SDLError.

flags   

An array of flags to pass when the new Surface is created. See Surface#new.

Bon y'a aussi to_display et to_display_alpha.

grim' a écrit :

Bah ça apporte rien en complexité, sauf si tu veux bosser direct sur les pixels (là ok : faut locker l'image, la ramener en RAM, faire ta bidouille, la delocker et la renvoyer en VRAM).

Je crois qu'heureusement je n'aurais pas à faire ça. Empiler deux/trois surfaces (genre une roquette au dessus d'un soldat + l'anim quand il se la prend, et ne pas oublier le terrain en dessous de tout ça) suffira, j'pense..

Dernière modification par The Uploader (Le 21/07/2011, à 21:04)


- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10

Hors ligne

#1207 Le 21/07/2011, à 21:25

The Uploader

Re : /* Topic des codeurs couche-tard [5] */

Bon, to_display/to_convert n'avait pas l'air de faire effet (sans faire d'erreurs, génial). Passé par GIMP. hmm


- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10

Hors ligne

#1209 Le 21/07/2011, à 21:41

grim7reaper

Re : /* Topic des codeurs couche-tard [5] */

@The Uploader : Ouais d'ailleur en regardant le code source, c'est plus les méthodes to_display* (et non pas to_convert, enfin ça peut le faire aussi mais c'est plus chiant) qu'il faut appeler.
Après ton problème de perf vient peut‑être d'autre chose (ça va mieux après le coup de Gimp ou pas ?).



@tshirtman : c'est le même ça ?

le tuto a écrit :

It only works on some platforms. Windows machines can usually get hardware surfaces if you ask for them. Most other platforms can't. Linux, for example, may be able to provide a hardware surface if X4 is installed, if DGA2 is working properly, and if the moons are aligned correctly. If a hardware surface is unavailable, sdl will silently give you a software surface instead.

Ça ça rejoint malheureusement mes observations, faudrait vraiment voir si c'est encore d'actualité.

le tuto a écrit :

It only works fullscreen.

Ça je savais pas, faudra que je me renseigne là dessus.

le tuto a écrit :

It complicates per-pixel access. If you have a hardware surface, you need to Lock the surface before writing or reading individual pixel values on it. If you don't, Bad Things Happen. Then you need to quickly Unlock the surface again, before the OS gets all confused and starts to panic. Most of this process is automated for you in pygame, but it's something else to take into account.

Ouais, là aussi on est d'accord smile

le tuto a écrit :

You lose the mouse pointer. If you specify HWSURFACE (and actually get it), your pointer will usually just vanish (or worse, hang around in a half-there, half-not flickery state). You'll need to create a sprite to act as a manual mouse pointer, and you'll need to worry about pointer acceleration and sensitivity. What a pain.

J'ai jamais observé ce comportement, mais c'est peut-être parce que X11 n'a jamais voulu me donner une surface HW ^^"
Et puis aussi parce j'utilisais rarement la souris dans les jeux que je développais.
M'enfin, faudra que je teste un jour.

le tuto a écrit :

It might be slower anyway. Many drivers are not accelerated for the types of drawing that we do, and since everything has to be blitted across the video bus (unless you can cram your source surface into video memory as well), it might end up being slower than software access anyway.

Bah stun peu le but en même temps, mettre l'écran et les sprites/tiles souvent affichés dans la VRAM.
Sinon c'est sûr que si on met juste l'écran l'intérêt est pas fameux.


M'enfin c'est vrai que si X11 continue encore aujourd'hui de faire chier pour les HWSURFACE bah vaut mieux rester sur les SWSURFACE.

Dernière modification par grim7reaper (Le 21/07/2011, à 21:53)

Hors ligne

#1211 Le 21/07/2011, à 21:49

The Uploader

Re : /* Topic des codeurs couche-tard [5] */

Après ton problème de perf vient peut‑être d'autre chose (ça va mieux après le coup de Gimp ou pas ?).

Moui, je suis à 3% (au lieu de 4%) quand il ne se passe rien ('fin quand je bouge pas la souris, donc tongue ), à 13% quand je commence à bouger la souris comme un fou, puis 12/11/10% ensuite (au lieu de 13%/14% en permanence lors des mouvements).

J'crois surtout qu'il faudrait que j'évite de faire des draw/undraw quand il ne se passe rien. Mais faut bien définir le "il ne se passe rien" pour pas tout casser la logique undraw/update/draw. ^^'

Dernière modification par The Uploader (Le 21/07/2011, à 21:53)


- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10

Hors ligne

#1212 Le 21/07/2011, à 21:56

grim7reaper

Re : /* Topic des codeurs couche-tard [5] */

Bah alors peut-être que le gouffre à ressources est ailleurs.
Ptetr un FPS trop rapide ?

The Uploader a écrit :

J'crois surtout qu'il faudrait que j'évite de faire des draw/undraw quand il ne se passe rien. Mais faut bien définir le "il ne se passe rien" pour pas tout casser la logique undraw/update/draw. ^^'

Ouais, ou ça aussi ^^

Dernière modification par grim7reaper (Le 21/07/2011, à 21:58)

Hors ligne

#1214 Le 21/07/2011, à 21:59

The Uploader

Re : /* Topic des codeurs couche-tard [5] */

Il est à 10 :

@clock.target_framerate=10

Après, faudrait peut-être vérifier le FPS effectif..


- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10

Hors ligne

#1215 Le 21/07/2011, à 22:01

tshirtman

Re : /* Topic des codeurs couche-tard [5] */

ouch avec seulement 10?

c'est peut être un peu foireux le concept des undraw tongue perso je préfère tout dessiner à chaque fois que nécessaire tongue
edit: hum, usf bouffe 19% dans les menus, que la souris bouge ou pas (mais il se passe des choses tout le temps dans les menus, y'a des sprites qui bougent derrière et tout), et dans les 90% en jeu big_smile.

Dernière modification par tshirtman (Le 21/07/2011, à 22:04)

Hors ligne

#1216 Le 21/07/2011, à 22:04

grim7reaper

Re : /* Topic des codeurs couche-tard [5] */

Oui, faut faire gaffe à undraw c'est pas toujours utile.
Mais là pour un curseur ça me semble assez logique : t'effaces l'ancien et t'affiches le nouveau, ça me choque pas.

Après si t'as trouzmille sprites, bah là faut pas se faire chier à undraw : tu reblittes le background un gros coup sur tout l'écran et tu refais l'affichage des sprites avec leurs nouvelles coordonnées.



Édit : BN World! (à partir de demain soir je suis en congé pour 3 semaines \o/)
Et up

/me sur la page précédente a écrit :

Édit : Πυλάδης, si tu pouvais me blacklister ça serait cool wink

(au cas ou tu ne lises pas la page précédente ^^)

Dernière modification par grim7reaper (Le 21/07/2011, à 22:13)

Hors ligne

#1217 Le 21/07/2011, à 22:20

The Uploader

Re : /* Topic des codeurs couche-tard [5] */

c'est peut être un peu foireux le concept des undraw tongue perso je préfère tout dessiner à chaque fois que nécessaire

Ben sans utilise Rubygame::Sprites::Group.undraw, j'ai des trainées. tongue
Puis bon ce sera pareil pour tous les sprites qui bougent. Tu fais comment sans undraw d'abord ? Oo

Puis la souris a besoin de changer de forme (notamment quand on donne un ordre à une unité d'attaquer/d'aller à) à, s'pour ça qu'il lui faut un sprite. ^^'

edit :

grim' a écrit :

Après si t'as trouzmille sprites, bah là faut pas se faire chier à undraw : tu reblittes le background un gros coup sur tout l'écran et tu refais l'affichage des sprites avec leurs nouvelles coordonnées.

ah, pas con! >_<
edit : vu les paramètres de Rubygame::Sprites::Group.undraw(@screen, @background), je crois que c'est exactement ce qu'il fait.

Dernière modification par The Uploader (Le 21/07/2011, à 22:24)


- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10

Hors ligne

#1218 Le 21/07/2011, à 22:23

Pylades

Re : /* Topic des codeurs couche-tard [5] */

grim7reaper a écrit :

Et up

/me sur la page précédente a écrit :

Édit : Πυλάδης, si tu pouvais me blacklister ça serait cool wink

(au cas ou tu ne lises pas la page précédente ^^)

Ah oui, je l’avais déjà fait ; j’ai oublié de le signaler. ^^

Dernière modification par Πυλάδης (Le 22/07/2011, à 02:04)


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#1219 Le 21/07/2011, à 22:46

The Uploader

Re : /* Topic des codeurs couche-tard [5] */

Bon ben j'appelle undraw juste quand la souris bouge, ben c'est encore pire! O_o (3% idle, 17% quand je fais bouger).
Et un peu d'autres manières, ça fait plein de bugs. >_<, genre :

def mousemoved
  if @rect.topleft!=@event.pos
    @game.undraw
    @rect.toplef=@event.pos
    @game.draw
  end
end

(bon ce code fait spaghetti j'trouve... Un sprite qui appelle le undraw/draw du groupe de sprites du jeu.. hmm  heureusement qu'il ne marche pas!)
scregneugeu.. è_é
edit: rajouté la zik (UNE ligne! \o/ UNE, 1, one line! \o/ ), mise à jour des sprites faite... Bon ben le menu avec des polices sera pour demain... hmm
Bonne nuit! smile

edit: ah non demain je fais des PDFs qui font ce qu'ils veulent! nannnnnnnnnnnnnnnnnn! >_<

Dernière modification par The Uploader (Le 21/07/2011, à 23:15)


- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10

Hors ligne

#1220 Le 22/07/2011, à 00:09

cm-t

Re : /* Topic des codeurs couche-tard [5] */

'Nuit;


Actu Ubuntu            ☺/
Pauses Ubuntu sur Paris            \_< -t
[(π)] La Quadrature du net

Hors ligne

#1221 Le 22/07/2011, à 00:37

HP

Re : /* Topic des codeurs couche-tard [5] */

plop += 1


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#1223 Le 22/07/2011, à 01:02

Sir Na Kraïou

Re : /* Topic des codeurs couche-tard [5] */

Æ ?! yikes


Descendant de Charlemagne et de LUCA.
Bleu, en l'hommage d'un truc bleu. :'(
C'est pas du bleu.
C'est pas le lac de Genève, c'est le Lac Léman.

Hors ligne

#1224 Le 22/07/2011, à 02:02

nesthib

Re : /* Topic des codeurs couche-tard [5] */

plop


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#1225 Le 22/07/2011, à 02:22

samυncle

Re : /* Topic des codeurs couche-tard [5] */

HP a écrit :

plop += 1

plop += 10


Hello world

Hors ligne