Некоторое время я присматривался к функциональным языкам программирования, но сейчас не решаюсь их освоить. Но я думаю, что пришло время, по крайней мере, начать смотреть в этом направлении, чтобы убедиться, что я готов ко всему.
Я видел разговоры о Haskell, F #, Scala и так далее. Но я не имею ни малейшего представления о различиях между языками и их сообществами, и меня это особо не волнует; кроме как в контексте разработки игр.
Итак, с точки зрения разработки игр, какой функциональный язык программирования имеет больше всего возможностей для программирования игр? Например, существуют ли функциональные библиотеки / движки / фреймворки для разработки игр или графические движки для функциональных языков? Есть ли язык, который лучше обрабатывает определенные структуры данных, которые обычно используются в разработке игр?
Итог: какой функциональный язык программирования лучше всего подходит для функционального программирования игр и почему?
Я верю / надеюсь, что этот вопрос объявит лучший язык, поэтому я не отметил его CW, несмотря на его субъективную тенденцию.
источник
Ответы:
F #, входящий в семейство Microsoft .net, имеет доступ к XNA, которая является фантастической базой для создания игр. Немного прибегая к помощи гугла, вы найдете несколько уроков, видео и статей. Великие документы по XNA также должны помочь.
В Haskell также было некоторое движение в играх, смотрите здесь . Вы, вероятно, будете использовать привязки openGL.
Поскольку Scala играет в среде Java, он интегрируется со всеми доступными механизмами / привязками Java, см. Этот пост SO .
Я думаю, что все сводится к предпочтениям, хотя я играл только с Haskell, я бы предположил, что у каждого функционального языка есть свои особенности. Возможно, стоит попробовать создать небольшую тестовую игру в каждой и посмотреть, какая из них кажется вам лучше.
Как я уже сказал, у меня минимальный опыт работы с Haskell, поэтому я не могу комментировать лучшее, но эти ресурсы должны помочь вам начать работу.
источник
Я бы сказал, Лисп.
Он использовался в играх в качестве языка сценариев, по крайней мере, в Naughty Dog (или я так думаю), и является очень зрелым языком.
Преимущество Lisp заключается в десериализации, которая является основной частью того, что мы называем управлением активами. Десериализация lisp тривиальна, код и данные едины. Это облегчает иметь формат файла для активов и поведения. Это не похоже на один файл в json / xml / yaml / bin и один файл F # для AI. Вы можете сохранить все как s-выражения, что значительно упростит конвейер активов.
источник
Получив некоторый практический опыт работы с ним, я бы проголосовал за Clojure - он уже написал одну маленькую игру и планирует сделать больше.
Причины:
Единственный случай, когда я бы не подумал о Clojure, был бы, если бы я писал современную графически интенсивную игру, в которой вам нужна передовая производительность (где я все еще думаю, что вам нужен C / C ++).
источник