Recherche méthode compression STRING

Signaler
Messages postés
425
Date d'inscription
samedi 11 juillet 2009
Statut
Membre
Dernière intervention
28 octobre 2016
-
Messages postés
425
Date d'inscription
samedi 11 juillet 2009
Statut
Membre
Dernière intervention
28 octobre 2016
-
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


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%
Messages postés
425
Date d'inscription
samedi 11 juillet 2009
Statut
Membre
Dernière intervention
28 octobre 2016
1
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/

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 ?
Messages postés
425
Date d'inscription
samedi 11 juillet 2009
Statut
Membre
Dernière intervention
28 octobre 2016
1
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/

Demande donc à l'auteur de cette dll

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.
Messages postés
425
Date d'inscription
samedi 11 juillet 2009
Statut
Membre
Dernière intervention
28 octobre 2016
1
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/