Très curieux à ce sujet, de ma propre expérience, toute la programmation graphique semble liée à C ou C ++. Comme le Direct10X. Le langage de programmation fonctionnel fournit-il une sorte de bibliothèque graphique pour développer des jeux vidéo?
Réponses
Trop de publicités?Vous pouvez utiliser les langages fonctionnels à faire des graphiques/jeu de programmation comme dans toute autre langue.
C'est seulement un jeu simple, mais je l'ai écrit à toute épreuve: la Vapeur Légions en Clojure comme un exercice de programmation fonctionnelle pour le développement d'un jeu.
Voici quelques leçons que j'ai appris / observations générales sur l'utilisation de Clojure pour la programmation de jeux vidéo:
Vous devez être prudent au sujet de la performance que les jeux peuvent être très exigeantes et les langages fonctionnels faire imposer des frais généraux. Clojure est certainement assez "bon" pour la plupart des jeux, mais vous devez connaître les astuces pour garder votre code optimisé. Par exemple, les langages fonctionnels peuvent obtenir un peu GC-lourd de la production d'un lot d'objets temporaires. Vous avez besoin d'apprendre les astuces pour éviter cela (par exemple, à l'aide de réduire, de façon à éviter la création de nouveaux objets de séquence, ou de l'utilisation primitive artithmetic)
La mutabilité est utile dans les jeux. Par exemple, si vous faites n'importe quoi avec la physique ou une animation plus fluide vous avez souvent beaucoup d'objets de l'évolution constante des lieux. Vous pouvez simuler cette fonctionnelle/immuable structures de données, mais si vous vous souciez de la performance ce n'est pas une bonne idée. Par conséquent, il vaut la peine de trouver comment obtenir de données mutable dans votre langage fonctionnel, même si elle n'est pas idiomatique (par exemple, en Clojure vous voudrez probablement faire usage de Java les tableaux)
Immuable persistante des structures de données se révèlent être très utile dans les jeux ainsi. Dans toute épreuve, l'ensemble de l'état de jeu a été stocké dans un seul immuable structure de données. Cela a permis pour certains trucs cool comme efficacement instantanés de l'état de jeu / instantané en arrière / en cours d'exécution en arrière dans le temps.
Clojure est génial pour le jeu de scripts. La nature dynamique couplé avec compilation d'exécution et la capacité à définir arbitraire DSLs avec des macros est une énorme victoire. En fait, même si j'écrivais un jeu dans un langage de programmation orientée objet comme Java, je voudrais sérieusement envisager d'utiliser Clojure (ou un autre Lisp) pour l'écriture de scripts.
Clojure est génial pour le développement interactif. Souvent, je me suis lancer le jeu dans une fenêtre tout en piratant le code en cours d'exécution dans un REPL côtés. C'est amusant de modifier le jeu de données de structures et de voir immédiatement les effets! Cette impressionnante vidéo vous donne aussi un avant-goût de ce qui est possible avec Clojure de style de développement.
En Clojure, au moins, vous pouvez utiliser les bibliothèques Java pour les graphiques, par exemple, de Swing pour la 2D ou de LWJGL pour la 3D. Dans certains cas, des wrappers pour ces déjà existe, cependant je l'ai trouvé assez facile de les utiliser directement à partir de Clojure. Après tout, Java interop est aussi simple que d'
(.methodName object arg1 arg2)
En conclusion, je pense que les langages fonctionnels sont parfaitement bons choix pour le développement d'un jeu, à l'exception de très exigeantes en performances des jeux où vous êtes toujours susceptible d'être meilleur avec C/C++ afin d'avoir un contrôle plus direct sur le matériel.
C'est une bonne série sur le sujet: (4 parties) Retrogames purement fonctionnels . Vous pouvez adopter cette approche dans Clojure et utiliser les bibliothèques de jeux Java sous-jacentes pour manipuler les graphiques.