Au cours de la dernière année, j'ai développé un moteur de jeu commercial à Haskell. Pour nous, l'expérience a été extrêmement positive. Notre monde de jeu est complexe et Haskell a facilité la modélisation du processus de conversion d’un format d’éditeur à un format de moteur de jeu. Je détesterais penser à quoi ce code ressemblerait dans un langage impératif.
Des fuites d’espace ont parfois été signalées, et bien qu’elles aient causé quelques problèmes, dans l’ensemble, elles ont été modestes (par exemple, par rapport à des impasses dans des projets Java de taille similaire) et une fois résolus , ils sont restés fixes.
Nous utilisons un PRF semblable à Yampa, et il y a certes une courbe d'apprentissage associée, mais une fois que c'est terminé, l'expérience est très positive. Les bibliothèques ne nous ont pas posé de problème - tout ce dont nous avions besoin était disponible. Les retards de la collecte des ordures posaient un problème particulier, car ils concernaient une plate-forme intégrée. Nous avons utilisé du C ++ pour gérer l'animation. La performance a également été un problème avec cela étant une plate-forme intégrée (= processeur lent). Nous avons fait du C et nous étudions également les technologies Haskell émergentes telles que l'accélération. L'animateur C ++ était une décision de conception très tôt et les endroits où le code est trop lent ne sont que de très petites zones. À long terme, nous voulons traduire tous nos C en Haskell.
Haskell a rendu le travail difficile facile, et toutes les difficultés que je viens de mentionner ont été minimes par rapport à la grande quantité de code complexe que nous avons produit, propre, maintenable et pratiquement incassable. Le parallélisme sera très prochainement un problème dans le développement de jeux, et nous sommes extrêmement bien placés pour le gérer. Une partie de ce que j'ai dit peut ne pas s'appliquer à de petits projets, car nous sommes sur le long terme, donc les coûts de démarrage tels que les courbes d'apprentissage, le soutien des bibliothèques, etc., sont beaucoup moins problématiques.