Recherche méthode compression STRING

Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 - 3 nov. 2012 à 21:17
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 - 4 nov. 2012 à 14:57
Bonsoir,

Je suis actuellement sur un projet d'un petit jeu vidéo 3D ( CraftyJoke )
J'ai attaqué la partie communications & réseaux utilisant les proto' TCP/IP .. bref

Et je cherche un algorithme de COMPRESSION pour réduire la taille des données des joueurs qui s'envoie en Broadcast
Ces données contient
- Pseudo perso du joueur
- les coordonnées dans la matrice du monde 3D + Angle de vue
- le status de l’animation ( Marche , court , saute , accroupie ... )

- et séparément les messages du Serveur & des clients

Voici un exemple d'un message d'un joueur qui joue sur le réseau :

p:x153y2z-852ag90an5nSeb'

x y z : coordonnées
ag : angle de vision
an : annimation
n : Pseudo perso

Dans ce cas , ce qui fait 25 octet a envoyer ( type STRING )

Et je voudrais savoir (pas crypter) mais COMPRESSER afin de réduire le nombre d'octets à envoyer de façon à améliorer la fluidité du jeu
Du genre à réduire de aumoins 40%

Merci.


Microsf01
Copyright©Microsf01
Favier Sébastien 01
http://microsf01.fr.nf/

7 réponses

Utilisateur anonyme
4 nov. 2012 à 01:34
Bonjour,

Tes coordonnées x y z ainsi que ag, an peuvent être codés sur 2 bytes (voire un seul je ne connais pas tes valeurs maxi) de cette manière :
'déclaration d'un short
Dim valeur As Short = 874
'transformation en tableau 
Dim x() As Byte = BitConverter.GetBytes(valeur)
'récupération
Dim res As Short = BitConverter.ToInt16(x, 0)

Le pseudo, quant à lui, peut être associé à la connexion au serveur et mémorisé par celui-ci, ainsi il n'a plus besoin d'être transmis.

Soit 10 en tout au lieu de 25. Gain 60%
0
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
4 nov. 2012 à 11:38
Merci pour votre réponse !

J'ai bien pris en compte votre méthode , mais le soucis , c'est que une fois la valeur convertis , je trouve pas moyens d'envoyer le contenue x en type STRING à l'ordinateur distant

Quand je marque un arrêt et un espion express , j’obtiens ceci :


Comment je fais pour envoyer ces données en STRING ?

Merci

Microsf01
Copyright©Microsf01
Favier Sébastien 01
http://microsf01.fr.nf/
0
Utilisateur anonyme
4 nov. 2012 à 11:54
Ta question est surprenante. On n'envoie pas des données de type string directement. On doit passer par des arrays de type Byte().

Tu devras construire un array et y placer tes données afin de les transmettre.

Où en es-tu au niveau de la communication client/serveur ?
Un bout de code à montrer ?
0
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
4 nov. 2012 à 12:57
Bein j'utilise une librairie TCPLibrary

j'ai juste a utiliser cette commande

Client.SendData("{Donnees a envoyer}" & vbNewLine)

( type string )

Je ne passe pas par des tableau Byte() , enfin , ça doit être la librairie qui gère cela..

C'est pour cela que je chercher une méthode de compression type STRING enfaite


Microsf01
Copyright©Microsf01
Favier Sébastien 01
http://microsf01.fr.nf/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
4 nov. 2012 à 13:06
Demande donc à l'auteur de cette dll
0
Utilisateur anonyme
4 nov. 2012 à 13:10
Je voulais dire par là que peut-être cette librairie possède une surcharge de sa fonction SendData qui permet d'envoyer autre chose que des données de type String.
0
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
4 nov. 2012 à 14:57
0uai , enfin bon , je pensait utiliser des algorithmes comme huffman et tout

Avec des méthodes de comparaisons & différences

Bref je me débrouillerai

Merci




Microsf01
Copyright©Microsf01
Favier Sébastien 01
http://microsf01.fr.nf/
0
Rejoignez-nous