Call Of Duty 4 Synchronizer

farco33 Messages postés 7 Date d'inscription mardi 5 février 2008 Statut Membre Dernière intervention 7 mars 2008 - 9 févr. 2008 à 11:29
farco33 Messages postés 7 Date d'inscription mardi 5 février 2008 Statut Membre Dernière intervention 7 mars 2008 - 12 févr. 2008 à 18:54
Bonjour à tous

Nous sommes une team sur Call Of Duty 4, et nous jouons en réseau LAN, via Hamachi (gestionnaire de VPN). Nous sommes dispersés géographiquement, et nous ne sommes pas tous connectés en meme temps pour des raisons pro. Y a des soirs ou on est 4 et d'autres ou on est 10, avec dans le lot des personnes qui se connectent rarement
Le jeu est un peu particulier, dans le sens ou systématiquement, les clients se synchronisent au serveur, pour etre sur que tout le monde possède les memes versions de fichiers...
De nombreuses maps apparaissent tous les jours, et dans ce flot continuel, nous nous perdons en téléchargement, qui a quoi, quelles maps faut-il DL pour jouer ...les versions des maps sont-elles cohérantes.. bref pas simple, et pas motivant pour les joueurs qui ne suivent pas l'actualité, ils passent en gros 1H avant de pouvoir jouer

Je travaille sur un petit programme qui doit synchroniser tous les clients, serveur inclus puisque c'est un client aussi, de facon que tout le monde possède les nouvelles maps, sans se soucier des absences. Je ne dispose que de VB6 pour faire cela

Evidemment, ce soft est 100% utilisable pour tout autre jeu en ligne qui demande une synchronisation.

Voila comment ca se passe :
sur un ftp free, nous déposons les nouvelles maps, copie conforme de l'arborescence nécessaire pour le jeu, ca évite toute manipulation d'archives Zip, ou autre.
Pour le jeu, il faut par exemple 2 répertoires qui sont "mods", et "usermaps". Pour faire une mise à jour, j'ai créé un fichier INI, dans lequel j'ai 2 catégories : [suppression] et [ajout]
Dans chaque catégorie, les url des fichiers à télécharger, ou à supprimer pour mise à jour :

[ajout]
http://....../maps/usermaps/mp_backlot_2/mp_backlot_2.ff
http://....../maps/usermaps/mp_backlot_2/mp_backlot_2_load.ff
http://....../maps/mods/awe4/mp_backlot_2.iwd

[suppression]

Le soft télécharge le INI, et le traite en local. Chaque fichier (url http) est téléchargé, et installé dans les répertoires utiles. De cette facon, tout le monde a les memes fichiers, et on peut jouer directement.

Evidemment, trop beau pour être simple, je rencontre quelques petits soucis, et c'est pourquoi je sollicite votre aide.
Le fichier INI téléchargé s'appelle url.ini,  et il passe obligatoirement par le Temporary Internet Files. Une fois téléchargé, il reste dans les temporary, et du coup, impossible de pouvoir accéder à un nouveau fichier url.ini. Il faut supprimer le précédant des temporary pour que le nouveau fichier soit téléchargé et donc pris en compte.

Probleme 1 : je n'arrive pas à vider les temporary avec VB6 (j'ai fais plein de recherches, et testé plein de bout de code, --> accès refusé, fichier introuvable.. normal il est quelque part dans Content.IE5\Rep_a_la_con\url[1].ini

Je me suis dis qu'en contournant le probleme, je résoudrais le problème
Créer un nouveau fichier INI pour chaque mise à jour, nommé à la date -> http://....../maps/0902.ini

Problème 2 : comment lister les fichiers d'une url, sans utiliser inet(login:password du ftp) ? Il s'agit d'une appli multi utilisateur, et pour des raisons de sécu évidentes, je ne peux autoriser que les log/pass ne circulent

Qu'est ce qui fonctionne ?
l'ouverture et le traitement d'un fichier ini local
les téléchargements en http
l'installation des maps dans leur rép de destination : chaque installation de jeu étant "unique", je récupère une variable dans la base de registre qui me donne le chemin d"install du jeu

Qu'est ce qui ne marche pas ?
le vidage des temporary internet files
lister les fichiers d'une url (qui autorise le listing), et trouver la taille d'un de ces fichiers à télécharger

Qu'est ce qui n'est pas encore codé ?
les log, chaque téléchargement est loggé pour savoir ou en est le DL
Comment savoir quel fichier INI a été ou non mis à jour ? Grace à un INI en local, avec comme nom de catégorie le nom du fichier INI daté
0902.ini (serveur http)
Maj.ini (local)
[0102]
maj=ok

[0902]
maj=ok

Il suffit que je teste le nom des ini du serveur pour savoir si ils ont été ou non mis à jour

Une progressbar, pour savoir ou en est le téléchargement, et ou en est la mise à jour
je ne sais pas comment récupérer la taille d'un fichier sur un http

Comment dire au soft de vérifier les mises à jour ? Dois-on envoyer la nouvelle url à tout le monde ou est-ce le soft qui vérifie automatiquement ? Je préfèrerais la 2° solution, de facon a ce que tout soit automatique, et que personne ne se perde en route. Le pc s'allume, et se met à jour tout seul. J'ai imaginé un démarrage en autorun (HKLM/.../run) et un timer qui vérifierait la mise à jour; disons 1 fois par jour. LE but c'est de faire des mises à jour en gros 1 fois tous les 15 jours, avec 3 ou 4 nouvelles maps. Un timer sur 24H ou 48H est-il envisageable, cela pose-t-il des problemes de buffers, de crash d'application ou de CPU=100% .???

Voila ou j'en suis, je suis intéressé par les idées d'améliorations que vous auriez à me proposer, et par vos solutions permettant de résoudre mes 2-3 petits problèmes.

Merci de votre aide
Farco

3 réponses

kakenette Messages postés 218 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 15 novembre 2009 1
9 févr. 2008 à 17:03
Salut, j'ai déjà fait un tel programme pour mes utilisations
personnelles. Si tu es sur free, je crois que tu as le droit que à un accès FTP
en même temps...


Problème 1: Utilise une autre méthode pour récupérer tes fichiers qui ne pré
charge pas le temporary file.


Problème 2 : Tu peut te faire un fichier liste ou dedans tu met toute la liste
des fichiers actuelles et leur tailles, ton programme alors téléchargera la
liste que tu mettra a jours pour connaître les fichiers présent sur le serveur
et leurs tailles sans utiliser un accès direct FTP.


Pour la vérification moi j'utiliserai la liste pré chargée dite ci-dessus et contrôlerai
si ces fichiers sont présent en contrôlant également leurs poids, si se n'es
pas le qua, ton programme alors pourra télécharger afin de mettre à jours le
fichier en question.



kakenette
0
farco33 Messages postés 7 Date d'inscription mardi 5 février 2008 Statut Membre Dernière intervention 7 mars 2008
9 févr. 2008 à 18:52
salut kakenette, et merci pour ta réponse

L'accès ftp n'est pas acceptable, le téléchargement http est celui qui me convient le mieux, pas de limitation, pas de log/pass, et pas de partage sauvage entre pc pour une synchro. Je n'ai pas trouvé de solution http qui ne passe pas par le temporary, ca facilite pas les choses, mais si c'est que ca, je contourne le probleme.

La solution de la liste est intéressante, et le probleme du temporary toujours présent. Tant que je n'aurais pas réussi à les virer ou m'en passer, je ne peux avoir un fichier unique de mise à jour, trop simple

Existe -t- il une solution VB6 pour connaitre la taille d'un fichier "Web", j'ai trouvé un code , mais pour vb.net (Ici ) ?
L'utilisation d'un Timer sur de longues durées provoque-t-elle des erreurs ou plantage ?
0
farco33 Messages postés 7 Date d'inscription mardi 5 février 2008 Statut Membre Dernière intervention 7 mars 2008
12 févr. 2008 à 18:54
J'ai un soucis d'affichage, mon programme réussit les téléchargements, mais pendant qu'un fichier est en DL, pas moyen d'accèder à la fenêtre de l'appli, donc de l'utiliser (consultation d'historique ou autre) et du coup aucun moyen de pouvoir afficher la progressbar
Toute l'appli est figée, le temps que le téléchargement se fasse, je récupère la main après

Quelqu'un aurait-il une idée de comment je pourrais "contourner" le probleme de figeage de mon appli ?
J'ai pensé à créer une seconde instance (un second process), mais la j'avoue je sais absolument pas faire

Merci de votre aide
0
Rejoignez-nous