Sont des langages de programmation fonctionnelle adapté pour le graphisme de programmation?
Juste très curieux à ce sujet, à partir de ma propre expérience , toute la programmation graphique semble en C ou C++ liés. Comme le Direct10X. N'langage de programmation fonctionnel fournir une sorte de bibliothèque graphique pour développer des jeux vidéo?
Vous devez vous connecter pour publier un commentaire.
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 jeu:
Vous devez être attention 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)
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 peut 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 ê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 impressionnant pour de 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 vidéo impressionnante vous donne aussi un avant-goût de ce qui est possible avec Clojure le développement de style.
En Clojure, au moins, vous pouvez utiliser le 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
(.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.
(update-game old-state event)
qui produit la nouvelle immuable état de jeu que partage la plupart des données avec l'ancien état.C'est une bonne série sur le sujet: (4 pièces) Purement Fonctionnelle Retrogames. Vous pouvez prendre cette approche en Clojure et l'utilisation sous-jacente jeu Java bibliothèques de manipuler les graphiques.
Probablement personne ne se soucie de cela maintenant cinq ans question, peut-être même pas l'original asker. Mais comme un vieux graphiques en temps-en-Lisp gars, je voulais intervenir. Le titre mentionne “graphique de programmation”, puis la question porte sur les bibliothèques pour le développement d'un jeu. Intéressant de noter que les graphiques de programmation comprend de nombreux sujets sans rapport avec la programmation de jeux. (Ainsi, par exemple, de faire de la visualisation des données en Clojure serait un exemple de “langages de programmation fonctionnelle adapté pour le graphisme de programmation”, mais pas en programmation de jeux.) Il y a aussi une distinction entre la fonction de base de langues (comme Lisp, où tout est une fonction, mais les effets secondaires sont autorisés) et les langues qui sont purement fonctionnelles avec seulement immuable types de données (comme Haskell ou Clojure).
Il y a certainement été basé sur Lisp systèmes graphiques écrit dans un “multi-paradigme” style", ce qui n'est pas purement fonctionnelle/immuables. Par exemple, j'ai travaillé sur la Symbolique dans le début des années 1980, lorsque nous avons réalisé l'une des premières “la création de contenu numérique” (comme Maya ou AutoCAD) systèmes entièrement en Lisp. Ma de 1978 MS thèse a été d'environ un basé sur Lisp domaine spécifique de la langue pour l'animation procédurale appelé ASA. Nous avons utilisé qu'à la triple-I (Information International Inc.). pour faire très tôt le travail de CGI pour les effets spéciaux dans les films, y compris de 1982, TRON. (Qui est décrit dans cet SIGGRAPH papier.) Enfin, le jeu du studio Naughty Dog a programmé la logique de jeu de plusieurs titres (Crash Bandicoot, Jak et Daxter série?) avec un Régime inspiré de la langue appelé Jeu Orienté Assemblée Lisp (OBJECTIF).
Parler plus moderne efforts, et plus strictement fonctionnelle/immuable langues: “LambdaCube 3D est Haskell-comme purement fonctionnelle spécifique au domaine de la langue pour la programmation de la GPU (graphics processing unit).”
Dans John Carmack la keynote à la Quakecon 2013, il a longuement parlé (environ 30 minutes) à propos de son intérêt et des expériences, à des fins purement fonctionnelle des langues pour le développement d'un jeu. Son point de vue semble qu'il y a des avantages évidents à l'aide de la programmation fonctionnelle, mais il y a des défis, et qu'il n'était pas allé assez loin dans cette voie pour avoir une opinion forte. Il parle de l'expérimentation avec les deux Haskell et Lisp. Cette rubrique est entre 1:17:00-1:49:00 dans ce vidéo.