Ma première tâche dans le développement du projet GallionFightGame (GFG) a été de m'interroger sur les techniques de simulation d'étendue d'eau. Cela posait déjà de nombreux défis techniques et il fallait faire des choix. D'abord quelques explications sur la manière dont je souhaite faire avancer ce projet.

      Pour éviter d'être trop vite découragé par l'ampleur de la tâche, j'ai choisi de travailler par itération. Je commence par réaliser de la manière la plus stupide possible une partie du jeu et ensuite j'itère pour améliorer le rendu, optimiser le code ... Knuth disait "premature optimization is the root of all evil" (source wikipedia), et j'essaie d'avoir cette phrase en tête à chaque fois que je programme quelque chose. Il faut d'abord obtenir quelque chose qui fonctionne, avant de vouloir optimiser. Il est en effet dangereux de vouloir dès le début implémenter une super optimisation/fonctionnalité (de la mort qui tue) sous peine de pondre un code incompréhensible, difficile à débugguer et impossible à mettre à jour. Il faut bien évidemment se poser les bonnes questions avant de coder quelques choses, avoir déjà en tête les optimisations que l'on voudrait faire et la manière de les implémenter, mais il faut d'abord se borner à le coder simplement et s'attaquer aux optimisations par la suite. Ce n'est pas un principe général (chacun sa méthode), mais c'est le mien.

      Revenons à notre simulation de mer. Plutôt que de tenter le photoréalisme que j'aurais été incapable d'atteindre, il me fallait obtenir une simulation assez proche de la réalité la mer tout en utilisant un rendu un peu stylisé pour éviter d'avoir à y passer 10 ans. La première itération consiste donc à utiliser une fonction sinus ainsi qu'un tableau de décalage aléatoire à deux dimensions. La mer est découpé en case carrée. Chaque point voit sa hauteur changer au cours du temps à l'aide de la fonction sinus et du décalage (aléatoire). J'utilise des shaders maisons pour l'éclairage.

 

 

 

la page d'où la citation de Knuth est tirée :

https://en.wikipedia.org/wiki/Program_optimization