18-03-2008, 12:13 PM
Je suis d'accord dans le principe, mais la création d'un village n'est pas si facile que ca question optimisation.
Ce que je conseille :
_ Tu créé une table pour la liste des cases disponibles, c'est à dire qu'en gros, à la naissance du serveur, toutes les cases y sont répertoriées.
Ensuite, pour l'optimisation, il faut qu'une seule case soit testée, sinon, en testant à chaque fois un rand et la disponibilité, si y'a beaucoup de joueurs / nombre de cases totales, tu peux tomber sur une infinité de tests.
Donc, pour tester la case, tu fais une simple requete sur ta table de cases vides, et pour les distances, c'est toi qui voit, mais pour genre une selection de 10x10 cases max, tu fais *genre* :
SELECT x , y FROM tbl_cases_vides WHERE x > -10 AND x < 10 AND y > -10 AND y < 10 ORDER BY rand()
Du premier coup tu tomberas donc sur une case vide ^^
Ensuite, tu crée dans ta table village ton village sur les coordonnées retournées, et tu supprime cette case de la liste des cases vides.
Voilà !
Ce que je conseille :
_ Tu créé une table pour la liste des cases disponibles, c'est à dire qu'en gros, à la naissance du serveur, toutes les cases y sont répertoriées.
Ensuite, pour l'optimisation, il faut qu'une seule case soit testée, sinon, en testant à chaque fois un rand et la disponibilité, si y'a beaucoup de joueurs / nombre de cases totales, tu peux tomber sur une infinité de tests.
Donc, pour tester la case, tu fais une simple requete sur ta table de cases vides, et pour les distances, c'est toi qui voit, mais pour genre une selection de 10x10 cases max, tu fais *genre* :
SELECT x , y FROM tbl_cases_vides WHERE x > -10 AND x < 10 AND y > -10 AND y < 10 ORDER BY rand()
Du premier coup tu tomberas donc sur une case vide ^^
Ensuite, tu crée dans ta table village ton village sur les coordonnées retournées, et tu supprime cette case de la liste des cases vides.
Voilà !
Placeholder