Augmenter les TPS sans pour autant augmenter la rapidité des actions en jeu



  • Bonjour/bonsoir la famille de MFF, derrière ce titre peu cohérent se cache une réelle ambition de "démonter" les mécaniques du jeu et de... STOP! Pas du tout, je souhaite juste increase le tick rate d'update des entités (d'une en particulier) pour catch l'instant où l'une d'entres-elles franchira une certaine coordonnée à une vitesse telle qu'avec 20 ticks par seconde, mon code déclenché que trop aléatoirement.
    Premièrement, j'avais alors modifié le jeu de telle sorte qu'une seconde correspondait à 60 ticks, mais tout bougeait trop vite, et ce ne fut pas l'effet escompté! Du coup je me suis mis en tête de loop avec une boucle sur les appels d'onUpdate/onLivingUpdate mais ceci ralentirait de quelques ms les appels suivants de la JVM et de toute façon ça speed up le jeu également!
    Bref la question n'est pas simple! Dois-je tout slow down moi même en 60ticks/seconde quitte à faire du coremodding en masse, ou dois-je imaginer autre chose? Merci par avance, toutes réponses peu importe soient-elles sont les bienvenues! Merci par avance!



  • J'ai quelque petites questions : l'entité en question, c'est la tienne ou pas ? Et si je comprends bien, le problème c'est que l'entité va trop vite c'est ça ?



  • C'est un joueur dans l'absolu mais mon système s'étendra dans un possible futur à toutes les entités vivantes. Bref ça pourrait être une custom ou une vanilla, je ne pense pas que le problème vienne directement ou même indirectement de là. Le souci étant qu'elle fait une chute et que moi je dois "capter" le moment où elle est entre deux coordonnées dont la précision s'étend aux dixièmes, or la fréquence de mise à jour des entités, de base de MC ne me permet pas de capter cet instant.



  • Pour moi, c'est un problème de vitesse. Car si la vitesse est plus qu'un dixième de block, il est possible que tu ne capte pas (le tick précédent il est au dessus et le tick suivant il est en dessous). Ce qu'il faudrait faire, c'est soit rester sur quelque chose qui ressemble : à ce que tu fait tu modifie la méthode move pour par exemple que a chaque fois qu'elle soit appelée, la vitesse est divisée par 2 mais le code est exécuter deux fois et entre les deux, tu check la position.
    Mais a mon avis c'est pas très beau. Ce qui serais plus simple, c'est de prendre la position de l'entité au tick précédent et au tick courant pour voire si il est forcément passé par la coordonnée que tu veux check (Mais dans ce cas, tu doit faire attention à la téléportation).
    Ou une autre solution et de changer la zone de détection en fonction de la vitesse du joueur. Plus il est rapide, plus elle sera grande.



  • Désolé mais je n'ai pas calculé la vitesse d'une entité qui tombe. Surtout que je ne vois pas où la modifier, quelle classe éditer, j'avais déjà cherché à quel endroit été modifié le motionY d'une entité qui fall mais sans résultat.
    Je ne peux pas changer la zone de détection pour l''agrandir, sinon le joueur "flotterait".
    Et enfin ta deuxième solution donnerait un rendu saccadé à chaque fois qu'un joueur tomberait, en devant le retéléporter, après le retard parcouru, au pointoù il aurait dû s'arrêter initialement.
    Bref il me faut VRAIMENT modifier la fréquence d'update pour enregistrer + de coordonnées décimales franchis lors de la chute sans pour autant accélérer le jeu. Merci tout de même!
    EDIT: Je pense avoir une solution, je l'essaierai dans la soirée!
    EDIT 2: En fait mon problème peut s'assimiler à "marcher sur l'eau", il faudrait stopper toute chute verticale mais pouvoir sauter et se déplacer. Voilà si cette formulation simplifiée peut aider certains à résoudre mon problème, je suis tout ouïe!
    EDIT 3: Finalement résolu avec l'aide des AABB!


Log in to reply