Voilà déjà quelques temps que je n'ai pas donné de nouvelles. Le projet est toujours en cours, mais je travaille sur des sujets très techniques, et ne sont pas très démonstratifs. Le sujet principal est le changement de moteur physique. Mais me direz vous qu'est ce qu'un moteur physique. Dans un jeu, le moteur physique gère la physique au sens propre du mot gravité, collision, mouvement, forces appliquées...

Vous créez un certain nombre d'objet (astéroids, station, vaisseau, etcetc), vous leur définissez une taille et une masse. Vous définissez,ensuite, quelques paramètres physiques telle que la gravité. Et ensuite, vous déclarez une poussée à l'arrière du vaisseau pour le faire avancer, et le vaisseau réagit en fonction de cette poussée (il avance à une certaine vitesse dépendant de la force de la poussée, et de sa propre masse). Si votre vaisseau rencontre un obstacle (asteroid par exemple), alors automatiquement, votre vaisseau subit une force de rotation et une force de mouvement correspondant au rebond. Quant à l'asteroid, en fonction de l'angle par lequel le vaisseau l'a touché, il peut également partir en rotation, et être "poussé" dans la direction du mouvement du vaisseau. Tout cela est soumis aux règles physiques standards, et tiennent compte d'un certain nombre de paramètre dont la gravité (bon ici dans l'espace, elle n'est pas prise en compte), et de la masse des objets. Si votre vaisseau rencontre un astéroid qui fait mille fois sa masse, globalement l'astéroid ne bougera pas, par contre votre vaisseau rebondira en sens inverse.

Jusqu'à présent, j'utilisais le moteur gratuit ODE, qui est un standard dans le monde du développement de jeu amateur. Je me suis rendu compte qu'il était très lourd, et gourmand en calcul, et qu'il était plus adapté à un monde scientifique, car il essayait d'atteindre un réalisme qui ne m'était pas utile. Du coup, si je dépassais les 30 objets à gérer dan une zone (astéroids, vaisseaux, etc), je descendais à 10 FPS, ce qui est vraiement peu.

J'ai découvert bullet qui est un moteur physique adapté au monde du jeu vidéo et qui a fait ses preuves dans de gros titres (cars2 le jeu, dragons le film, shrek le dernier film). Mes premiers tests m'ont laissés pantois, car avec un millier d'objets je restais aux alentours de 30 fps, ce qui est très acceptable au vu du nombre d'objets.

Du coup, mes dernières semaines ont été consacrées à migrer mon serveur vers bullet, et même si globalement, la simplicité de bullet m'a rendu bien des services, j'ai beaucoup de choses à revoir, et à ce jour l'intégration est finie.

Comme le moteur physique est au coeur de tout le jeu (déplacement, collision, tirs, ...), cela impacte beaucoup d'éléments, et j'ai quelques correctifs à apporter de ci de là, pour stabiliser cette intégration. J'ai du revoir également la première mouture d'intelligence artificielle que j'avais créé, et qui consistais à créer un ennemi qui patrouille dans un secteur. Une fois cette mouture terminée, je pourrai passer aux combats "intelligents".

A bientot pour de nouvelles aventures.