Page 1 sur 2

Cryspatcher

Publié : ven. 27/oct./2006 18:20
par Crystal Noir
Oyez tout le monde :)

En ce moment je travaille sur un projet purebasic : CrysPatcher.

Il s'agit d'un programme qui permettra à n'importe quel utilisateur de n'importe quel langage de proposer à ses utilisateurs des mises à jour en ligne de leur jeu ou programme et ce, sans se prendre la tête.

Cryspatcher est une programme interfacé qui permettra de générer des updates et de préparer un programme à l'utiliser.

Le programme en lui même est fait sous pure mais un utilisateur par ex de blitzmax pourra l'utiliser.

Il lui suffira de mettre dans son programme en début de code une seule et unique ligne de code que Cryspatcher lui donnera (selon son langage) et il lui suffira ensuite grâce au logiciel de générer les updates à mettre en ligne :)

le patcher étant opérationnel, je vous donne un exemple avec le premier jeu que j'avais codé en blitzmax, il s'agit d'un vulgaire jeu de serpent.

Dans l'archive que vous allez télécharger, il vous suffira de lancer le fichier principal du jeu à savoir Serpent.exe et de regarder :p

Cette exemple est pas mal car en fait le jeu est codé en bmax mais il utilise cryspatcher qui lui est codé en purebasic. Lors de son lancement il détecte une mise à jour, et vous propose de la télécharger et de l'installer :)

Je vous laisse essayer.

voici l'archive http://www.2dev.org/Blitz/Serpent.rar


Au final, il y a aura un soft d'interface qui rendra simple la génération d'update en suivant le guide pas à pas :)

Le soft s'occupera de tout, vous n'aurez qu'à ajouter une ligne de code à votre programme, et à uploader les fichiers de mise à jour sur votre site et c fini :)

Publié : ven. 27/oct./2006 18:34
par flaith
Intéressant ton système, je viens de le tester, voici ma première impression :

Lorsqu'il me demande de faire la mise à jour, il n'y a que le bouton "Ok", donc je clique sur la croix (car je ne veux pas faire la mise à jour) mais il m'affiche quand même le programme d'update (que je peux fermer à ce moment).

Cela implique que pour faire fonctionner le programme je dois obligatoirement faire la mise à jour ?

Sinon j'aime beaucoup cette méthode :)

Publié : ven. 27/oct./2006 18:38
par Crystal Noir
Je te rassure non ^^

En fait cela c'est à cause de BlitzMax, qui ne permet pas d'afficher une boite de dialogue toute conne avec "Oui" "Non" du coup une seule possible "ok".

Dans le cas d'un programme fait en pure bien sur si tu cliques "oui" il te lance le patcher, "non" il ne le lancera pas.

Dans le cas de blitzmax je vais être obligé de prévoir dans mon module pour blitzmax deux possibilités : 1°) la personne a Maxgui (qui est payant) et on peut faire pareil, 2°) ya pas maxgui est on se retrouve avec une boite de dialog avec juste ok......arf

Cela dit quand il y a une mise à jour il est conseillé de la faire ^^

Bien sur dans le cas ou tu la fait pas, tu continuera à utiliser le programme ou le jeu de la personne dans la version actuelle.

Ici dans mon exemple, que tu la fasse ou pas ca change rien en fait c juste un programme test qui vous montre comment cela marche ^^ car la version sur site et la version que vous téléchargez en réalité est la même ^^ c juste un test :) dans mon ex il télécharge les médias du jeu :) et l'exe :)

Publié : ven. 27/oct./2006 18:45
par flaith
Cool, merci ;)

Publié : ven. 27/oct./2006 18:51
par Crystal Noir
Ce qu'il faut savoir et ce n'est pas le cas dans mon exemple pour le moment, mais si on refuse de faire la mise à jour, le jeu ou le programme se lancera quand meme dans sa version actuelle.

cependant à chaque lancement il demandera si tu veux faire la mise à jour.

Le pb de bmax comme je l'ai dit c que à part si t'as maxgui il n'y a pas de requester comme dans pure ce qui rend la chose plus complexe puisque pour celui qui n'a pas maxgui qui est payant ca lui fait qu'un message ou seul le "ok" est dispo et donc de ce fait il doit faire la mise à jour.....

Je compte me pencher sur ce pb du moins pour les utilisateurs de bmax.

Publié : ven. 27/oct./2006 19:01
par Crystal Noir
Voilà je viens de corriger l'exemple et le problème dont tu me parles avec les utilisateurs de blitzmax.

Maintenant trois choix : "oui" on fait la mise à jour "non" on lance le jeu tel quel "annuler" on quitte.

voilou :)

Publié : ven. 27/oct./2006 19:15
par flaith
Ha ouais, much better, pas mal du tout Image

Publié : ven. 27/oct./2006 19:24
par flaith
Hop, petit truc, si on lance le prog patcher et que la mise à jour est déjà faites, il ne fait pas de verif, il fait la mise à jour d'office !

Publié : ven. 27/oct./2006 20:22
par Crystal Noir
Evidemment, on est pas censé lancer le patcher ! mais le programme principale du jeu ici c'est Serpent.exe

C'est le programme principal qui teste si il y a une update ou non ! donc si tu lance Patcher.exe forcément il fera la mise à jour, le patcher porte bien son nom, c'est le patcher donc il patche !

il faut imaginer que l'utilisateur a fait un raccourcis dans le menu demarrer avec l'exe de son programme ici Serpent.exe

tu verras que si tu le lances au départ il te propose l'update et si tu fait l'update et que tu relances serpent.exe il te proposera pas d'update car il verra que c'est déjà fait !

cela dit je peux ajouter au patcher le fait de tester ca si vous pensez que c'est important. Cela dit c pareil si le programme n'est pas mis à jour et que tu lances le patcher il fera l'update et si il est déjà à jour il fera rien, c un peu pareil mais je peux ajouter cette option si vous voulez.

Cela dit dans la version qui est là téléchargeable il fait pas de mise à jour d'office il faut cliquer sur un bouton pour la faire ^^ cela dit comme je dit je peux faire faire le test au patcher si vous voulez ca pose pas de soucis sauf que ca fait deux fois le meme test en fait un pour le prog principal et un pour le patcher mais effectivement c'est faisable.

je peux faire aussi en sorte que l'executable ne soit pas visible et qu'il ne se pointe uniquement que si il y a une mise à jour (je parle du patcher.exe), tout est possible tout est réalisable :lol:

Publié : ven. 27/oct./2006 21:09
par flaith
Crystal Noir a écrit :...tout est possible tout est réalisable :lol:
... c'est le jeu de ... :D

En fait je pensais surtout au fait que lors de ta mise à jour, si je mets une nouvelle DB, et que je travaille dessus, bref je mets des données, et je clique sur le patcher => plus de DB !!!

PS : Désolé d'intervenir comme ça :wink:

Publié : ven. 27/oct./2006 21:46
par Crystal Noir
En fait j'ai trouvé pour le patcher vu que je sais ce que fera le programme principale, je sais tester si le patcher est lancé depuis le prog principale ou non donc le problème est réglé.


Sinon je comprend pas ton histoire de DB ?

Publié : ven. 27/oct./2006 22:07
par flaith
tu veux dire que si tu changes de base de données le patcher marcherait plus ?

Perduuuuuuuuuuuu ;) justement je ne travaille pas avec une base de données à cause de cela, juste avec des datas ;)

Alors tu vas me dire mais si je change de FTP ? bah ca c'est à l'utilisateur de voir, je n'en suis pas responsable mdr, cela dit le programme permet de générer des patches online facilement si tu changes de ftp par ex, il te suffira juste de faire un dernier patch sur le ftp en cours avant de changer avec un nouvel executable recompilé de ton programme qui aura la nouvelle adresse ftp pour les futures updates ;) et vala :)

en fait pour un utilisateur, pour utiliser le patcher, il aura un soft qui interface tout ca en préparant les patches à uploader sur ftp, mais il a également une ligne de code à mettre dans son programme (ou son jeu) en début qui permet justement de dire ou pointe les updates à chercher ;)

Changement de ftp prévu ? alors vite un dernier update avec un nouvel executable qui sera mis à jour et qui aura la nouvelle adresse pour un futur update !

tu vas me dire "oui mais si le ftp n'est pas en service le jeu va planter, car il arrivera pas à l'utiliser" : perduuuuuuuuuuuuu c'est testé ;) donc pas de panique le programme ou le jeu ne fera rien tout simplement et continuera à se lancer comme si ne rien n'était :)

j'espère avoir répondu à ta question :)
Je sais pas pourquoi ce texte est la mais il n'est pas de moi 8O

Publié : ven. 27/oct./2006 22:15
par Crystal Noir
oui j'avais bien compris pour DB,

ce que je comprends pas c'est ton problème de DB justement, j'vois pas où tu veux en venir

Publié : ven. 27/oct./2006 22:30
par flaith
DB car si je veux mettre à jour mon programme avec une DB vierge, que je travaille dessus et que, malencontreusement, je refais un update, cela écrasera mon fichier DB !
Ou plus simple un fichier ini (genre fichier des préférences), je fais l'update, je recois l'exe et le fichier ini. Dans mon programme je fais qq modif des préférences donc mon fichier ini s'en trouve modifié. Je lance le patch et mon fichier ini d'origine est écrasé, voilou :)

Publié : ven. 27/oct./2006 22:40
par Crystal Noir
oui je sais pas ce qu'il s'est passé ct une de mes réponses je te la redonne ici :

Pour ton histoire de DB il faut savoir que le programme ne fait un update que si il détecte une nouvelle version grâce à une donnée particulière.

Ce qui signifie que si tu as fait une mise à jour et que la version du ftp correspond à la version que tu as toi, tu peux changer tous les fichiers que tu veux sur ton ftp sur cette mise à jour, la mise à jour ne se fera pas ;)

Pour que la mise à jour se fasse il faut qu'il y ait une certaine concordance entre ton programme (grâce à la ligne de code à ajouter), et ton ftp.

Enfin je ne travaille pas avec une Db mais uniquement qu'avec des Datas.


En fait ton jeu ou ton soft va aller voir sur le ftp un fichier data, puis il va le comparer au fichier data local, si la version de ce fichier est différente de celle que tu as alors il te propose une mise à jour sinon il ne fait rien :)

donc en fait il n'y a pas vraiment de risque.

Autre chose, le patcher ne fait pas la maj directement, il te le demande...

Enfin pendant que tu bosses sur ton soft, tu peux toujours désactiver la ligne de code qui lui permet de gérer Cryspatcher, le temps de faire tes tests :) comme ca ton programme ou jeu ne regardera pas les mise à jour pendant tes tests.

Et si par ex il est prévu à un moment ou à un autre de changer de Ftp il suffira juste avant le changement de faire un dernier update sur le ftp courant qui mettra à jour ton jeu ou programme pour qu'il aille chercher les futurs updates sur le nouvel ftp (la fameuse ligne de code à ajouter en début de programme).

Voilà comment va fonctionner CrysPatcher : le tout en trois étapes :

1°) une ligne de code à ajouter au tout début de votre programme avant tout le reste, ligne de code qui lui permet justement d'utiliser CrysPatcher.

2°) Utilisation de Cryspatcher lui meme (un soft interfacé) qui va te permettre de préparer ton programme à utiliser Cryspatcher en entrant des informations qui seront stockés via un data.

3°) Génération du patch qui sera à uplaoder sur le ftp toutjours avec le même soft interfacé de Cryspatcher.

En clair je veux qu'en quelques clics vos updates soient prets :)

La partie 1°) et 2°) ne sera qu'à faire une fois après il n'y aura juste la partie 3°) à faire autant de fois que vous avez de patches à mettre en ligne :)

Pour te donner un exemple, fais cette petite expérience :

1°) Retélécharge le fichier que j'ai mis à disposition.

2°) Avant de lancer Serpent.exe, ouvres le fichier ver.dat et changes le 0.2 en 0.3

3°) Lances Serpent.exe que se passe t'il ? il ne te propose pas l'update ! et pourtant les versions sont différentes ! et bien tout simplement parce que le data version est le meme que celui sur le ftp ;)