Aller au contenu
Wafoux

GUI et tête de joueur (avec TuSKe)

Messages recommandés

Version de MC utilisée: 1.12.2

Version de Skript: dev36

Version de TuSKe: la dernière mise à jour

Hello !

J'ai actuellement un problème d'optimisation de script, et j'aurais besoin d'aide.

Le truc, c'est que je voudrais afficher des têtes de joueurs dans un GUI, mais en masse (du genre toutes les têtes des joueurs connectés).

Le soucis, c'est que quand je charge le GUI et bien ça mets au moins 10 secondes à charger...

Voici le script actuel:

(on notera que la liste {_joueurs::*} contient tous les joueurs connectés, du genre environ 30 personnes.)

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

Du coup j'aimerais savoir si c'est possible d'optimiser ce script pour que ce soit plus fluide ? Une syntaxe particulière à utiliser peut-être ?

Merci d'avance !

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 12 minutes, Wafoux a dit :

Version de MC utilisée: 1.12.2

Version de Skript: dev36

Version de TuSKe: la dernière mise à jour

Hello !

J'ai actuellement un problème d'optimisation de script, et j'aurais besoin d'aide.

Le truc, c'est que je voudrais afficher des têtes de joueurs dans un GUI, mais en masse (du genre toutes les têtes des joueurs connectés).

Le soucis, c'est que quand je charge le GUI et bien ça mets au moins 10 secondes à charger...

Voici le script actuel:

(on notera que la liste {_joueurs::*} contient tous les joueurs connectés, du genre environ 30 personnes.)

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

Du coup j'aimerais savoir si c'est possible d'optimiser ce script pour que ce soit plus fluide ? Une syntaxe particulière à utiliser peut-être ?

Merci d'avance !

Quel genre de serveur as tu ? avec un serveur 1G local j'ai pas de problème avec ces syntaxes....

Après j'ai un bon processeur....

Bref si ton serveur est à ce point mauvais, je te conseil d'augmenter ta ram ou aller sur un serveur hébergé, car normalement ces syntaxes ne prennent quasiment rien  niveau ressource...

Partager ce message


Lien à poster
Partager sur d’autres sites

Je tourne aussi en local, avec ceci: java -Xms512M -Xmx1G -XX:+UseConcMarkSweepGC -jar spigot-1.12.2.jar (donc 1G aussi je suppose ?)

Et mon processeur c'est un i5 avec 8 GO de RAM.

Toi ça bug pas du tout ? Car mon hypothèse c'était que ça chargeait déjà une première fois les joueurs, puisque quand je refais la commande ça marche plus rapidement... Mais ça reste embêtant ?

Et sinon tu penses que sur un serveur hébergé ça bugera moins ?

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 2 heures, Wafoux a dit :

Version de MC utilisée: 1.12.2

Version de Skript: dev36

Version de TuSKe: la dernière mise à jour

Hello !

J'ai actuellement un problème d'optimisation de script, et j'aurais besoin d'aide.

Le truc, c'est que je voudrais afficher des têtes de joueurs dans un GUI, mais en masse (du genre toutes les têtes des joueurs connectés).

Le soucis, c'est que quand je charge le GUI et bien ça mets au moins 10 secondes à charger...

Voici le script actuel:

(on notera que la liste {_joueurs::*} contient tous les joueurs connectés, du genre environ 30 personnes.)

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

Du coup j'aimerais savoir si c'est possible d'optimiser ce script pour que ce soit plus fluide ? Une syntaxe particulière à utiliser peut-être ?

Merci d'avance !

Le bug, c'est un freeze de l'écran ? Dans ce cas c'est juste l'affichage des textures des têtes le problème, en revanche si c'est le faites que les tête apparaisse une pas une, la je sais pas ...

Cordialement ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Non c'est pas un freeze, mais en gros quand j'effectue la commande ça charge... et ça s'effectue. A savoir que ce GUI se charge depuis un autre GUI, le tout avec des fonctions. (Donc en gros depuis le GUI principal je clique sur un objet qui met lance la fonction de la liste des joueurs.)

Partager ce message


Lien à poster
Partager sur d’autres sites

Ou au pire tu peux avoir un petit effet sympa, en chargeant le GUI mais sans l'afficher, du coup tu mets un message dans le chat comme quoi ca se charge (avec pourquoi pas aussi un petit spinner en titre) puis ensuite tu l'affiches. C'est possible avec TuSKe. Si c'a t'intéresse dis le moi je te donnerai les syntaxes

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

donc tu mets ca (en remplaçant les items par tes lignes, mais fait bien attention a mettre "make next gui")

et ensuite tu fait:

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

a toi de faire les messages et tout entre les deux ?

(ces syntaxes sont tirées du tuto de Syst3ms https://v1.skript-mc.fr/threads/les-gui-avec-tuske-avec-la-v2.11800/)

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut ! (Une semaine après...)

J'ai pu faire le code que tu m'as proposé, ça marche bien. (Enfin, je crois j'ai du modifier y'avait des erreurs il me semble... Mais bref, dans l'idée c'est ça.)

Du coup, pour conclure:

Étant donné que je n'ai uniquement que 2 GUIs qui demande du temps à charger (beaucoup de slots pris... notamment pour charger la tête de tout le monde), j'ai pu trouver 2 solutions grâce à vous:

  • Modifier ces 2 GUIs afin d'utiliser la syntaxe "avancée" de TuSKe (Voir guide de Syst3ms), comme ça je pourrais charger directement les GUIs qui demandent du temps dès que le joueur arrive sur le serveur (donc on join...), et je pourrais leur mettre 2 IDs différents afin de les appeler facilement.
  • Modifier la syntaxe pour afficher la tête des joueurs, en effet il semblerait que ("%loop-value%" parsed as offline player)'s skull prenne du temps à charger.

Merci à tous pour vos réponses, cela m'a permit d'arriver à 2 solutions viables !

C'est résolu ?

EDIT: Quelqu'un pour m'expliquer comment passer mon sujet en résolu ? Avec la nouvelle version du forum je sais pas comment faire ?

Modifié par Wafoux
Je ne sais pas comment modifier le titre pour passer en résolu !
  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Étant donné que ce sujet n'a toujours pas été mis en "Résolu", j'en profite pour vous donner les temps réalisé avec la syntaxe "simple" de TuSKe pour les GUIs. (Pareil, aller voir le tutoriel de Syst3ms pour voir ce que j'appelle un gui simple.)

Pour un échantillon de 11 joueurs, et un serveur qui tourne sur mon Macbook Pro avec 2 GO alloué, j'ai fais ceci:

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

On obtient comme premier temps de chargement: (qui correspond au temps que Skript met à parse toutes les variables textes en variables offline player.)

Temps 1 : 3,35 secondes.

Et le second temps de chargement: (qui correspond au temps que Skript mets à mettre tous les joueurs dans le GUI.)

Temps 2 : 8,66 secondes. (Soit 5,31 secondes depuis le début du loop pour mettre les têtes dans le GUI.)

À savoir:

quand j'effectue la commande une seconde fois, les temps de chargement sont de:

Temps 1 : 0,02 secondes.

Temps 2 : 0,03 secondes.

Donc on a bien la confirmation des solutions apportées: si on charge les GUIs dès l'arrivée du joueur (sans qu'il fasse la commande), alors les guis seront chargés directement et il n'aura pas d'attente. (À part 0,03 secondes mdr.)

ATTENTION !

Il faut passer obligatoirement par la syntaxe avancée de TuSKe pour faire ceci.

Enfin, quelques trucs à savoir quant à la syntaxe utilisée:

  • Elle prend du temps à charger pour la 1ère fois, mais après ça va quand on refait la commande/fonction.
  • Elle prendra toujours très peu de temps à charger, même après que le joueur se soit déconnecté/reconnecté. (Si déjà chargé une fois.)
  • Elle prendra toujours très peu de temps à charger, même si on effectue un reload du script. (Et même un /sk reload all) (Si déjà chargé une fois.)
  • (Je ne suis pas sûr de ça) : Cela implique certainement que le GUI est enregistré quelque part dans le serveur... mais aussi les joueurs parsed as offline player. (Parce qu'il faut savoir que parse les joueurs en offline player, ça prend pas loin de la moitié du temps d'execution !)
  • Le seul moyen que le chargement redevienne long, c'est d'éteindre/redémarrer votre serveur.

Si quelqu'un a des explications quant aux chargement trèèès long puis pas long du tout, je suis preneur ?

(Donc du coup ne mettez pas encore ce sujet en résolu svp x)

Modifié par Wafoux

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.