(portage pour MMF d'un de mes ancien post du forum darkbasic http://www.games-creator.com/forum3/...ghlight=syncro ):
Attention!!! cette astuce ne fonctionne malheureusement pas avec MMF quand on coche "CHANGE RESOLUTION MODE"
Vous avez surement remarqué que les jeux MMF avec "V-SYNC" coché s'executent plus ou moins vite suivant à laquelle est reglée la fréquence de balayage d'écran "syncro" de votre écran (parametres graphiques).
Pour changer cette vitesse dans le code, on peut régler le FRAME RATE 60 , 75 ---- décocher V-SYNC mais cela provoque une animation saccadée --- adieu le fluide .
Pour afficher une fluidité d'animation on est donc forcé d'utiliser "V-SYNC" de regler FRAME RATE assez haut 100 et le jeu ce lance donc avec la syncronisation d'écran de windows par défaut.
Malheureusement cette frequence varie d'un pc à l'autre.
Le jeu avec V-SYNC s'ouvre donc avec la syncro par defaut de windows qui peut varier de 60 à 200hz et le jeu speede plus ou moins vite suivant cela .
Pour etre sur que son jeu tourne fluide et à la même vitesse sur tout les PC sans choisir cette frequence, on doit forcement se compliquer la vie avec des routines de pas de déplacement , de fsp, de timers --- cela rend le code lourd , complexe et farci de variables flottantes ( chose "impossible" avec MMF ).
Il est bien plus simple de realiser un jeu avec une animation fluide à la même vitesse sur tout les PC en définissant la syncronisation à laquelle s'ouvrira le jeu en plien ecran. (sans tenir compte de la charge cpu qui est un tout autre probleme) .
Malheuseusement il n'existe pas (encore) de commande en MMF qui permette de définir la frequence de syncro pour l'ouverture de son jeu .
J'ai reussi à mettre au point une astuce qui comble le manque de cette commande et permet de choisir cette frequence de syncronisation .
Cette astuce permet de forcer le jeu en MMF de s'ouvrir
avec la syncro désirée, tout en respectant le multitache
et sans modifier la syncronisation de windows quant on quitte le jeu .
Le principe est de lancer un Exe qui execute le jeu MMF avec la syncro choisie
et restituer la syncro par defaut de windows quant on quitte le jeu .
Ce kit de lancemant comprends 2 Fichers :
- Run.exe ( correspondant au nouveau .exe de votre jeu )
- sync.in ( fichier .ini contenant la valeur de la syncro du jeu)
Utilisation :
- Ces 2 fichiers (17ko) doivent etre place avec l'executable de votre jeu (*.EXE)
- l'executable du jeu doit obligatoirement etre renommé 1.bat
- editer le fichier sync.ini avec l'editeur de texte (clic droit ouvrir avec Block-note)
Pour modifier la valeur de la syncronisation
Il est conseiller d'utiliser la fréquence 60 compatible avec tout .
Ne pas oublier de sauver avant de fermer l'editeur txt .
Click sur Run.exe pour lancer votre jeu !
Enjoy ----
On peut :
-Renommer le fichier Run.exe avec le nom de votre jeu
-Modifier son icone en utilisant un programme comme ResHacher.
Heliuse.
http://perso.wanadoo.fr/marcus.zone/.../syncblitz.zip
----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
Programme réalisté par Marcus en PureBasic 3.91 avec la librairie SpriteEX .
marcuspoilus@wanadoo.fr
Marcus.Zone
http://perso.wanadoo.fr/marcus.zone
----------------------------------------------------------------------------------------------
Source du code PureBasic :
Code:
;---------------------------------------------------------------------------------------------
InitSprite()
OpenWindow(1,0,0,0,0,#PB_Window_ScreenCentered,"" )
Freq=GetMonitorFreq()
CloseWindow(1)
OpenPreferences("Sync.ini" )
Freq_Jeu= ReadPreferenceLong("sync",0)
ClosePreferences()
ss.DEVMODE
ss\dmSize = SizeOf(DEVMODE)
ss\dmDisplayFrequency = Freq_Jeu ; la frequence choisie
ss\DmFields = $400000
ChangeDisplaySettings_(ss, 1)
RunProgram("1.bat","","",1)
ss.DEVMODE
ss\dmSize = SizeOf(DEVMODE)
ss\dmDisplayFrequency = Freq
ss\DmFields = $400000
ChangeDisplaySettings_(ss, 1)
End
;---------------------------------------------------------------------------------------------



Reply With Quote

