En plus, si je suis bien ton dernier messag, tu va surtout écrire dans cette base de donnée (les parcelles entourante) plus que tu ne va lire (tu ne va lire que là où va le joueur)
Non c'est l'inverse, beaucoup plus de lectures que d'écritures. Les parcelles entourantes ? Je ne vois pas ce que tu ne comprends pas.
A chaque mouvement je récupère la parcelle du joueur soit son point d'origine (xyz) ainsi que sa taille pour pouvoir calculer les limites.
Je calcule si le point est dans la parcelle par une formule simple:
(nx >= this.px) || (this.px >= nx + diml) || (nz >= this.pz) || (this.pz >= nz + dimw) || (ny >= this.py) || (this.py >= ny + dimh)
Avec nx/ny/nz le point d'origine et px/py/pz la position du joueur et dim la dimension.
Je ne lis pas de position, je lis un volume et je calcule si le joueur est dans le volume. La position m'est donnée grace à un event qui s'appelle PlayerMoveEvent et qui fait partie de l'API Bukkit.
Le rapport écriture/lecture c'est peut etre 1/50 000, voire moins.
J'ai aussi clairement dis que je ne connaissais pas d'autres solutions... J'ai jamais dis que je voulais éviter un locking des données, surtout si ça peut me faire gagner du temps.
Je me cite :
Si il y a une solution plus rapide pour lire des données que utiliser une BDD en RAM je suis plus que preneur, cela m'éviterait pas mal de questions et me ferait surement gagner du temps.
Bref, je veux bien reconnaitre que je ne suis pas clair mais là tu me fais presque dire l'inverse de ce que j'ai dis
Partager