|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : février 2011 Messages : 7 ![]() |
Bonjour à tous et à toutes !
Donc voila, tout est dans le titre. A l'état où mon projet est; il ne fait que prendre des belles capture d'écran (ce qui déjà pas mal ). J'ai déjà pu obtenir un bonne compression avec le format jpeg: Les images ne font que 30 à 60 ko. C'est par la méthode GDI+ que je sauvegardes les captures.Mais voila, je sollicite votre aide, afin de m'indiquer vers qu'elle direction aller pour la suite: --> Transférer les captures et autres informations vers un master sans affecter la latence du jeu. Car si le jeu en question est un FPS, hors de question d'avoir des coups de lags !! Comme Punkbuster en fait (Personnes n'auraient son code source ?? Donc quelles fonctions TCP pourraient me permettre de réaliser cela ? Quelles termes dois-je rechercher ? Ne serrait-ce pas mieux d'envoyer directement la frame de capture plutôt que l'image enregistré sur le pc client... Je sais pas. Merci à vous. |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Pierre Ingénieur développement logiciels Inscription : juin 2007 Messages : 1 211 ![]() |
Tu as plusieurs possibilités:
Par exemple, faire un client de capture, lancé sur le serveur, qui recevrait les demandes de screens, et ferait les captures en local. Tu peux aussi transférer l'image lentement (quelques kilos par secondes?). Ou encore, la transmettre en fin de partie, ou sur les temps morts du joueur (délai de résurrection, menu, fin de partie, etc) Le problème c'est la quantité de données à transmettre. Si faire la capture ne ralentit pas le joueur, il faut doser le flux parallèle pour ne pas faire laguer violemment
__________________
Mes principes de bases du codeur qui veut pouvoir dormir:
|
|
10
|
|
|
#3 | ||||
|
Invité de passage
![]() Inscription : février 2011 Messages : 7 ![]() |
Bonjour et merci de votre réponse.
Citation:
Citation:
Citation:
Si quelqu'un à une idée ? Citation:
|
||||
|
|
00
|
|
|
#4 | |||
|
Expert Confirmé Sénior
![]() ![]() Emmanuel DelogetDéveloppeur informatique Inscription : septembre 2007 Messages : 1 826 ![]() |
Citation:
Citation:
Citation:
En gros : QoS, pour quality of service. Tu as deux flux à envoyer : le flux de données correspondant au jeu lui-même (probablement en UDP, n'est-ce pas ?) et le flux TCP contenant l'image. Il te faut trouver un moyen de donner une priorité à chaque flux, de manière à ce que le flux prioritaire passe toujours avec un très faible latence, pendant que le flux non prioritaire envoie ses données petit à petit.
__________________
[FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...] Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi. Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça. Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas. Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas. |
|||
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : février 2011 Messages : 7 ![]() |
J'ai fait un logiciel de capture d'écran, tout ceci est extérieur au jeu. Voila pourquoi je doit hooké le jeu afin d'y parvenir. Une dernière chose, l'utilisateur sera au courant de ce que fera le logiciel car c'est pour un but commun, l'anti-triche. Mais bon, si j'ai bien compris, en limitant le nombre d'octets lors du transfert donc en TCP, cela me permettrait d'éviter d'affecter le ping du joueur. Dois-je utiliser TCP NODELAY ou quelque chose comme ça ? |
|
|
00
|
|
|
#6 | |||
|
Expert Confirmé Sénior
![]() ![]() Emmanuel DelogetDéveloppeur informatique Inscription : septembre 2007 Messages : 1 826 ![]() |
Citation:
Sur l'utilisation de TCP NODELAY : non ; ça ne fait pas ce que je pense que tu crois (et par défaut, on est en nodelay dans la plupart des cas). Il te faut vraiment limiter toi même l'envoi de données sur la socket TCP. Le plus simple : se fixer un budget par seconde (par exemple, 2ko par seconde), découper ça en plusieurs envois (par exemple 10, un toutes les 100 ms), et envoyer un packet de la taille correspondante à chaque envoi. En pseudo-code : Code :
__________________
[FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...] Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi. Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça. Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas. Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas. |
|||
|
00
|
|
|
#7 |
|
Expert Confirmé
![]() Pierre Ingénieur développement logiciels Inscription : juin 2007 Messages : 1 211 ![]() |
Je n'ai pas tout compris. Où interviens-tu dans cette histoire?
Supposons un jeu en réseau classique, avec ses dix joueurs et son serveur. De ce que j'ai cru comprendre, chacun des dix postes joueurs lance un programme de captures d'écran pour surveiller les joueurs. Ce programme est censé envoyer les captures à un serveur qui sera chargé de les comparer. Si c'est bien cela, ca ressemble diablement à la problématique d'un keylogger. Une solution, c'est d'avoir une lib de capture vidéo pendant la partie puis chercher l'écran de fin de partie (reconnaissable au panneau de score, au VICTORY, etc) et d'envoyer au serveur ce qui ne l'a pas été depuis la dernière fin de partie (donc la vidéo de la partie). Mais un anti-triche ne peut pas fonctionner avec l'accord du joueur. Pour qu'il soit utile, cela doit se faire plus ou moins sans son intervention.
__________________
Mes principes de bases du codeur qui veut pouvoir dormir:
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : février 2011 Messages : 7 ![]() |
Merci pour vos précisions à tout les deux.
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com