Le mystère insondable des FONTES

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
drfloyd
Messages : 220
Inscription : mar. 21/août/2007 13:30
Contact :

Re: Le mystère insondable des FONTES

Message par drfloyd »

Ar-S a écrit :@zorro => 4 => vas te faire cuire le c....code :mrgreen:
Blague à part, je rejoints Zorro pour le coup des résolutions. Franchement 640x480 oublie. J'aime bien les jeux oldschool mais sur mon écran en QHD (2560 × 1440) je vais pleurer du sang.

Pour un jeu sans animation, scrolling etc, le canvas peut être intéressant.
Sinon Openscreen parait un peu logique.. En tout cas je viens de découvrir que le soucis de lag des souris à haut dpi disparait UNIQUEMENT avec le flag #PB_Screen_NoSynchronization
Autant que tu le saches drfloyd, si tu as une souris gamer avec dpi réglables, tu aurais des saccades en openscreen.
Et ben mes cadets, là c'est là fêtes. Des années que ce soucis me cassait les noix et me rebutait pour faire du jeu fullscreen.

merci pour ce TIP !
vurvur
Messages : 60
Inscription : ven. 29/août/2014 19:52

Re: Le mystère insondable des FONTES

Message par vurvur »

Encore une autre piste qui pourrait t'intéresser si tu veux simuler de la basse résolution et du pixellisé sur les écrans modernes: le rescaling

Comme dans ce remake d'un vieux Mario:

https://www.purebasic.fr/french/viewtop ... =2&t=17979

La routine de rescaling:

Code : Tout sélectionner

  offscreen = GrabSprite(#PB_Any,8,0,128,128)
  ClearScreen(0)
  factor.d = 128 / dh  ;;    note:  dh = DesktopHeight(0)
  size.l = 128/factor
  ZoomSprite(offscreen,size,size)
  DisplayTransparentSprite(offscreen,(dw/2) - (size/2),(dh/2) - (size/2))
  ZoomSprite(offscreen,#PB_Default,#PB_Default)
  FlipBuffers()
En gros l'écran entier du jeu est un petit sprite 128x128, que tu agrandis ensuite aux dimensions de l'écran.

Pas mal de remakes de jeux retros sur PC utilisent cette approche (par exemple, Cave Story)
drfloyd
Messages : 220
Inscription : mar. 21/août/2007 13:30
Contact :

Re: Le mystère insondable des FONTES

Message par drfloyd »

ah, c'est p'etre ca qu'il me faut !

J'ai pas encore bien compris,

Ok l'ecran est un sprite zoomé de 128x128 (quelque soit la définition du bureau)...

tu balances tes drawimage et plot/line à quel moment ?

Je vais essayer d'etudier le code du Mario qui semble dispo

Merci
Avatar de l’utilisateur
case
Messages : 1545
Inscription : lun. 10/sept./2007 11:13

Re: Le mystère insondable des FONTES

Message par case »

tu peux dessiner sur un sprite en utilisant

startdrawing(spriteoutput(#sprite))

; -- ici tu dessine tout ce qu'il y a a afficher

stopdrawing()

ou #sprite correspond bien sur a un sprite existant servant "d'écran" pour les operations 2D.
a noter que cela t’empêche d'utiliser des sprites car tu ne peux pas afficher de sprite dans un sprite
ImageImage
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: Le mystère insondable des FONTES

Message par Zorro »

case a écrit :a noter que cela t’empêche d'utiliser des sprites car tu ne peux pas afficher de sprite dans un sprite
et il me semble qu'on pouvais le faire dans le temps .... non ?
ps pour moi la 3.81 etait la meilleurs version de Purebasic :lol:



retrouvé !! c'ets bien dans la version 3.81 qu'on pouvais dessiner un sprite dans un sprite !!

grace a UseBuffer()
UseBuffer(#Sprite)
Description

Change la surface de rendu par defaut (l'ecran) par le #Sprite. Ainsi, toutes les commandes du type DisplaySprite(), DisplayTransparentSprite() etc.. seront appliquées sur le #Sprite. Pour revenir en mode normal (surface écran), il suffit de passer la valeur '-1' comme #Sprite.

je suis pas sur que Purebasic evolue .... dans le bon sens :roll:
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Le mystère insondable des FONTES

Message par falsam »

UseBuffer() fonctionnait uniquement avec DirectX7
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
vurvur
Messages : 60
Inscription : ven. 29/août/2014 19:52

Re: Le mystère insondable des FONTES

Message par vurvur »

drfloyd a écrit :ah, c'est p'etre ca qu'il me faut !

J'ai pas encore bien compris,

Ok l'ecran est un sprite zoomé de 128x128 (quelque soit la définition du bureau)...

tu balances tes drawimage et plot/line à quel moment ?

Je vais essayer d'etudier le code du Mario qui semble dispo

Merci
Tu balances simplement tout juste avant le rescaling:

[EDIT] code actualisé dans post plus bas

Et je préfère aussi toujours utiliser OpenWindowedScreen plutot que OpenScreen.
A mon sens c'est la solution la plus simple et qui évite les soucis liés aux changements de résolution.
Dernière modification par vurvur le jeu. 04/juin/2020 8:19, modifié 2 fois.
drfloyd
Messages : 220
Inscription : mar. 21/août/2007 13:30
Contact :

Re: Le mystère insondable des FONTES

Message par drfloyd »

Bon, en 320x200 j'ai reussi un truc. Ca donne une image nickel sans alliasing (les pixels paraissent du coup ENORMES)

Sauf que, cette solution fait ramer terriblement le jeu (je le sens dans le défilement de la route... bordel ca prend cher !)
vurvur
Messages : 60
Inscription : ven. 29/août/2014 19:52

Re: Le mystère insondable des FONTES

Message par vurvur »

drfloyd a écrit :Bon, en 320x200 j'ai reussi un truc. Ca donne une image nickel sans alliasing (les pixels paraissent du coup ENORMES)

Sauf que, cette solution fait ramer terriblement le jeu (je le sens dans le défilement de la route... bordel ca prend cher !)
Tu peux poster un code (simplifié si possible) qui présente le problème?
drfloyd
Messages : 220
Inscription : mar. 21/août/2007 13:30
Contact :

Re: Le mystère insondable des FONTES

Message par drfloyd »

bah j'ai pas de probleme, j'ai juste integré ton bout de code, adapté au 320x200

Ca ne devrait pas faire ramer le jeu ?
vurvur
Messages : 60
Inscription : ven. 29/août/2014 19:52

Re: Le mystère insondable des FONTES

Message par vurvur »

Tu veux dire quoi exactement? Affichage saccadé ? Baisse de FPS ? Les commandes ne répondent plus? Tout ça à la fois?

A priori non, ça ne doit pas "ramer"...

Pour être plus précis, tu peux voir dans le task manager le % d'utilisation du CPU avec mon code, et sans?

Dernière chose, assure-toi de mettre un ClearScreen(0) en début de boucle aussi (je l'avais oublié dans mon exemple - corrigé maintenant)
vurvur
Messages : 60
Inscription : ven. 29/août/2014 19:52

Re: Le mystère insondable des FONTES

Message par vurvur »

Nouvelle version du code exemple (avec animation, FPS élevé, CPU bas, quelques bugs corrigés):

Code : Tout sélectionner

InitSprite() : InitKeyboard() : InitMouse() : InitSound() : ExamineDesktops()

GameWidth = 320
GameHeight = 200

dw = DesktopWidth(0)
dh = DesktopHeight(0)
deltatime.d = 0

OpenWindowedScreen(OpenWindow(0,0,0,dw,dh,"RESCALING 101", #PB_Window_Maximize | #PB_Window_BorderLess),0,0,dw,dh,1,0,0)

CreateSprite(1,8,8)
StartDrawing(SpriteOutput(1))
DrawingMode( #PB_2DDrawing_Outlined)
box(0,0,8,8, #WHITE)
StopDrawing()


While #True
    
  ClearScreen(0)  ;;; tu balances tout ici 
  for a = 1 to 200
  DisplaySprite(1,random(40)*8,random(25)*8)
  next
  
  ;;; rescaling start
  offscreen = GrabSprite(#PB_Any,0,0,GameWidth,GameHeight)
  ClearScreen(0)
  factor.d = GameHeight / dh
  sizeH.l = GameHeight / factor 
  sizeW.l = GameWidth / factor 
  ZoomSprite(offscreen,sizeW,sizeH)
  DisplayTransparentSprite(offscreen,(dw/2) - (sizeW/2),(dh/2) - (sizeH/2))
  FreeSprite(offscreen)
  ;;; rescaling end
  
  FlipBuffers()
  
  e = WindowEvent() : delay(16) ;;; delay important!
  
  ExamineKeyboard(): if KeyboardReleased(#PB_Key_Escape) : end : endif   
Wend
Dernière modification par vurvur le jeu. 04/juin/2020 15:28, modifié 1 fois.
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Le mystère insondable des FONTES

Message par Ar-S »

Ce code utilise 13 puis 25% du GPU alors que j'ai une GTX 1080.. Pour du 320x200 upscale je ne vois pas trop la performance.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
vurvur
Messages : 60
Inscription : ven. 29/août/2014 19:52

Re: Le mystère insondable des FONTES

Message par vurvur »

Ar-S a écrit :Ce code utilise 13 puis 25% du GPU alors que j'ai une GTX 1080.. Pour du 320x200 upscale je ne vois pas trop la performance.
En CPU je suis plus bas que ça. Je parle du processeur graphique. Affiche le GPU dans ton task manager.
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Le mystère insondable des FONTES

Message par falsam »

Windows 10 - Intel I7-7700 HQ (2.80 Ghz) - Graphique GF GTX 1050

J'ai crée l'exécutable. Utilisation CPU 2.3% - GPU 13%
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre