• 04 Juin 2026, 23:34:16


Auteur Sujet: Petite question portant sur l'optimisation ( Surtout à Syg :D)  (Lu 2130 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Bonjour, alors voila j'en ai marre des voitures qui se pètent pas tout ça lorsque qu'aucun conducteur n'est à l'intérieur de la voiture ciblé.. Alors j'avais penser reprendre un peu le principe du OnPlayerShootPlayer mais entre 50-80 joueurs (exemple hein ^^) et 1500 voitures il y a une grosse différence dans le check des positions joueurs et véhicules.. Donc est-ce que cela ne risque-t-il pas de poser quelques problèmes lorsque par exemple 10-20 joueurs tireront en même temps ? On peut imaginer utiliser OnVehicleStreamIn et intégrer que ces véhicules dans la boucle mais bon.. là on va parcourir un tableau de MAX_VEHICLES données :O  Sachant qu'on aura MAX_PLAYERS tableau la mémoire risque pas quant à elle d'augmenter un peu quand même ? ^^
« Modifié: 21 Juin 2011, 12:11:15 par chneubeul »

Hors ligne Xolokos

  • PAWN/XHTML/CSS/PHP/SQL/JS
  • *
  • Grand Banditisme
  • What are you waiting for ?
  • Messages: 681
    • Voir le profil
Re : Petite question portant sur l'optimisation ( Surtout à Syg :D)
« Réponse #1 le: 21 Juin 2011, 20:33:11 »
Plaît-il ?
 FreePost.
Nippah !

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : Petite question portant sur l'optimisation ( Surtout à Syg :D)
« Réponse #2 le: 21 Juin 2011, 21:08:01 »
Qu'est-ce que tu comprend pas ? Dans ce que j'ai expliquer ? :D

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Petite question portant sur l'optimisation ( Surtout à Syg :D)
« Réponse #3 le: 22 Juin 2011, 00:04:09 »
Il exist une include tout prete pour sa
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : Petite question portant sur l'optimisation ( Surtout à Syg :D)
« Réponse #4 le: 22 Juin 2011, 00:55:17 »
Oui mais c'est pas grave, ma question c'est la même (a)

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Petite question portant sur l'optimisation ( Surtout à Syg :D)
« Réponse #5 le: 22 Juin 2011, 02:10:00 »
Salut,

si tu veut vraiment utiliser ce principe, il serait mieux de tester le moins de véhicules possible, la mémoire importe peu.

Par contre, ça représente beaucoup de calculs donc à moins que ça te paraisse vital, tu serais mieux d'endurer comme c'est présentement...

Syg aura peut-être une idée de méthode pour optimiser, mais ça restera un gros volume de calcul.

++Sim++





Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Petite question portant sur l'optimisation ( Surtout à Syg :D)
« Réponse #6 le: 22 Juin 2011, 10:54:21 »
On sous-estime trop souvent la puissance de calcul de nos PC.

Concernant ton problème, la seule façon de savoir si ça va ramer, et bien, c'est d'essayer !!

J'ai regarder un peu l'include OnPlayerShootPlayer, il contient effectivement beaucoup de calculs mais ces calculs peuvent être optimisés et ce n'est pas parce qu'ils paraissent compliqués que le serveur mettra du temps à les effectuer.

Cet include contient déjà la première optimisation de taille : ne contrôler que les joueurs qui tirent, ce qui réduit considérablement la quantité de calculs.
La deuxième optimisation concerne la distance de prise en compte qui élimine tous les joueurs se trouvant trop loin du tireur.

Avec un code non optimisé :
Si le serveur contient 80 joueurs, la machine va effectuer 80*79 séries de calcul (79=80-1 car le joueur ne peut pas tirer sur lui-même).
Si on intègre les véhicule, le nombre de série de calcul sera de 80 * 1500 (sur un serveur contenant 1500 véhicule) ce qui n'est effectivement pas négligeable (près de 20 fois plus de calcul à faire).

En ajoutant les optimisations citées ci-dessus et si on en ajoute d'autre (éliminer les véhicules qui contiennent au moins un joueur, réduire la distance de contrôle, ...), il se peut que le serveur supporte très bien la chose car le nombre de série de calcul va diminuer en conséquence.

La question qui se pose maintenant : Est-ce que tu es prêt à coder ça au risque de devoir tout jeter et d'avoir perdu ton temps (sachant que les membres du forum ne seront pas à court d'idée pour t'aider à optimiser ton code) ?.

Si tu veux mon avis personnel : Lance toi !!

NB : Il ne faut pas se soucier de la mémoire. Maintenant la moindre machine à 2 Go de mémoire ce qui est plus que suffisant pour contenir toutes les données qu'on peut imaginer.
Par exemple, une hypothétique variable énorme de 500 Ko (personnellement, je n'en ai jamais vu) ne représente que 0.02 % de la mémoire totale.

++
Syg
Courtesy of GtaManiac

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Petite question portant sur l'optimisation ( Surtout à Syg :D)
« Réponse #7 le: 22 Juin 2011, 12:28:16 »
On peut imaginer utiliser OnVehicleStreamIn et intégrer que ces véhicules dans la boucle mais bon.


Très bonne idée, tu peut faire un système de ce genre http://pastebin.gtaonline.fr/pastebin.php?show=1113 à essayer, je ne l'ai même pas compiler donc bon ^^



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Petite question portant sur l'optimisation ( Surtout à Syg :D)
« Réponse #8 le: 22 Juin 2011, 23:36:26 »
Salut,

sasuke, concernant ton break, tu devrait utiliser simplement o = MAX_VEHICLES au lieu de break, c'est plus propre et le résultat est le même...

sinon il serait facile d'optimiser ta fonction pour remettre tout au début en utilisant une petite astuce:

RemettreOrdre(playerid)
{
    new dernierPlein = 0, premier = 0;//je ne trouve pas de nom de variable convenable...
    while(premier < MAX_VEHICLES)
    {
        if(VehicleStreamedIn[playerid][premier] != -1)
        {
             VehicleStreamedIn[playerid][dernierPlein] = VehicleStreamedIn[playerid][premier];
             dernierPlein++;
        }
        premier++;
    }
}

On coupe ainsi un bout de la boucle qui se trouve entre les données compressées et la partie contenant les données non testées...
Au besoin on peut aussi effacer la valeur que l'on ramène au début (dans premier quoi...)

++Sim++





Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Petite question portant sur l'optimisation ( Surtout à Syg :D)
« Réponse #9 le: 23 Juin 2011, 00:31:59 »
Ouais pas mal, je trouve la tienne largement mieux que celle que j'ai faites ^^



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : Petite question portant sur l'optimisation ( Surtout à Syg :D)
« Réponse #10 le: 23 Juin 2011, 11:52:40 »
Bonjour, merci d'avoir répondu.. :)

Syg, je vais essayer ça.. Puis comme ça, au moins j'apprendrais des choses :)
Ssk et Sim, j'vais regarder un peu votre code, et l'utilisez si il fonctionne :p

Concernant la mémoire enfaites le nombre de variable osef quoi ? :O

(PS: le système de caravane là Syg, trop compliqués (a) x'D)

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Petite question portant sur l'optimisation ( Surtout à Syg :D)
« Réponse #11 le: 23 Juin 2011, 12:38:07 »
bah ouais le nombre variable n'importe peu maintenant ^^



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog