Page 2 sur 4
Re: Le mystère insondable des FONTES
Publié : mer. 20/mai/2020 14:32
par drfloyd
donc en gros je m'emmerde pour rien.... c'est l'utilisateur au lancement du jeu qui doit se dire "merde mon bureau est zoomé"
pourtant j'ai pas souvenir dans un jeu ou une application d'avoir été emmerdé par le zoom de mon bureau. Je viens de lancer 4 ou 5 jeu en zoom 150% de bureau et y a pas de soucis d'affichage
Re: Le mystère insondable des FONTES
Publié : mer. 20/mai/2020 16:11
par drfloyd
La méthode hybride semble poser le meme soucis : lors de la création des sprites ceux ci sont deja déformés par la taille farfelue des polices du au zoom du bureau
OU ALORS ne pas créer une fonction TEXT en methode hybride mais en méthode 100% graphique "mega demo" comme suggéré. Ensuite il n'y aura plus que le scale de l'image à gérer....
Il existe des bases graphiques de tiles gratuites de caractères préétéblies qui reprennent l'ordre précis établi des CHR() 0 a 255 du PC ? Avec les accents é è à ç..... j'ai trouvé ca mais y a pas les caracteres francais :
https://opengameart.org/content/the-col ... for-grafx2
Re: Le mystère insondable des FONTES
Publié : mer. 20/mai/2020 17:33
par Marc56
drfloyd a écrit :Il existe des bases graphiques de tiles gratuites de caractères préétéblies qui reprennent l'ordre précis établi des CHR() 0 a 255 du PC ? Avec les accents é è à ç..... j'ai trouvé ca mais y a pas les caracteres francais :

Tu as l'option de créer tes propres tuiles de lettres avec accents et même caractères unicode.
CreateImage(), StartDrawing(), DrawText(), SaveImage() etc
Mais tu dois déjà avoir utilisé ces technique dans d'autres langages. PB propose
GrabImage() pour découper les planches rapidement et facilement.
Simplicité de PB: on n'a pas un truc ? on le fabrique

Re: Le mystère insondable des FONTES
Publié : mer. 20/mai/2020 22:14
par drfloyd
Marc56 a écrit :drfloyd a écrit :Donc je crois que de toute façon il faut que j'arrive à demander au programme de ramener le zoom du GUI à 100% des le lancement de mon programme... c'est là mon réel soucis.
Le problème est que cela demandera intervention de l'utilisateur (confirmation) et même nécessitera parfois le redémarrage de la session Windows car certains éléments graphiques ne peuvent être redimensionnés directement.
Si tu veux la même taille de texte sur tous les PC, il faut que tu joues avec TextHeight, TextWidth et les fonctions d'échelle (DesktopScaledX, DesktopScaledY, DesktopUnscaledX, DesktopUnscaledY)

Par rapport à l'echalle du bureau, j'ai mis ca dans mon programme :
DesktopScaledX(100)
DesktopScaledY(100)
mais ca n'a pas d'effet... si le bureau est à 150% ca reste à 150% pour le jeu
C'est p'etre un peu plus compliqué ? (LOL)
Re: Le mystère insondable des FONTES
Publié : jeu. 21/mai/2020 8:23
par vurvur
Tu peux simplement essayer ceci (testé chez moi OK):
(attention, pour obtenir l'effet recherché il est indispensable d'activer
"Enable DPI aware executable" dans les options de compilation!)
Code : Tout sélectionner
InitSprite()
OpenWindow(0, 0, 0, 470, 250, "Fonte DrawText taille constante", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SetWindowColor(0, 0)
OpenWindowedScreen(WindowID(0),0,0, 470,250,0,0,0)
fontname$ = "Consolas" : fontsize = 14
font = LoadFont(#PB_Any, fontname$, DesktopUnscaledY(fontsize))
Repeat
Event = WindowEvent() : delay(10)
StartDrawing(ScreenOutput())
DrawingFont(fontID(font))
DrawText(30, 20, "Caractères accentués -- 123456789 ", #GREEN)
Line(30, 60, 330, 1, #GREEN)
Line(30, 63, 330, 1, #GREEN)
StopDrawing()
Until Event = #PB_Event_CloseWindow
Note 1: la ligne magique est:
Code : Tout sélectionner
font = LoadFont(#PB_Any, fontname$, DesktopUnscaledY(fontsize))
Note 2:
A l'inverse de Terminal, Consolas inclut tous les caractères accentués.
Sinon, 2 autres fontes de qualité (et présentes sur tous les PC) que je peux conseiller: FixedSys et Georgia
Re: Le mystère insondable des FONTES
Publié : jeu. 21/mai/2020 8:39
par Zorro
Salut,
tu as peut etre une autre solution , vu que tu bosses essentiellement en Graphique (openwindows)
tu peut faire a l'ancienne
juste avant de lancer ton jeux, tu force une resolution précise
puis a la fin , tu remet la resolution du bureau qu'il y avait avant .....
ici le code pour forcer la resolution en 800x600 quelque soit le résolution du bureau au depart
le code affiche dans un premier temps les résolution possible sur l'ordinateur Hote, puis
il faut attendre un peut (3-4 seconde) , pour que le changement se fasse (passage en 800x600)
puis ça remet la resolution du depart (apres le delay)
donc lancez le code, et soyez patient , regardez le changement de résolution ...jusqu'a la fin de ce code de demo
en principe tu n'aura plus de soucis de DPI , puisque tu impose la résolution de ton jeux !
(ce que font la plupart des autres Basic)
Code : Tout sélectionner
Declare enumdisplay2()
Declare setresolution(width, height, depth, flag=#cds_fullscreen)
EnumDisplay2() ; affiche les resolution possible de l'ecran
Delay(5000)
ExamineDesktops()
; recup la resolution actuel
reso_x=DesktopWidth(0)
reso_y=DesktopHeight(0)
SetResolution(800, 600, 32) ; change la resolution en 800x600 32 bits
debug "on est en 800x600"
Delay(3000) ; on patiente 3 secondes
SetResolution(reso_x, reso_y, 32) ; et on remet la resolution de depart
debug "on est revenu en 1080x1920"
Procedure EnumDisplay2()
a=1
While a
a=EnumDisplaySettings_(0,b,dmEcran.DEVMODE)
b=b+1
Debug Str (dmEcran\dmPelsWidth)+" x "+ Str (dmEcran\dmPelsHeight)+" x "+ Str (dmEcran\dmBitsPerPel) + " @ "+Str(dmEcran\dmDisplayFrequency)
Wend
EndProcedure
Procedure SetResolution(Width, Height, Depth, Flag=#CDS_FULLSCREEN)
Protected Result, dmScreenSettings.DEVMODE
dmScreenSettings\dmSize = SizeOf(DEVMODE)
dmScreenSettings\dmPelsWidth = Width
dmScreenSettings\dmPelsHeight = Height
dmScreenSettings\dmBitsPerPel = Depth
dmScreenSettings\dmFields = #DM_PELSWIDTH | #DM_PELSHEIGHT | #DM_BITSPERPEL
If ChangeDisplaySettings_(@dmScreenSettings, Flag) = #DISP_CHANGE_SUCCESSFUL
Result = #True
EndIf
ProcedureReturn Result
EndProcedure
; Epb
Re: Le mystère insondable des FONTES
Publié : lun. 25/mai/2020 17:18
par drfloyd
Merci pour vos nouvelles propositions de solution, c'est top
je vais les essayer toutes les 2 des que possible et je reviens
(je suis étonné que le probleme ne soit jamais soulevé sur le forum en fait)
Re: Le mystère insondable des FONTES
Publié : lun. 25/mai/2020 17:41
par drfloyd
Bonne Nouvelle
la ligne magique de Vurvur résout à 100% le probleme des fontes à tailles variables selon le PC !
font= LoadFont(#PB_Any, fontname$, DesktopUnscaledY(fontsize))
J'ai essayé sur 3 PC, j'ai desormais le meme resultat de tailles de fonte sur les 3 PC !!!!!! (dommage que cette astuce simple ne soit pas dans la doc, ou directement dans le code source)
RESTE MAINTENANT l'ecran zoomé qui reste zoomé . Je vais voir avec la méthode Zorro.
Re: Le mystère insondable des FONTES
Publié : mar. 26/mai/2020 23:47
par drfloyd
Prof Dobro,
J'ai testé votre programme. ok.
Mais je pige pas, ca ne revient pas au même que de faire tout simplement :
OpenScreen(800,600,32,"COSMOS",#PB_Screen_SmartSynchronization)
??????
Re: Le mystère insondable des FONTES
Publié : mer. 27/mai/2020 9:38
par case
ça change la résolution du bureau du coup il est possible d'utiliser le mode fenêtré avec ou sans bordures, avec openwindowedscreen(), ou un canvas.
alors qu'un openscreen() ne permet que l'usage d'un screen.
tout dépend de ce que l'on veux faire, et de ce qu'on a besoin.
a priori je suis tombé sur un post sur stack overflow concernant la modification du scaling et il n'y a pas d'api fournie par microsoft.
https://stackoverflow.com/questions/352 ... ng-c-sharp
post très intéressant mais je ne saurais l'adapter en code pure basic

Re: Le mystère insondable des FONTES
Publié : mer. 27/mai/2020 17:33
par Zorro
j'ajouterai que lorsque tu ouvre un screen par
OpenScreen(800,600,32,"COSMOS",#PB_Screen_SmartSynchronization)
c'est la resolution du screen que tu choisi (mais la carte graph est toujours dans sa resolution Native (ex 1080x1920)
alors que le code que j'ai mis, c'est la resolution du system que tu changes!!
comme lorsque tu utilises les parametre de ta carte Graph ....
du coup la resolution de base est vraiment changé !!
d'ailleurs faut faire gaffe avec ça ,
1-certains moniteur peuvent ne pas apprécier la manoeuvre (surtout coté changement de frequence)
2- il ne faut pas oublier de remettre l'ordinateur dans sa config d'avant le changement !!!!
sinon les gens ralent au sortir de nos programme de se retrouver avec un bureau en 800x600 LOL
ps: et arrete de m'appeler "Prof" ..

Re: Le mystère insondable des FONTES
Publié : mer. 27/mai/2020 17:45
par drfloyd
Je peux rajouter 3 questions ? (je suis un sacré chiant)
1. Donc pour un simple jeu, vous me conseillez donc plutot la methode "ZORRO" que la simple méthode OPENSCREEN (meme si je crois que j'ai pas vraiment compris la différence) ?
2. Dans un cas ou l'autre il n'y plus de possibilité de fullscreen du coup ? (le jeu est en 640x400)
3. Est ce raisonnable de faire un jeu en 640x400 alors que le standard est 640x480 ?
Après je vais essayer de vous lacher les baskets avec les fontes et le zoom de desktop LOL
Re: Le mystère insondable des FONTES
Publié : mer. 27/mai/2020 18:39
par Zorro
1- comme tu le sents !!
2- 640x400 de nos jour est pas vraiment une bonne chose
le mieux c'est de coder dans des résolutions actuelles ... quitte pour ça a faire tes sprites plus gros pour qu'on puisse les voir LOL
3-ce n'est pas raisonnable de faire un jeux dans des resolutions petite , le mieux c'est 1080x1920 de nos jours !!
comme je te le dis quit a augmenter la taille de tes sprites si tu veux donner un aspect "Old-school"
(au lieu de faire un point tu fait des carrés de plusieurs point pour simuler un pixel plus gros )
les cartes graphiques recente , gerent le Ful-hd , faire en dessous, c'est pas l'ideal ... ton prg ira 1000 fois plus vite
sur un ordi Cablé pour du HD en etant codé en 1080x1920 .....
(rappel toi mon casse brique ... il est fait pour tourner sur des resolutions actuelle .... ) pas des résolutions d'un 520 STE (LOL )
laisse tomber tes vielles résolutions, qui ne sont plus d'actualité (sauf pour les nostalgique et les émulateurs )
4- tu as le droit de t'exprimer , enfin, il me semble .... les droits du forum ayant tellement changés...

Re: Le mystère insondable des FONTES
Publié : mer. 27/mai/2020 21:14
par Ar-S
@zorro => 4 => vas te faire cuire le c....code
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.
Re: Le mystère insondable des FONTES
Publié : sam. 30/mai/2020 17:48
par Naheulf
Si vous voulez une police qui affiche à peut près tous les caractères en mode bitmap (pour pas être embêté par les histoires d'échelles) il y a
Unifont. Pour le français, ce qui nous intéresse c'est grosso-modo la première ligne de
l'image Plane 0 Chart.