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

我对这个函数式编程范例还很陌生,但到目前为止,我还是喜欢它。 由于我正在进行游戏开发,所以我想用纯function的编程风格来编写一些游戏。 我不介意这种语言 – 无论是Erlang,Haskell,Lisp,还是Ruby(我发现它支持函数式编程特性)。

那么很显然,要学习函数式编程(实际上是什么),最好的build议就是学习函数式语言并编写大量程序。 但是我正在寻找的是在游戏和游戏引擎(2D或3D)中使用函数式编程的一些资源。

那么,你是否知道任何函数式编程文章/书籍/博客/关于在实际游戏中使用它,或者使用函数式编程语言devise简单的游戏引擎,以及游戏和游戏引擎在这个function环境中的所有互动?

请不要像“刚开始编写简单的东西在function上开始,然后逐渐地find你”。 正如我刚才所说,这是显而易见的,但我在这里问的是一些关于这个话题的资源,如果有的话。 谢谢!

那么,你可能比研究一些这些哈斯克尔游戏的代码更糟糕。

其中一些使用FRP(function反应式编程),有些人正在将其作为游戏和其他事物的纯粹的高级技术。 但是大多数是有效和纯粹function代码的典型混合。

有相关内容的博客包括James Hague 。

注意FunGEn在第一个链接 – 虽然没有积极维护它是一个2D游戏引擎与工作的例子。

还有Clean语言,它的游戏库和漂亮的截图 。

那么我主要是一个Haskell程序员,所以我只能build议尝试Haskell库,如Gtk2hs。 它主要是为2D应用程序和用户界面,但它很好让你开始:)一个更容易的图书馆是HGL,但它略有错误和过时。 如果你想尝试messier(但更酷!)的东西,然后去Haskell的OpenGL库可以在这里find。 我从来没有尝试过使用Haskell和OpenGL,但是如果你看看Simon Michael提交的答案,那么在Hackage的游戏部分有一些使用OpenGL的例子。

对不起,没有链接所有的库,但我是一个新的用户,我不允许超过一个超链接。 如果你谷歌他们,他们应该很容易上来。

如果你对networking游戏感兴趣, 乔尔·雷蒙特 ( Joel Reymont )写了关于在线扑克服务器编码的经验。 我认为他至less做了三个不同的实现(Lisp,Erlang,Haskell)。 不幸的是,他的材料分散在互联网上。 这里有两个你可能会觉得有用的指针:

  • 哈斯克尔与Erlang,重装上阵
  • 编写低痛苦,大规模可扩展的多人游戏服务器

编辑:

这里有一些后续的指针和上面的文档中的链接已经改变。

  • Haskell项目Postmortem(邮件列表线程)
  • 哈斯克尔与Erlang,重新加载关于Lambda-the-Ultimate的讨论

编辑II:

乔尔显然卖了他的扑克代码,因此,它不再可以作为开源 。

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

Frag是Mun Hon Cheong在Haskell编写的3D第一人称射击游戏。 它是根据GPL授权的。 Frag的devise和实现在Mun的本科生论文,Functional Programming和3D Games中有介绍。

Wings3D是用于绘制线框形状的Erlang包。 我认为它在游戏中使用,但这不是我的包…

试试这个铸造SPELs

那么,我不知道这有多大的帮助,你可能已经听说过,但似乎是一个明显的开始:这里是关于雅克和达克斯特的文章 。

就像Nathan Sanders在上面所说的那样(从我自己的“haskell games gc”中search),Haskell曾经有一段时间和GC有过一些非常严重的问题…… 这篇旧文章 (我知道6岁)也见这个问题 。 既然Frag在身边,我想他们必须在GHC的后续版本中至less修正一些东西。