Haskell 在游戏开发中使用函数式编程的好资源?

Haskell 在游戏开发中使用函数式编程的好资源?,haskell,functional-programming,erlang,lisp,Haskell,Functional Programming,Erlang,Lisp,我对函数式编程范式还很陌生,但到目前为止我喜欢它。因为我对游戏开发很感兴趣,所以我想用纯函数式编程风格编写一些游戏来尝试一下。我不介意这种语言——不管是Erlang、Haskell、Lisp还是Ruby(我发现它支持函数式编程特性) 很明显,学习函数式编程(事实上,任何东西)最好的建议就是学习函数式语言并在其中进行大量编程。但我要找的是一些关于在游戏和游戏引擎(2D或3D)中使用函数编程的资源 那么,您是否知道任何函数式编程文章/书籍/博客/关于在实际游戏中使用它的任何内容,或者使用函数式编程语

我对函数式编程范式还很陌生,但到目前为止我喜欢它。因为我对游戏开发很感兴趣,所以我想用纯函数式编程风格编写一些游戏来尝试一下。我不介意这种语言——不管是Erlang、Haskell、Lisp还是Ruby(我发现它支持函数式编程特性)

很明显,学习函数式编程(事实上,任何东西)最好的建议就是学习函数式语言并在其中进行大量编程。但我要找的是一些关于在游戏和游戏引擎(2D或3D)中使用函数编程的资源

那么,您是否知道任何函数式编程文章/书籍/博客/关于在实际游戏中使用它的任何内容,或者使用函数式编程语言设计简单的游戏引擎,以及在这个函数式环境中游戏和游戏引擎之间的所有交互


请不要建议“只要开始用函数式编程简单的东西,它就会慢慢地出现在你的面前”。正如我前面所说的,这是显而易见的,但我想问的是关于这个主题的一些资源,如果有的话。谢谢

是用于绘制线框形状的Erlang包。我想它是在游戏中使用的,但那不是我的拿手好戏…

我不确定这有多大帮助,你可能已经听说过,但这似乎是一个明显的开始:这里有一个关于Jak和Daxter的例子。

嗯,你可以做得比研究其中一些代码更糟

其中一些使用FRP(functional Responsive programming,函数式反应式编程),一些人正在将其作为一种纯粹的、高级的游戏和其他东西技术进行研究。但大多数是有效和纯函数代码的典型haskellish混合

有相关内容的博主包括

请注意第一个链接处的FunGEn-尽管没有积极维护它,但它是一个2D游戏引擎,具有工作示例

还有简洁的语言。

有点过时,但这是关于如何在XNA游戏开发框架中使用F#的一系列文章中的第一篇。你可能还会发现这个博客有一些有用的材料。

试试这个

我主要是一名Haskell程序员,因此我只能建议尝试使用Haskell库,如Gtk2hs。它主要用于2D应用程序和用户界面,但让您开始使用它很好:)HGL是一个更简单的库,但它有点缺陷和过时。如果您想尝试messier(但更酷!)的东西,那么可以使用Haskell的OpenGL库,该库可以找到。我从未尝试过使用Haskell和OpenGL,但如果你查看Simon Michael提交的答案,Hackage的游戏部分中有一些使用OpenGL的示例游戏


很抱歉没有链接所有库,但我是新用户,不允许有多个超链接。如果你在谷歌上搜索它们,它们会很容易出现。

如果你对游戏的网络化方面感兴趣,他已经写下了他编写在线游戏的经历。我认为他至少做了三种不同的实现(Lisp、Erlang和Haskell)。不幸的是,他的材料散布在互联网上。以下是您可能会发现有用的两点:

编辑:

以下是上述文档中已更改的一些后续指针和链接

编辑二:


Joel显然从那时起就出售了他的扑克代码,因此不再提供。

是一款由Mun Han Chang用Haskell编写的3D第一人称射击游戏。它是根据GPL授权的。Frag的设计和实现在Mun的本科论文《函数式编程和3D游戏》中进行了描述。

正如内森·桑德斯(Nathan Sanders)在上面所说的(我自己在“haskell Games gc”上的谷歌搜索),haskell在gc方面曾遇到过一些相当严重的问题。。。(6岁,我知道),也看到了。既然已经存在,我想他们一定已经在GHC的后续版本中修复了至少一些东西。

尽管目标是一个Lisp,但我认为它不是很实用。所有的代码示例看起来都是必需的,我记得在某个地方读到过关于它们是如何手动管理内存的,因为目标垃圾收集器太慢了。(然而,本文确实总结了Lisp的许多其他优势——宏、运行时评估等)另一个使用Lisp的游戏是“滥用”,现在它是公共领域。不过,再次强调,Lisp可能不是最具功能性的用法。无论如何,Lisp也不是一种纯粹的“函数式编程语言”。通常它是多范式的,并支持包含许多其他范式(逻辑、规则、关系、约束、代理等)。因此,任何真正的Lisp程序都会很高兴地混合命令式、函数式、面向对象和其他编程风格。事实上,我很久以前就读过这篇文章,以至于我忘记了它的全部内容:)wings3d中使用了github.com/dgud/esdl/tree/master库,但作者建议使用wxerlang访问opengl。Ocaml可能是一种有趣的函数式语言替代方案。最后一个链接似乎把解析器弄糊涂了。希望我没有因为没有引用web档案而把事情搞砸。也许你可以使用tinyurl或类似的东西:)谢谢,这正是我要找的。另请参阅,需要更新。