Cpcdos
Messages postés425Date d'inscriptionsamedi 11 juillet 2009StatutMembreDernière intervention28 octobre 2016
-
3 nov. 2012 à 21:17
Cpcdos
Messages postés425Date d'inscriptionsamedi 11 juillet 2009StatutMembreDernière intervention28 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%
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.
Cpcdos
Messages postés425Date d'inscriptionsamedi 11 juillet 2009StatutMembreDernière intervention28 octobre 20161 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 ?
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.