Tu es sur la bonne voie (bien que le décalage sur Z, la hauteur, soit inutile. Tu ne vas certainement pas faire plusieurs couches de participants :) ).
Mais il te reste beaucoup de chose à faire (et pas forcément simple) :
- Le positionnement sur la grille de départ doit être calculé en fonction de l'angle que tu as trouvé précédemment (une rotation de cet angle, centrée sur le CP de départ)
- Il ne faut pas utiliser le décalage sur X et Y de la même façon, sinon tes joueurs se retrouveront sur une diagonale.
Il faut d'abord utiliser le décalage sur X (pour une première ligne de participants) puis lorsque cette première ligne est remplie, passer à la ligne suivante (décalage de Y).
Bon courage. Je te conseille vivement de faire des dessins pour essayer de te représenter la chose.
Par contre, il faudra certainement que tu gères les joueurs qui quitte la course avant le départ. Car avec ton système, un joueur qui fait /join puis /leave puis /join, etc... va "consommer" toutes les places disponibles.
Ce n'est pas forcément très facile à mettre en place.
Une des solutions consiste à empêcher les joueurs de faire /leave si la course n'a pas commencé, ceci t'éviteras d'avoir à coder ce que je viens de citer juste en dessus.
++
Syg